首页 / 专利库 / 信号处理 / 联合编码 / 视频显现网络管理

视频显现网络管理

阅读:820发布:2022-12-26

专利汇可以提供视频显现网络管理专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种具有多个输出的视频显现网络的资源,该资源可以被配置。可以支持一个临时配置。输入配置可以与输出配置分开完成。网络资源之间的相关性可以被考虑为将所提供的选项限制为那些与一个临时配置共同作用的选项。客户可以利用一组由 服务器 经过配置解空间提供的功能。这些功能可以支持一个相互影响的配置方式。可以将考虑相关性的责任交给一个视频 驱动器 ,例如一个视频微端口。客户可以利用多种方法找出所要求的配置。这个要求的配置可以被作为NP-完全图形问题的一个解决方法。考虑到相关性可以获得多种配置目标(例如最佳配置)。,下面是视频显现网络管理专利的具体信息内容。

1、一个或多个具有用于实施编程接口的计算机可执行指令的计算机可读介 质,该接口提供对下述服务的访问
接收用于视频显现网络临时配置的指示;以及
枚举与该临时配置共同作用的配置选项。
2、如权利要求1所述的一个或多个计算机可读介质,其特征在于,该枚举 包括:
枚举与该临时配置共同作用的多个视频显现网络源。
3、如权利要求1所述的一个或多个计算机可读介质,其特征在于,该枚举 包括:
枚举与该临时配置共同作用的多个视频显现源模式。
4、如权利要求1所述的一个或多个计算机可读介质,其特征在于,该枚举 包括:
枚举与该临时配置共同作用的多个视频显现网络目标。
5、如权利要求1所述的一个或多个计算机可读介质,其特征在于,该枚举 包括:
枚举与该临时配置共同作用的多个视频显现目标模式。
6、如权利要求3所述的一个或多个计算机可读介质,其特征在于,该接口 进一步提供对下面服务的访问:
将所述的多个视频显现源模式中的一个固定到至少一个视频显现网络源 上。
7、如权利要求6所述的一个或多个计算机可读介质,其特征在于,该接口 进一步提供对下面服务的访问:
在固定所述的多个视频显现源模式中的一个之后,枚举与该临时配置共同 作用的多个视频显现目标模式。
8、如权利要求6所述的一个或多个计算机可读介质,其特征在于,该接口 进一步提供对下面服务的访问:
对所述多个视频显现源模式中的一个进行解除固定。
9、如权利要求8所述的一个或多个计算机可读介质,其特征在于,该接口 进一步提供对下面服务的访问:
在对所述多个视频显现源模式中的一个进行解除固定后,枚举与该临时配 置共同作用的多个视频显现源模式。
10、如权利要求5所述的一个或多个计算机可读介质,其特征在于,该接 口进一步提供对下面服务的访问:
将所述多个视频显现目标模式中的一个固定到至少一个视频显现网络目标 上。
11、如权利要求10所述的一个或多个计算机可读介质,其特征在于,该接 口进一步提供对下面服务的访问:
在对所述多个视频显现目标模式中的一个进行固定后,枚举与该临时配置 共同作用的多个视频显现目标模式。
12、如权利要求10所述的一个或多个计算机可读介质,其特征在于,该接 口进一步提供对下面服务的访问:
对所述多个视频显现目标模式中的一个进行解除固定。
13、如权利要求12所述的一个或多个计算机可读介质,其特征在于,该接 口进一步提供对下面服务的访问:
在对所述多个视频显现目标模式中的一个进行解除固定后,枚举与该临时 配置共同作用的多个视频显现目标模式。
14、如权利要求1所述的一个或多个计算机可读介质,其特征在于,该接 口进一步提供对下面服务的访问:
提交起作用的视频显现网络配置。
15、一个或多个具有用于访问编程接口的计算机可执行指令的计算机可读 介质,该接口提供对下面服务的访问:
接收用于视频显现网络的临时配置的指示;以及
枚举与该临时配置共同作用的配置选项。
16、如权利要求15所述的一个或多个计算机可读介质,其特征在于,该枚 举包括:
枚举与该临时配置共同作用的多个视频显现目标模式。
17、如权利要求16所述的一个或多个计算机可读介质,其特征在于,该接 口进一步提供对下面服务的访问:
将所述多个视频显现目标模式中的一个固定到至少一个视频显现网络目标 上。
18、一种得到包括多个视频目标的可配置视频显现网络的配置的方法,该 方法包括:
接收一系列用于该视频显现网络的部分配置,以便建立一个临时功能配置; 以及
提交该临时功能配置,其中所述提交在该视频显现网络中实施该临时功能 配置。
19、如权利要求18所述的方法,其特征在于,进一步包括:
在该提交之前,接收从该临时功能配置中去除至少一个部分配置的指示。
20、一个或多个具有用于执行权利要求18所述的方法的计算机可执行指令 的计算机可读介质。
21、一种配置包含多个资源和包含多个输出的视频显现网络的方法,该方 法包括:
接收该视频显现网络的部分配置的指示,其中该部分配置包括用于所述视 频显现网络的所述多个资源中的第一资源的配置的指示;
基于所述视频显现网络的所述多个资源之间的相关性,为该视频显现网络 的所述资源中的第二资源确定一个或多个配置选项,所述配置选项与该视频显 现网络的部分配置的指示共同作用;以及
为该第二资源指示该共同作用的配置选项。
22、如权利要求21所述的方法,其特征在于:
所述接收由视频驱动器执行;
所述确定由该视频驱动器执行;并且
所述指示由该视频驱动器执行。
23、如权利要求22所述的方法,其特征在于:
该视频驱动器包括视频微端口;
所述接收由该视频微端口执行;
所述确定由该视频微端口执行;并且
所述指示由该视频微端口执行。
24、如权利要求21所述的方法,其特征在于:
响应于对设备驱动器接口的枚举功能的编程调用来执行该指示。
25、如权利要求21所述的方法,其特征在于:
该指示为该视频显现网络的所述多个资源指示共同作用的配置选项。
26、如权利要求21所述的方法,其特征在于:
该第一资源位于该视频显现网络的第一视频路径中;并且
该第二资源位于该视频显现网络的第二视频路径中。
27、如权利要求21所述的方法,其特征在于:
所述视频显现网络的该部分配置为该视频显现网络的多个视频输入中的一 个指示配置。
28、如权利要求21所述的方法,其特征在于:
所述视频显现网络的该部分配置为该视频显现网络的多个视频输出中的一 个指示配置。
29、如权利要求21所述的方法,其特征在于:
该视频显现网络的该部分配置为该视频显现网络的多个数字-视频-输入-显 现-至-视频-输出-信号转换器中的一个指示配置。
30、如权利要求29所述的方法,其特征在于:
该数字-视频-输入-显现-至-视频-输出-信号转换器包括视频编解码器
31、如权利要求29所述的方法,其特征在于:
该数字-视频-输入-显现-至-视频-输出-信号转换器包括数模转换器。
32、如权利要求21所述的方法,其特征在于:
该第一资源包括该视频显现网络的输入;并且
该第二资源包括该视频显现网络的输出。
33、如权利要求21所述的方法,其特征在于:
该视频显现网络的该部分配置为该视频显现网络指示拓扑。
34、如权利要求21所述的方法,其特征在于:该视频显现网络的该部分配 置指示从视频适配器输出至视频设备的映射。
35、一个或多个具有用于执行权利要求21的方法的计算机可执行指令的计 算机可读介质。
36、一种配置包括视频源和视频目标的视频显现网络的方法,该方法包括:
为该视频显现网络选择拓扑;
为所述视频源枚举共同作用的选项;
从用于所述视频源的所述共同作用的选项中固定用于所述视频源的选项;
为所述视频目标枚举共同作用的选项;以及
从用于所述视频目标的所述共同作用的选项中固定用于所述视频目标的选 项。
37、如权利要求36所述的方法,其特征在于:
用于所述视频源的所述共同作用的选项相对于该拓扑是共同作用的;并且
用于所述视频目标的所述共同作用选项相对于该拓扑是共同作用的,并且 相对于用于所述视频源的被固定的选项是共同作用的。
38、如权利要求36所述的方法,其特征在于,固定用于所述视频源的选项 包括:
固定用于第一视频源的选项,其中该固定使得用于第二视频源的一配置选 项无效;
确定用于该第二视频源的该配置选项已无效;以及
响应于确定用于该第二视频源的该配置选项已无效,对用于该第一视频源 的选项解除固定。
39、如权利要求36所述的方法,其特征在于,进一步包括:
响应于确定所希望的选项不是用于所述视频源的共同作用的选项,选出一 个不同的拓扑。
40、如权利要求36所述的方法,其特征在于,进一步包括:
响应于确定所希望的选项不是用于所述视频目标的共同作用的选项,选出 一个不同的拓扑。
41、如权利要求36所述的方法,其特征在于,进一步包括:
响应于确定所希望的选项不是用于所述视频目标的共同作用的选项,为至 少一个所述视频源选出一个不同的选项。
42、一个或多个具有用于执行权利要求36所述方法的计算机可执行指令的 计算机可读介质。
43、一个或多个具有在其上编码的计算机可执行指令的计算机可读介质, 其中所述指令用于实现视频驱动器,该视频驱动器可用来配置包括多个具有多 个输出的资源的视频显现网络,该视频驱动器包括:
可用来接收该视频显现网络的部分配置的指示的逻辑,其中该部分配置包 括用于该视频显现网络的所述多个资源中的第一资源的配置的指示;
可用来基于该视频显现网络的所述多个资源之间的相关性来为该视频显现 网络的所述多个资源中的第二资源确定一个或多个配置选项的逻辑,其中这些 配置选项与该视频显现网络的该部分配置的指示共同作用;以及
可用来为该第二资源指示该共同作用的配置选项的逻辑。
44、一个或多个具有用于执行为视频显现网络确定拓扑的方法的计算机可 执行指令的计算机可读介质,该方法包括:
从初始拓扑开始;以及
基于根据监视器所支持的视频模式规定的目标,对该初始拓扑进行修改以 更好地满足该目标。
45、如权利要求44所述的一个或多个计算机可读介质,其特征在于,所述 修改包括产生更好地满足该目标的临时功能配置。
46、如权利要求44所述的一个或多个计算机可读介质,其特征在于,所述 修改解决该视频显现网络资源之间的相关性。
47、如权利要求44所述的一个或多个计算机可读介质,其特征在于,假定 该视频显现目标上的视频模式组必须支持连接到它们上的视频显示设备上的优 选模式,该目标包括在该视频显现网络中通过可利用的视频输出编解码器将视 频显现目标路由至视频显现源的最好方法,以便使视频显现源上的支持的图形 视频显现源模式组最大化。
48、如权利要求44所述的一个或多个计算机可读介质,其特征在于,假定 该视频显现目标上的视频模式组必须支持以规定的优先化排序的方式连接到它 们的视频显示设备上的优选模式,该目标包括在该视频显现网络中通过可利用 的视频输出编解码器将视频显现目标路由至视频显现源的最好方法,以便使视 频显现源上的支持的图形视频显现源模式组最大化。
49、如权利要求44所述的一个或多个计算机可读介质,其特征在于,假定 该视频显现目标上的视频模式组必须支持由连接到它们上的视频显示设备支持 的至少一个视频模式,该目标包括在该视频显现网络中通过可利用的视频输出 编解码器将视频显现目标路由至视频显现源的最好方法,以便使视频显现源上 的支持的图形视频显现源模式组最大化。
50、如权利要求44所述的一个或多个计算机可读介质,其特征在于,修改 该初始拓扑包括枚举多个视频输出可利用的视频模式。
51、如权利要求50所述的一个或多个计算机可读介质,其特征在于,修改 该初始拓扑进一步包括将所述多个视频模式中的至少一个固定到所述多个视频 输出中的至少一个上。
52、如权利要求51所述的一个或多个计算机可读介质,其特征在于,修改 该初始拓扑进一步包括枚举多个再现目标可利用的再现模式。
53、如权利要求52所述的一个或多个计算机可读介质,其特征在于,修改 该初始拓扑进一步包括将所述多个再现模式中的至少一个固定到所述多个再现 目标中的一个上。
54、如权利要求53所述的一个或多个计算机可读介质,其特征在于,修改 该初始拓扑进一步包括将固定到所述多个再现目标中的一个上的所述多个再现 模式中的至少一个进行解除固定。
55、如权利要求54所述的一个或多个计算机可读介质,其特征在于,修改 该初始拓扑进一步包括将所述多个再现模式中的另一个固定到所述多个再现目 标中的所述一个上。
56、一种确定满足所要求的视频配置选项的优先化的列表的视频配置的方 法,该方法包括:
基于该优先化的列表,提交用于至少第一资源的部分视频配置;
接收与该部分视频配置共同作用的配置选项列表;
确定该优先化的列表中的所要求的选项是否存在于与该部分视频配置共同 作用的配置选项列表中;以及
响应于确定所要求的选项不存在,为该第一资源重新提交经修改后的部分 配置。
57、如权利要求56所述的方法,其特征在于,该视频配置指示视频显现网 络的配置。
58、如权利要求57所述的方法,其特征在于,该列表指示出用于该视频显 现网络的所要求的配置选项。
59、一个或多个具有用于执行权利要求56所述的方法的计算机可执行指令 的计算机可读介质。
60、在一个或多个计算机可读介质中,一种视频再现设备驱动器包括:
用于获得第一视频显现网络配置临时配置的装置,其中该临时配置具有多 个视频输出、多个再现目标以及至少一个用以再现目标联合的视频输出;以及
用第二视频显现网络配置临时配置替换该第一视频显现网络配置临时配置 的装置。
61、如权利要求60所述的视频再现装置驱动器,其特征在于,进一步包括 用于布置该第一视频显现网络配置临时配置的装置。
62、如权利要求60所述的视频再现装置驱动器,其特征在于,用来替换该 第一视频显现网络配置临时配置的装置包括用来在多个被枚举的视频输出的每 一个上设定视频模式约束的装置。
63、如权利要求60所述的视频再现装置驱动器,其特征在于,用来替换该 第一视频显现网络配置临时配置的装置包括用来产生该第二视频显现网络配置 临时配置的装置。
64、一种方法,包括:
向视频驱动器查询视频输出配置,该驱动器支持该视频输出配置中的至少 一个视频输出上的多个视频模式;
临时地配置该视频输出配置中至少一个视频输出上的所述多个视频模式中 的一个;以及
临时地配置该视频输出配置中至少一个再现目标上的多个再现模式中的一 个。
65、如权利要求64所述的方法,其特征在于,临时地配置所述多个视频模 式中的一个包括枚举所述的至少一个视频输出上的多个可利用的视频模式。
66、如权利要求65所述的方法,其特征在于,临时地配置所述多个视频模 式中的一个进一步包括选择第一视频模式以及选择第二视频模式,以便该第一 视频模式在选择该第二视频模式之前和之后有效。
67、如权利要求64所述的方法,其特征在于,临时地配置所述多个再现模 式中的一个包括在所述至少一个再现目标上枚举多个可利用的再现模式。
68、如权利要求67所述的方法,其特征在于,临时配置所述多个再现模式 中的一个进一步包括选择第一再现模式以及选择第二再现模式,以便该第一再 现模式在选择该第二再现模式之前和之后有效。
69、如权利要求64所述的方法,其特征在于,进一步包括提出该视频输出 配置。
70、一个或多个具有用来执行权利要求64所述的方法的计算机可执行指令 的计算机可读介质。
71、一种配置包括多个视频输出的可配置视频显现网络的方法,该方法包 括:
接收该视频显现网络的视频输入的配置的指示;
与接收该视频输入的配置的指示相分离地接收所述多个视频输出中的一个 视频输出的配置的指示;以及
根据该视频输出的配置的指示以及该视频输入的配置的指示配置该视频显 现网络。
72、如权利要求71所述的方法,其特征在于,进一步包括:
与接收该视频输入的该配置的该指示相分离地、以及与接收该视频输出的 该配置的该指示相分离地接收该视频显现网络的视频-输入-至-输出-转换器的配 置的指示。
73、如权利要求71所述的方法,其特征在于:
在第一设备驱动器接口调用中接收该视频输出的该配置的该指示;以及
在第二设备驱动器接口调用中接收该视频输入的该配置的该指示。
74、如权利要求71所述的方法,其特征在于:
在对设备驱动器的第一调用中接收该视频输出的该配置的该指示;以及
在对该设备驱动器的第二调用中接收该视频输入的该配置的该指示。
75、如权利要求71所述的方法,其特征在于:
该视频输出的该配置的该指示是由操作系统发送的;以及
该视频输入的该配置的该指示是由该操作系统发送的。
76、如权利要求71所述的方法,其特征在于,进一步包括:
响应于接收该视频显现网络的该视频输入的该配置的该指示,为该视频显 现网络指示一组附加的可能配置选项,其中所述附加的可能配置选项被限制到 那些与该视频显现网络的该视频输入的该配置的该指示共同作用的配置选项。
77、如权利要求76所述的方法,其特征在于:
一设备驱动器确定哪些选项与该视频显现网络的该视频输入的该配置的该 指示共同作用。
78、如权利要求76所述的方法,其特征在于:
该视频显现网络的至少一个配置选项不与该视频显现网络的该视频输入的 该配置的该指示共同作用。
79、一个或多个具有用于执行权利要求71所述的方法的计算机可执行指令 的计算机可读介质。
80、一种管理包括多个视频路径的可配置视频显现网络的配置的方法,,该 方法包括:
发送部分视频显现网络配置的指示,其中该部分视频显现网络配置至少指 示用于在该视频显现网络的第一视频路径中的资源的配置;以及
响应于发送该部分视频显现网络配置的该指示,接收用于该视频显现网络 的第二视频路径中的资源的一组可能配置,其中,根据该部分视频显现网络的 该指示将该资源的该配置选项限制在当被选择时不会使该部分视频显现网络配 置无效的选项上;以及
发送至少一个可能配置选项的指示。
81、如权利要求80所述的方法,其特征在于,进一步包括提交至少一个可 能配置选项。
82、如权利要求80所述的方法,其特征在于,进一步包括改变所述至少一 个可能配置选项的指示。
83、一个或多个具有用于实现权利要求80所述的方法的计算机可执行指令 的计算机可读介质。

说明书全文

技术领域

本技术领域涉及视频显示适配器(例如计算机显示卡)的配置。

背景技术

使用多个监视器的计算机系统正在普及。例如,现在对于一个计算机来说, 驱动一个LCD显示控制板和一个投影机装置是很普通的。此外,现在计算机使 用者常规地使用他们的计算机观看视频图像(例如DVD)。在这种情况下,该 计算机可能驱动一个传统的监视器和一个电视机。
为适应需要,现在视频适配器硬件制造者使视频适配器上包括多个输出。 这样,一个使用者可以更加容易地使用一个计算机以便驱动希望的装置,而不 必切换用于单独输出的电缆以及重新调整输出。
虽然这样的多监视器视频适配器具有多种功能,但是可利用的配置通常有 限。因此,需要改进与配置多监视器计算机系统相关的功能。
发明内容
由于可能的配置的绝对数量以及在资源之中的配置相关性,配置一个具有 多个输出的视频显现网络是有挑战性的。
在此描述的多种技术可以用于一个具有多个输出的视频显现网络的配置资 源。例如,临时的配置可被支持。输入的配置可与输出的配置分开实现。网络 资源之间的相关性可被认为将所提供的选项限制到那些与临时配置共同起作用 的选项。一个客户可以使用一个服务所提供的一组功能以便横越配置解决方案 空间。横越可能的配置解决方案可以包括反馈。例如,当一个选择的配置选项 使另一个希望的配置选项无效时,可以使用反馈。临时的配置功能可以支持相 互影响配置方法,并且资源可以被单独地配置。基于网络资源之间的相关性, 一个枚举功能可以仅提供那些与临时配置共同起作用的选项。枚举的选项的有 效性在固定之后可被保证。
该功能可被组合到包括枚举配置(例如那些与临时配置共同起作用的配置) 的调用和固定资源的接口中。可以提供其它的调用以便建立一个配置和提交该 配置。该功能可以支持一个相互影响配置方法。
根据相关性可以得到最符合配置目的的拓扑。例如,可以找到一种通过可 利用的编解码器布置目标到源以便最大程度上支持源模式组的最好方式,假设 目标必须支持与它们连接的显示装置上的较佳模式。其它的目的可被支持。优 先化排序也可被支持。在一个较符合该目的的拓扑的实行期间可以使用枚举和 固定功能。
临时配置可以借助于配置不同资源(例如一个用于一个视频输出的调用以 及另一个用于一个视频输入的调用)的分离的装置驱动器接口调用支持增加的 配置。在调用之间,枚举可以表示用于保持未固定的(例如还没有临时地配置 的)资源共同起作用的资源。
考虑相关性的责任可被委托给(例如由其实现)一个视频驱动器,诸如一 个视频小端口。一个客户可以使用多种方法以便得到一个希望的配置。该希望 的配置可被作为一个NP-完全图表问题的解决方法对待。
从下列参照附图进行的公开的实施例的详细描述,上述的和其它的特征和 优势将变得更加明显。
附图简述
图1是一个示范性的可配置的视频显现网络的方框图
图2是另一示范性的可配置的视频显现网络的方框图。
图3是一个视频显现网络配置的组合的方框图。
图4是用于配置诸如在图1中示出的可配置的视频显现网络的方法的流程 图。
图5是诸如在图1中示出的视频显现网络的示范性的临时配置的图表。
图6是实现诸如在图1中示出的视频显现网络的配置的示范性的相互影响 方法的方框图。
图7是借助于相互影响方法实现配置的示范性方法的流程图
图8A是在诸如图1中示出的视频显现网络的临时配置期间用于反馈的示 范性的源的方框图。
图8B是与图8A相似的用于反馈但是有多个资源的反馈的示范性的源的方 框图。
图9A、9B和9C是在固定期间用于多个资源的示范性的共同起作用的选项 的方框图。
图10A、10B和10C是在固定期间用于多个资源的另一示范性的共同起作 用的选项的方框图。
图11是用于获得诸如在图1中示出的视频显现网络的配置的一个示范性的 具有反馈的相互影响方法的方框图。
图12是用于从服务器观点借助于具有反馈的相互影响方法实现配置的一 个示范性方法的流程图。
图13是用于从客户观点借助于具有反馈的相互影响方法实现配置的一个 示范性方法的流程图。
图14是其中可以实现临时配置的示范性结构的方框图。
图15是配置一个视频显现网络的示范性方法的流程图。
图16是通过系统地横越解空间从而会聚在希望的配置上来得到一个希望 的配置的示范性方法的流程图。
图17A-B是通过系统地横越解空间从而会聚在希望的配置上来得到一个希 望的配置的第一示范性详细方法的流程图。
图18A-C是通过系统地横越解空间从而会聚在希望的配置上来得到一个希 望的配置的第二示范性详细方法的流程图。
图19是确定视频显现网络的拓扑的示范性方法的流程图。
图20是在客户和服务器之间调用以得出用于视频显现网络的配置的方框 图。
图21是将技术的实施整合到具有多个视频显示装置的计算机系统中的方 框图。
图22是优先考虑确定希望的视频配置的客户-服务器系统的方框图。
图23是在诸如图22的客户-服务器中确定希望的视频配置的示范性方法的 流程图。
图24是通过系统地横越解空间的来得到希望的配置的示范性方法的流程 图,其中在该方法的执行中可以改变该拓扑。
图25是示范性的多监视器/多视图系统的方框图。
图26是描述组成用于实现所公开的技术的一个示范性系统的通用计算装 置的示意图。

具体实施方式

实施例1-示范性的视频显现网络
图1示出可配置的视频显现网络100。在本文中在任一实施例中描述的技 术可以用于配置该视频显现网络100。
以在此描述的技术的方式使用的视频显现网络100可以具有一个或多个输 入110A-110N(例如总共∑个输入,σ)、两个或多个输出120A-120N(例如总 共T个输出,τ)以及一个或多个数字-视频-输入-表示-成-视频-输出-信号转换 器130A-130N(例如总共K个转换器,κ)。
输入110A-110N有时称为“源”或“表面”。输出120A-120N有时称为“目 标”。数字-视频-输入-表示-成-视频-输出-信号转换器有时称为“转换器”。
除输入、转换器和输出之外,该视频显现网络可以包括其它的资源140(例 如视频存储器、带宽、存储容量等等)。其它的资源140可以被输入、转换器和 输出使用以便获得视频显现功能。
视频显现网络100可以硬件形式诸如一个视频显示适配器(例如显示卡) 实现。有时,一些资源可以位于该适配器外部。
一个示范性的计算机系统可以包括一个或多个数字形式的视频视图(例如 通过该计算机系统的应用被写入的),通过输入110A-110N使用这些视频视图。 来自多个输出120A-120N的得到的信号可以用于驱动多个视频显示装置。
实施例2-示范性的可替代的视频显现网络
图2示出另一可配置的视频显现网络200。在本文的任一实施例中描述的 技术都可以用于配置该视频显现网络200。
在该实施例中,多个输入可被用于一个单独的数字-视频-输入-表示-成-视频 -输出-信号转换器(例如输入210B和210N都用作转换器230N的输入)。这样 的配置在通过使用具有两个输入的视频输出编解码器在另一个视频信号上部重 叠一个视频信号中是有用的,其中该第一输入是主要内容并且该第二输入是重 叠内容。在这样的情况下,重叠的位置和尺寸可被规定为用于表示重叠内容的 视频显现网络源的视频显现源模式的一部分。
视频显现网络可以采用许多其它的形式,具有任意数量的输入、转换器以 及多个输出。
实施例3-示范性的视频显现网络资源
在本文中的任一实施例中,一个资源可以包括视频显现网络输入(例如源 或表面)、视频显现网络输出(例如目标)、转换器、视频存储器、带宽、存储 容量等等。
一个视频显现网络的拓扑有时也称为一个资源。例如,配置一个资源可以 包括仅仅选择一个拓扑,而不考虑选择用于包括在该拓扑中的单个资源的配置 选项。
实施例4-在一个视频显现网络中的示范性的视频路径
一个视频显现网络100可以具有多个视频路径。例如,如图1中所示,一 个路径可以从输入110A,经过转换器130A,到达输出120A。另一路径可以从 输入110A经过转换器130A到达输出120B,等等。
视频显现网络100的拓扑可以被配置以便根据该配置存在不同的路径。例 如,代替发送转换器130N的输出到视频输出120N,通过改变配置设置可以布 置到不同的视频输出(例如120B)。
实施例5-示范性的视频显现网络输入
在此描述的任一实施例中,视频输入(或“源”)可以采取各种形式,诸如 那些提供数字表面的输入。实际上,输入可以配置成使用各种源模式。这样的 模式可以包括参数,诸如宽度、高度、单元格式、光栅化的图像滤波技术、主 表面链接长度等等,或者一些它们的组合。
实施例6-示范性的视频显现网络输出
在此描述的任一实施例中,视频输出(或“目标”)可以采取各种形式,诸 如那些提供输出信号的输出。一个描述符可以与输出相联系。该描述符可以表 示一个格式(例如DVI、HDMI、HD-15、BNC、S-视频、RF、RCA等等)和 HPD感知。输出也可以与视频编码类型相联系。此外,一个输出可以配置成与 另一输出同步。
实际上,输出可以配置成使用各种目标模式。这样的模式可以包括参数, 诸如有源区域(例如宽度和高度)、总区域(例如宽度和高度)、有源区域位移、 像素编码格式、垂直回扫频率平回扫频率、像素时钟频率、内容排序、彩 色原色、白点参照、彩色空间转换矩阵等等,或者它们的一些组合。
实施例7-示范性的转换器
在本文的任一实施例中,一个数字-视频-输入-表示-成-视频-输出-信号转换 器可以采取一个视频编解码器、一个数字-到-模拟转换器等等的形式。一些转换 器是可分享的。例如,在一个复制(例如镜象)模式中,一个编解码器可以发 送信号到两个输出。
实施例8-示范性的资源的相关性
虽然理论上任何数量的视频显现网络100的配置都是可能的,但是只有有 限数量的理论的配置是起作用的配置。实际上,视频显现网络100的资源是以 配置相关性为条件的。
例如,配置视频输入110A成为一个特定的类型可以消耗大量视频存储器。 在这种情况下,没有足够的剩余的存储器用于使另一视频输入(例如110N)成 为同样的类型。例如,它只能配置成消耗较少存储器的类型。
存在许多种其他的相关性。例如,转换器可以只接收特定的视频输入类型 或者只产生特定的视频输出类型。因此,一个特定输入与一个特定转换器结合 可能不起作用,诸如此类。
因此,实际上,实现希望的配置的障碍在于它可能是不起作用的。此外, 不容易从视频显现网络的无数的理论上可能的视频显现网络组合当中确定哪个 组合是起作用的,其中视频显现网络具有多个视频输入、多个转换器以及多个 视频输出(其可以各种方式互连)。
图3是用于一个视频显现网络的可配置的资源的组合的方框图。在该实施 例中,该理论上可能的配置300可通过将一个或多个配置的第一资源302(例如 一个视频显现网络输入)与一个或多个配置的第二资源304(例如一个视频显现 网络转换器)相连接,其中该第二资源304与一个或多个配置的第三资源306 (例如一个视频显现网络输出)相连接。该得到的理论上可能的配置310的组 作为可能配置的大量的集合示出,依赖于其中资源的配置,这些可能配置中的 一些是起作用的,并且另一些是不起作用的。
在这样的大量的解决方法空间中得到用于最佳配置的解决方法是一个三分 裂的图表匹配问题,其是一个NP-完全问题。因此,当用于资源的可能的配置 的数量超过一个合理的数量时,使用穷举法可能是有问题的。
实施例9-示范性的配置
在此描述的任一实施例中,资源的配置可以采取多种形式,包括选择用于 一组视频显现网络的资源的拓扑或者选择用于网络(例如无论网络是否互相连 接)中一个或多个资源的配置选项(例如模式)。
实施例10-示范性的配置方法
图4示出可用于在此描述的任何视频显现网络以便获得配置的示范性的配 置方法400。该方法和任何在此描述的其它方法可以通过在一个或多个计算机可 读介质上的计算机可执行指令实现。
在410,接收视频显现网络的第一资源的配置的指示。例如,可以接收用 于视频显现网络的一个特定视频输入的配置。
在420,与该第一资源的配置的指示分离地接收该视频显现网络的第二资 源的配置的指示。例如,可以接收用于视频显现网络的多个输出的一个特定视 频输出的配置。
接着,在430,根据配置的指示配置该视频显现网络。
实际上,用于视频显现网络的任何资源(例如,用于两个不同的输入、两 个不同的输出、两个不同的转换器、一个转换器和一个输出等等)的另外的配 置的指示可以单独地接收。
单独地接收的指示可以包括通过使用两个不同的调用所接收的那些指示, 诸如到编程接口的那些调用(例如装置驱动器接口调用)。例如,可以使用两个 不同的装置驱动器的调用。或者,在同一调用中可以使用两个不同的参数。或 者,可以使用单独的值表示资源的一个或多个数据结构。这样的调用可以来自 一个客户,诸如一个操作系统
用这样一种方法,视频显现网络的资源可以被独立配置。这样的配置还可 以表示用于视频显现网络的拓扑(例如资源是怎样互相连接的)。
实施例11-示范性的临时的配置
使用一个临时配置方法可以促进各种功能,包括在无数可能的功能配置中 得到一个希望的配置。图5示出了表示诸如在图1中示出的视频显现网络的资 源的临时配置的图表500。
在该实施例中,资源σ1已经被临时配置了(例如,用于视频显现网络的资 源的配置参数被存储,但是该配置不需要是完全起作用的)。这样的一个临时配 置可以是以部分配置(例如来自视频显现网络资源的一个资源的配置或者该视 频显现网络的拓扑的指示)的接收为基础的。对于一个临时配置不需要接收所 有资源的配置。因为没有全组配置参数的配置通常仍然不起作用,所以一个临 时配置有时称为“半-功能的”。提供用于一个资源的部分配置有时称为“固定” 该资源。如果需要,该部分配置可被移除(或忽略)。移除该部分配置有时称为 “未固定”。 
实施例12-示范性的相互影响配置
获得一个视频显现网络的配置的相互影响方法可以是以所描述的临时配置 为基础的。图6示出用于借助于一个相互影响方法获得视频显现网络630(例如 在图1中示出的视频显现网络)的配置的示范性的设置600。
在该实施例设置600中,一个客户610可以发送用于视频显现网络的部分 配置信息到服务器620。依据接收到一个提交,然后服务器620可以根据部分配 置的指示配置视频显现网络630。
图7示出用于借助于相互影响方法执行配置的示范性的方法700。在710, 接收到一系列用于视频显现网络的部分配置(例如通过一个服务器从一个客户 接收)。该部分配置可以用于建立一个临时起作用的配置。
在720,该临时起作用的配置被提交。该提交可以在视频显现网络(例如 网络630)中实现临时起作用的配置。
一个临时起作用的配置在没有被实现的情况下可以被存储。例如,该配置 可以在没有配置视频显现网络的资源的情况下被存储视频显现(例如直到提交 的配置指示被处理)。
实施例13-示范性的共同起作用的配置选项的确定
由于视频显现网络的资源之间的相关性,考虑到已经装配的一个临时起作 用的配置,一些理论上可能的配置选项也许是不起作用的。例如,假定资源σ1已 经被临时配置了(例如,如图5中所示),对于视频显现网络的另一资源(例如 σ∑)可利用的配置选项可能被限制。
图8A示出考虑到另一资源σ1已经被临时配置时用于一个资源σ∑的示范性 的配置选项组850,从该选项中只有一个子组860配置选项是可利用的(例如将 产生一个起作用的配置)。在这样的设置中,该可利用的配置选项有时描述为与 另一个配置选项(例如该临时起作用的配置的选项)“共同起作用的”或者“未 使无效”临时配置。
用于一个资源的共同起作用的配置选项组860在一个处理的临时配置期间 有时称为“枚举”可被作为反馈提供。然后这样的反馈可以用于作出关于进一 步的配置的决定(例如用于进一步的建立临时起作用的配置或者用于反馈到一 个较早的临时起作用的配置)。
有时,可能希望从该临时起作用的配置移除一部分配置。例如,可能发现 该临时起作用的配置不允许一个至今未配置的资源以希望的方式配置。因此, 在此描述的任一配置方法可以包括接收一个指示以便从该临时起作用的配置移 除一部分配置并且响应于接收指示来移除该部分配置(或者,仅仅一个新的部 分配置来覆盖旧的部分配置)。因此,一个方法可以反馈(例如未固定一个资源) 到一个较早的临时起作用的配置(例如在提交该临时起作用的配置之前)。
实施例14-用于多个资源的共同起作用的配置选项的示范性的确定
实际上,可能希望立刻确定用于多个资源的共同起作用的配置选项。例如, 在一个给定的拓扑作为一个部分配置的一部分被选择后,可能希望枚举用于视 频显现网络资源的配置选项,该配置选项是与所选的拓扑共同起作用的。
图8B示出其中示出用于各个资源(例如σ1、σ2和σ3)的共同起作用的配 置选项880A、880B和880C的设置,其中示出同时用于超过一个资源的配置选 项。该示出的共同起作用的配置选项相对于所选择的拓扑是共同起作用的。该 选项相对于彼此可能不是共同起作用的。例如,为第一资源选择共同起作用的 选项中的一个可能使另一资源的另一个共同起作用的选项无效(例如,与另一 资源的另一共同起作用的选项不是共同起作用的)。
在该实施例中,考虑到所选择的拓扑,至少一些原始选项(例如870A、870B 和870C)不再是可利用的(例如不是共同起作用的)。当为其它资源(例如目 标)枚举选项时,一个类似的设置是可能的。
这样的选项可以通过软件(例如一个视频驱动器)枚举。在此描述的任一 实施例中,如果为一个资源选择了任一枚举的选项,则可能希望保证这样的选 择与用于任何其它资源的至少一个(例如不会使所有的无效)选项是共同起作 用的。
实施例15-示范性的在固定期间共同起所用的选项的无效
实际上,在已经枚举了用于多个资源的与一个拓扑共同起作用的配置选项 (例如,对于多个资源)之后,这样的配置选项可被包括在一个部分、临时配 置中。然而,固定(例如临时选择)用于第一资源的一个配置选项可能使用于 另一资源的另一选项无效(例如,与另一选项不是共同起作用的)。
图9A-C示出选择用于一个资源的配置选项使用于另一资源的配置选项无 效的例子。一个拓扑可被选择。图9A示出在选择了一个拓扑后枚举的共同起作 用的选项920A、920B和920C(例如分别是理论上可能的选项910A、910B和 910C的子组)。接着,图9B示出对于第一资源已经选择(例如固定)了一个特 定选项921。因此,用于另一个资源的一些配置选项可能不再是可利用的(例如 它们是无效的)。在该实施例中,一个选项不再出现在920B’中。有时,其它 选项是无效的。或者,也许没有选项是无效的。
图9C示出对于另一个资源已经选择了(例如固定的)一个特定选项922。 因此,用于剩余的资源的一些配置选项可能不再是可利用的。在该实施例中, 一个选项不再出现在920C”中。有时,用于第一资源的一些选项也可能是无 效的(例如,产生一组920A’,未示出)。然而,实际上,在一个资源被固定后 (例如对于该资源已经选择了一个配置选项),该固定的配置选项不会由于选择 另一个枚举的配置选项而无效。
由于在图9A-9C中示出的现象,当对于多个资源枚举时,在固定一个资源 后有必要检查无效的选项。这可以通过重新枚举来执行。
实施例16-在另一固定情况期间示范性的共同起作用的选项的无效
图10A-C示出其中选择用于一个资源的的配置选项使用于另一资源的配置 选项无效的另一例子。一个拓扑可被选择。图10A示出在选择了一个拓扑后枚 举的共同起作用的选项1020A、1020B和1020C(例如,分别是理论上可能的 选项1010A、1010B和1010C的子组)。接着,图10B示出对于第一资源已经选 择了(例如固定的)一个特定选项1021。因此,用于另一资源的一些配置选项 可能不再是可利用的(例如,它们是无效的)。在该实施例中,一个选项不再出 现在1020B’中。有时,其它选项是无效的。或者,也许没有选项是无效的。
图10C示出对于另一资源已经选择了(例如固定的)一个特定选项1022。 因此,用于剩余资源的一些配置选项可能不再是可利用的。在该实施例中,一 个选项不再出现在1020C”中。有时,用于第一资源的一些选项也可能是无效 的(例如产生一组1020A’,未示出)。然而,实际上,在固定了一个资源后(例 如对于该资源已经选择了一个配置选项),该固定的配置选项不会由于选择另一 个枚举的配置选项被无效。许多其它的情况是可能的。
实施例17-示范性的具有反馈的相互影响方法
图11示出用于借助于一个具有反馈的相互影响方法获得视频显现网络 1130(例如图1中示出的视频显现网络)的配置的示范性的设置1100。
在该示例设置1100中,一个客户1110可以发送用于视频显现网络的部分 配置信息到服务器1120。该部分配置信息可以用于视频显现网络的任一资源。 该部分配置可以表示该视频显现网络的一个拓扑。
在接收到该配置信息(例如一个部分配置,诸如用于第一资源)后,共同 起作用的配置选项(例如用于第二资源)可以被提供。该共同起作用的配置选 项可以用于不同于该部分配置的资源,用于在不同路径中的资源等等。该共同 起作用的选项基于该配置信息可以被限制(例如至少一个非共同起作用选项被 移除)。如在此描述的,该选项可以通过枚举被提供,并且可以同时对多个资源 作出枚举。
用于另一资源的共同起作用的配置选项可以是以视频显现网络的资源之间 的相关性为基础的。该客户可以从共同起作用的配置选项之间选择,并且继续 建立一个临时起作用的配置。
依据接收到一个提交,该服务器1120可以根据部分配置的指示接着配置该 视频显现网络1130。
图12示出用于从服务器观点执行具有反馈的配置的示范性方法1200。该 方法可以借助于在图11中示出的设置操作。在1210,一个部分视频显现网络配 置的指示被接收。例如,该部分配置可以表示用于该视频显现网络的第一资源 的一个配置。
在1220,共同起作用的配置选项被表示(例如,如以上对于图11A或11B 所描述的)。可替代地,除一个或多个非共同起作用的配置选项之外,所有的配 置选项可以被表示,在该选项被表示之前,非共同起作用的选项将从被表示的 选项中移除。该方法也可以包括一个提交(未示出),通过该提交该配置可以被 提交到视频显现网络。
图13示出用于从客户观点执行具有反馈的配置的示范性的方法1300。该 方法可以借助于在图11中示出的设置操作。在1310,一个部分视频显现网络配 置的指示被发送。例如,该部分配置可以表示用于视频显现网络的第一资源的 配置。
在1320,一组共同起作用的配置选项(例如,如以上对于图11A或11B 所描述的)被表示。此外,该方法也可以包括一个提交(未示出),通过该提交 该配置被提交到视频显现网络。
实施例18-在视频驱动器中的示范性的服务器实施
确定共同起作用的配置选项可以委托给一个视频驱动器。在此描述的任一 实施例中,由服务器执行的动作可以被一个视频驱动器(例如一个视频小端口) 执行。
图14示出其中具有反馈的临时配置可被实现的示范性结构1400。该实施 例包括一个客户1410(例如一个操作系统,诸如图形子系统,一个应用,等等)、 一个具有相关性逻辑1425的驱动器1420(例如以内核模式操作的装置-特定的 视频驱动器)以及一个视频适配器1430,该视频适配器提供视频输出到多个显 示装置1440A-1440N。
在此描述的任何实施例中,该视频驱动器1420可以用作一个服务器。该相 关性逻辑1425可以包括用于接收部分配置、枚举共同起作用的配置选项、以及 提交一个配置的功能。
因此,一个显示适配器的硬件厂家可以开发一个结合适当的相关性逻辑 1425的合适的驱动器1420以便帮助确定一个希望的视频显现网络配置。
实施例19-示范性的优势
在一个视频驱动器中实现相关性逻辑,如在实施例18中所讨论的,通过减 少具有某组限制的给定硬件实施的范围可以简化确定一个合适的配置。如果该 逻辑改为在该操作系统中,该任务可能是更加复杂的(例如,需要是完全的通 配的并且支持每个可能的相关性)。
实施例20-视频显现网络的示范性的配置
图15示出借助于部分配置用于视频显现网络的配置的示范性方法1500。 在1504,用于该视频显现网络的拓扑被选择。在1506,用于资源的配置选项被 枚举并固定。在1508,用于目标的配置选项被枚举并固定。一个提交(未示出) 可被用于实现该配置。
在本文的任一实施例中,虽然有时示出的资源是在目标之前被固定的,但 是不必是这样的情况。例如,目标可以在资源之前被固定。
实施例21-示范性的横越解空间集中在起作用的配置
图16示出横越可能起作用的多个视频输出配置组合的图表的示范性方法 1600的流程图。这样的方法可被与一个服务器(例如视频驱动器1420)相互作 用的客户(例如客户1410)使用。该实施例示出一个视频小端口,但是另一个 视频驱动器(例如视频驱动器1420)可被使用。
该实施例还包括一个固定的拓扑有作用的视频显现网络配置搜索,但是其 它实施例可以包括在该搜索期间改变该拓扑的选项。例如,在一个视频显现源 模式在视频显现网络源上固定使得用于另一视频显现网络源的至少一个其它视 频显现源模式无效后,可能希望改变一个拓扑。
在1602,一个希望的视频显现网络拓扑已经被选择。
在1604,已知该希望的视频显现网络拓扑,对于一个视频显现网络配置(例 如拓扑)查询一个视频小端口,该视频显现网络配置支持在至少一个视频显现 网络目标(例如所有的目标)上的至少一个支持监视器的视频信号模式(例如 所有的模式)。
在1606,枚举在所获得的视频显现网络配置(例如拓扑)中的至少一个视 频显现源(例如所有的源)上的该可利用的视频显现源模式的组。
在1608,一个视频显现源模式被固定在至少一个视频显现网络源(例如所 有的源)上。
在1610,确定是否还存在视频显现网络源,一个视频显现源模式将要固定 在这些网络源上。如果存在另一将要固定的视频显现网络源,该处理前进到 1612。否则,该处理前进到1614。
在1612,确定是否任何以前枚举的视频显现源模式已经是无效的。如果是, 该处理回到1606。如果不是,该处理回到1608。在该实施例中,基于另一视频 显现源模式的选择,可使至少一个以前枚举的视频显现源模式无效,但是通过 这样的选择,不能使所有的视频显现源模式无效。
在1614,枚举在所获得的视频显现网络配置中的至少一个视频显现目标 (例如所有的目标)上的该可利用的视频显现目标模式的组。
在1616,一个视频显现目标模式被固定在至少一个视频显现网络目标(例 如所有的目标)上。
在1618,确定是否还存在视频显现网络目标,一个视频显现目标模式将要 固定在这些网络目标上。如果存在另一将要固定的视频显现网络目标,该处理 前进到1620。否则,该处理前进到1622。
在1620,确定是否任何以前枚举的视频显现目标模式已经被无效。如果是, 该处理回到1614。如果不是,该处理回到1616。
在1622,一个最后所得到的起作用的视频显现网络配置组合被提交。
实施例22-第一示范性具体横越解空间集中在起作用的配置上的例子
图17A-B示出横越可能的起作用的多个视频输出配置组合的图表的第一示 范性具体方法1700的流程图。这样的方法可被与一个服务器(例如视频驱动器 1420)相互作用的一个客户(例如客户1410)使用。该实施例示出一个视频小 端口,但是另一视频驱动器(例如视频驱动器1420)可被使用。
在1702,已经提供了一个初始的视频显现网络拓扑。
在1704,已知该初始的视频显现网络拓扑,对于一个视频显现网络配置(例 如拓扑)查询一个视频小端口,该视频显现网络配置支持在至少一个视频显现 网络目标(例如所有的目标)上的至少一个支持监视器视频信号模式(例如所 有的模式)。
在1706,作出由1704的查询所规定的视频显现网络拓扑是否被支持的确 定。如果所规定的视频显现网络拓扑被支持,接着该处理前进到1708。否则, 该处理前进到1710。
在1708,作出当前视频显现网络拓扑是否是最希望的视频显现网络拓扑的 确定。如果是,然后该处理前进到1712。否则,该处理前进到1714。
在1710,作出至少一个其它初始视频显现网络拓扑是否存在的确定。如果 是,然后该处理回到1704。否则,由于不集中到具有希望的搜索参数的起作用 的配置组合,该处理在1790终止。
在1712,枚举在所获得的视频显现网络配置中的至少一个视频显现网络源 (例如所有的源)上的可利用的视频显现源模式组。然后该处理前进到1722。
在1714,通过增加或者移除视频显现路径(例如多路径),该视频显现网 络拓扑可被调整到一个新的有效的视频显现网络拓扑。接着该处理前进到1716, 其中作出该新的有效的视频显现网络拓扑是否被支持的确定。如果是,然后该 处理回到1708。否则,该处理前进到1718。
在1718,作出是否存在至少一个其它的希望的视频显现网络拓扑的确定, 其中该视频显现网络拓扑可以通过经由有效的视频显现网络拓扑的增加改变来 获得。如果是,该处理前进到1720。否则,该处理在1790终止。
在1720,作出仅通过无效拓扑(例如该拓扑不能被进一步调整)另一希望 的视频显现网络拓扑是否是可获得的确定。如果是,该处理回到1704。否则, 该处理回到1714。
在1722,作出任何枚举的视频显现源模式是否遗漏了相应视频显现网络源 所希望的一个模式的确定。如果是,该处理前进到1724。否则,该处理前进到 1732。
在1724,作出任何视频显现网络源是否具有一个固定的视频显现源模式的 确定。如果是,该处理前进到1728,其中一个固定的视频显现源模式被解除固 定,并且然后该处理回到1712。否则,该处理前进到1730。在1728解除固定 的该视频显现源模式可以根据视频显现网络源重要性进行排序(例如该源模式 可以按重要性从大到小来区分优先次序)。
在1730,作出是否存在对于视频显现网络源可利用的至少一个其它视频显 现源模式的确定。如果是,该处理回到1732,其中一个视频显现源模式固定在 至少一个视频显现网络源(例如对于所有的源)上,并且然后该处理前进到1734。 否则,该处理在1790终止。在1732固定的该视频显现源模式可以根据视频显 现网络源重要性进行排序(例如,该源模式可以按重要性从大到小来区分优先 次序)。
在1734,确定是否还存在视频显现网络源,该该视频显现网络源上一个视 频显现源模式将要被固定。如果存在另一将要固定的视频显现网络源,该处理 前进到1736。否则,该处理前进到1738。
在1736,确定是否任何以前枚举的视频显现源模式已经被无效。如果是, 该处理回到1712。如果不是,该处理回到1732。
在1738,枚举在所获得的视频显现网络配置中的至少一个视频显现网络目 标(例如所有的目标)上的可利用的视频显现目标模式组。
在1742,作出是否任何枚举的视频显现目标模式遗漏了相应视频显现网络 目标所希望的一个模式的确定。如果是,该处理前进到1744。否则,该处理前 进到1752。
在1744,作出是否任何视频显现网络目标具有固定在其上的视频显现目标 模式的确定。如果是,该处理前进到1748,其中一个固定的视频显现目标模式 被解除固定,并且然后该处理回到1738。否则,该处理前进到1750。在1748 解除固定的该视频显现目标模式可以根据视频显现网络目标重要性排序(例如 该目标模式可以按重要性从大到小来区分优先次序)。
在1750,作出是否存在对于视频显现网络目标可利用的至少一个其它的视 频显现目标模式的确定。如果是,该处理回到1752,其中一个视频显现目标模 式固定在至少一个视频显现网络目标(例如对于所有的目标)上,并且然后该 处理到1754。否则,该处理在1790终止。在1752固定的视频显现目标模式可 以根据视频显现网络目标重要性排序(例如该目标模式可以按重要性从大到小 来区分优先次序)。
在1754,确定是否还存在视频显现网络目标,在该视频显现网络目标上一 个视频显现目标模式将要被固定。如果存在另一将要固定的视频显现网络目标, 该处理前进到1756。否则,该处理前进到1780。
在1756,确定是否任何以前枚举的视频显现目标模式已经被无效。如果是, 该处理回到1738。如果不是,该处理回到1752。
在1780,一个最后得到的起作用的视频显现网络配置组合被提交。
实施例23-第二示范性的横越具体的解空间的集中在起作用的配置上的 例子
图18A-C示出横越可能的起作用的多个视频输出配置组合的图表的第二示 范性具体方法1800的流程图。这样的方法可以被与一个服务器(例如视频驱动 器1420)相互作用的一个客户(例如客户1410)使用。该实施例示出一个视频 小端口,但是另一视频驱动器(例如视频驱动器1420)可被使用。
在1802,已经提供了一个初始视频显现网络拓扑。
在1804,已知该初始视频显现网络拓扑,对于一个视频显现网络配置(例 如拓扑)查询一个视频小端口,该视频显现网络配置支持在至少一个视频显现 网络目标(例如所有的目标)上的至少一个支持监视器的视频信号模式(例如 所有的模式)。
在1806,作出由1804的查询规定的视频显现网络拓扑是否被支持的确定。 如果该规定的视频显现网络拓扑被支持,然后该处理前进到1808。否则,该处 理前进到1810。
在1808,作出当前视频显现网络拓扑是否是最希望的视频显现网络拓扑的 确定。如果它是,接着该处理前进到1812。否则,该处理前进到1814。
在1810,作出是否存在至少一个其它的初始视频显现网络拓扑的确定。如 果存在,接着该处理回到1804。否则,由于不集中在具有希望的搜索参数的起 作用的配置组合,该处理在1890终止。
在1812,枚举在所获得的视频显现网络配置中的至少一个视频显现网络源 (例如所有的源)上的可利用的视频显现源模式组。接着该处理前进到1822。
在1814,通过增加或者移除视频显现路径(例如多路径),该视频显现网 络拓扑可被调整到一个新的有效的视频显现网络拓扑。接着该处理前进到1816, 其中作出该新的有效的视频显现网络拓扑是否被支持的确定。如果是,然后该 处理回到1808。否则,该处理前进到1818。
在1818,作出是否存在至少一个其它的希望的视频显现网络拓扑的确定, 其中该视频显现网络拓扑可以通过经由有效的视频显现网络拓扑的增加改变来 获得。如果是,该处理前进到1820。否则,该处理端在1890。
在1820,作出仅通过无效拓扑(例如该拓扑不能被进一步调整)另一希望 的视频显现网络拓扑是否是可获得的确定。如果是,该处理回到1804。否则, 该处理回到1814。
在1822,作出任何枚举的视频显现源模式是否遗漏了相应视频显现网络源 所希望的一个模式的确定。如果是,该处理前进到1824。否则,该处理前进到 1832。
在1824,作出任何视频显现网络源是否具有一个固定的视频显现源模式的 确定。如果是,该处理前进到1828,其中一个固定的视频显现源模式被解除固 定,并且然后该处理回到1812。否则,该处理前进到1830。在1828解除固定 的该视频显现源模式可以根据视频显现网络源重要性进行排序(例如该源模式 可以按重要性从大到小来区分优先次序)。
在1830,作出是否存在对于视频显现网络源可利用的至少一个其它视频显 现源模式的确定。如果是,该处理回到1832,其中一个视频显现源模式固定在 至少一个视频显现网络源(例如对于所有的源)上,并且然后该处理到1834。 否则,该处理前进到1831。在1832固定的该视频显现源模式可以根据视频显现 网络源重要性进行排序(例如,该源模式可以按重要性从大到小来区分优先次 序)。
在1831,作出已知任何其它希望的视频显现网络拓扑、是否存在对于视频 显现网络源可利用的至少一个其它视频显现源模式的确定。如果是,该处理回 到1818。否则,该处理端在1890。
在1834,确定是否还存在视频显现网络源,在该视频显现网络源上一个视 频显现源模式将要被固定。如果存在另一将要固定的视频显现网络源,该处理 前进到1836。否则,该处理前进到1838。
在1836,确定是否任何以前枚举的视频显现源模式已经被无效。如果是, 该处理回到1812。如果不是,该处理回到1832。
在1838,枚举在所获得的视频显现网络配置中的至少一个视频显现网络目 标(例如所有的目标)上的可利用的视频显现目标模式组。
在1842,作出是否任何枚举的视频显现目标模式遗漏了相应视频显现网络 目标所希望的一个模式的确定。如果是,该处理前进到1844。否则,该处理前 进到1852。
在1844,作出是否任何视频显现网络目标具有固定在其上的视频显现目标 模式的确定。如果是,该处理前进到1848,其中一个固定的视频显现目标模式 被解除固定,并且然后该处理回到1838。否则,该处理前进到1850。在1848 解除固定的该视频显现目标模式可以根据视频显现网络目标重要性排序(例如 该目标模式可以按重要性从大到小来区分优先次序)。
在1850,作出已知当前的视频显现网络拓扑并且固定在视频显现网络源上 的视频显现源模式、是否存在对于视频显现网络目标可利用的至少一个其它的 视频显现目标模式的确定。如果是,该处理回到1852,其中一个视频显现目标 模式固定在至少一个视频显现网络目标(例如对于所有的目标)上,并且然后 该处理到1854。否则,该处理前进到1856。在1852固定的视频显现目标模式 可以根据视频显现网络目标重要性排序(例如该目标模式可以按重要性从大到 小来区分优先次序)。
在1854,确定是否还存在视频显现网络目标,在该视频显现网络目标上一 个视频显现目标模式将要被固定。如果存在另一将要固定的视频显现网络目标, 该处理前进到1868。否则,该处理前进到1880。
在1856,作出以下内容哪个是更重要的确定:当前的视频显现网络拓扑或 者当前固定在视频显现网络源上的视频显现源模式。如果当前固定在视频显现 网络源上的该视频显现源模式被认为是更重要的,该处理前进到1862。如果当 前视频显现网络拓扑被认为是更重要的,该处理前进到1864。
在1862,确定是否存在至少一个其它的希望的视频显现网络拓扑。如果是, 该处理回到1818。如果不是,该处理前进到1866。
在1864,作出已知当前视频显现网络拓扑、是否存在至少一个其它的希望 的视频显现源模式的确定。如果是,该处理回到1828。否则,该处理前进到1862。
在1866,作出是否存在在至少一个视频显现网络源上可利用的至少一个其 它的希望的视频显现源模式的确定。如果是,该处理前进到1864。否则,该处 理在1890终止。
在1868,确定是否任何以前枚举的视频显现目标模式已经被无效。如果是, 该处理回到1838。如果不是,该处理回到1852。
在1880,一个最后得到的起作用的视频显现网络配置组合被提交。
实施例24-获得目标配置的示范性的方法
图19示出考虑到目标(例如根据被监视器支持的视频模式所描述的)确定 用于一个视频显现网络的拓扑的示范性方法1900的流程图。
在1902,该处理从一个初始拓扑开始。在1906,该初始拓扑被修改以便更 好地满足该目标(例如通过产生更好地满足该目标的一个临时起作用的配置)。 这样的修改可以考虑在视频显现网络的资源之间的相关性。
可能的目标可以与视频模式或者其它的配置选项有关。例如,一个目标可 以是通过该可利用的视频输出编解码器将视频显现网络目标布置到视频显现网 络中的视频显现网络源、以便最大化地支持在它的视频显现网络源上的图形视 频显现网络源模式设置的最好的方法,假定在该视频显现网络目标上的视频模 式设置必须支持在与它们连接的所有监视器上的较佳模式。或者,如果这样的 一个目标不能被获得,该目标可以是通过该可利用的视频输出编解码器将视频 显现网络目标布置到视频显现网络中的视频显现网络源、以便最大化地支持在 它的视频显现网络源上的图形视频显现网络源模式设置的最好的方法,假定在 该视频显现网络目标上的视频模式设置必须支持在与它们连接的监视器上的以 规定的优先次序排序的较佳模式。或者,如果这样的目标不能被获得,该目标 可以是通过该可利用的视频输出编解码器将视频显现网络目标布置到视频显现 网络中的视频显现网络源、以便最大化地支持在它的视频显现网络源上的图形 视频显现网络源模式设置的最好的方法,假定在该视频显现网络目标上的视频 模式设置必须支持由与它们连接的监视器所支持的至少一个视频模式。
如果需要,第一目标可以被尝试。然后,如果第一目标不能实现,第二目 标可以被尝试,诸如此类。一个目标有时被描述为一个“最佳”配置。
实施例25-示范性的附加目标
除上述的目标之外,其它的配置目标可能被期望并且通过在此描述的技术 可被促进。例如,获得下列单独的项或者组合的项可能是有意义的:
1.最大化在再现目标上的特定分辨率
2.最大化在再现目标上的彩色分辨率
3.最大化在再现目标之一(例如对于医学成像应用、计算机辅助设计等等) 上的空间和彩色分辨率。
4.匹配显示一个图像的监视器上的更新率以便避免视频流同步问题,该图 像包含一个实时电视广播图像。这样的同步问题可以自我表现为失真、失落 (例如假信号)或者上述两者。
5.通过以增强3D性能可接受的最低再现模式驱动图像来尽可能多地保存 视频存储器带宽,假定一个或多个GPU争用相同的视频存储器总线。
因为这样的目标是在简单的视频驱动器的范围之外的,因此这样的目标可 以通过在该视频驱动器外边(例如,在该操作系统的上层中,诸如在外壳、图 像子系统、DX运行时间等等中)放置决策性能来实现。
由于可能的再现模式的绝对数量,一个驱动器不能简单地枚举它们。一个 查询或者横越方法(例如,诸如在这里的该实施例中所描述的)可以用于实现 配置目标。
还有其它目标可以如下分类:
1.在用于图像质量的最佳的模式中,一个人最关心以可能的最好程度显示 图像。
2.在用于性能的最佳模式中,一个人最关心不使视频存储器总线超载(例 如每个编解码器必须从视频存储器中读取,并且因此消耗视频存储器带宽)。
3.在用于能量消耗的最佳模式中,一个人可能想选择消耗最低能量的编解 码器,即使关闭所有其它的编解码器,它不能在两个监视器中的任一个中驱动 较佳的模式。
典型地,在任何配置中一个隐含的目标在于该视频输出支持由相应监视器 所支持的至少一个模式。除非被性能或者能量管理考虑压倒,通常一个进一步 的目标是视频输出尽支持它们的各自监视器的较佳模式,其中该监视器的重 要性被客户(例如操作系统)作为配置要求的一部分列入优先地位。
例如,在多个图像(例如复制图像)上提供同样的再现目标,该视频驱动 器应该企图具有同样数量的以它们的较佳模式运行的监视器,当作不是这样即 意味着要求的输出之一不能被驱动时,只共享编解码器。
例如,在包含三个视频输出的情况中,但是只有两个编解码器,当被要求 支持所有的三个输出时共用一个编解码器是可接受的,即使至少一个监视可能 没有以其较佳模式运行。然而,当被要求只支持两个输出时,如果通过不共用 一个编解码器可以在两个监视器上获得较佳模式,那么一个编解码器不能被共 用。
实施例26-与能量消耗有关的示范性目标
在一些情况中,可能希望指定关于能量消耗目标。例如,具有较小的能量 消耗的配置对于节省能量情况可能是较佳的,并且当在全能量情况时,性能和/ 或图像质量可能是较佳的。在这里的任一实施例中,这样的目标可以被实现。
实施例27-示范性的装置驱动器接口
实施例45列出一组功能(例如,EnumerateAvailVidPNTargets、 ConstrainNodesOnVidPNTargets等等)和它们的目的。这样的功能可以包括在视 频装置驱动器(例如一个视频小端口)支持的装置驱动器接口中。该功能可以 被客户使用以便采用各种算法(例如搜索算法)以增加的方式建立一个视频显 现网络。
实施例28-用于配置管理的示范性功能
实施例45详述用于配置管理的一组功能。例如,一个功能(例如 GetActiveVidPNTopology)识别一个视频显现网络配置(例如一个拓扑)。另一 功能(例如CommitVidPNImpl)提交一个视频显现网络配置。另一功能(例如 EnumCurrentlyAvailVidPNSourceModeSets)枚举已知希望的视频显现网络配置时 可利用的视频显现源模式。另一功能(例如 EnumCurrentlyAvailVidPNTargetModeSets)枚举已知一个希望的视频显现网络配 置时可利用的视频显现目标模式。另一功能(例如PinModeOnVidPNSource)在 一个视频显现网络源上固定一个视频显现源模式。另一功能(例如 PinModeOnVidPNTarget)在一个视频显现网络目标上固定一个视频显现目标模 式。另一功能(例如UnpinModeOnVidPNSource)在一个视频显现网络源上解 除一个视频显现源模式的固定。另一功能(例如UnpinModeOnVidPNTarget)在 一个视频显现网络目标上解除一个视频显现目标模式的固定。另一功能(例如 CreateVidPNImpl)建立一个视频显现网络配置。该功能的任何组合可以作为编 程接口(例如一个装置驱动器接口)的一部分实现。这样的一个接口可以提供 对作为一项服务(例如用于客户程序)的功能的访问
实施例29-示范性的调用得出配置
图20示出示范性的调用得出配置的方框图。这样的调用可以作为装置驱动 器接口(DDI)的一部分实现。
系统2000包括在驱动器2002(例如视频小端口)和图形核心子系统2004之 间通信。已知一个规定的视频显现网络配置EnumAvailVidPNTargets可被调用枚 举由一个已知的显示卡所支持的可利用的视频显现网络目标。 EnumAvailVidPNSources可被调用枚举由已知的显示卡所支持的可利用的视频 显现网络源。这两个调用可作为系统初始化的一部分。可替代地,这两个调用 可作为视频适配器到达事件(例如PCI表示或者底座式热插拔)的一部分。在 一些情况中,一个无效视频显现网络配置形式可被支持,表示所有可利用的视 频显现目标和源应该被报告(例如,当对于初始化是合适的)。
IsMonitorConnected可被用于确定哪个枚举的视频显现目标具有连接到它 们的监视器。GetMonitorDescriptor可被调用每个连接的监视器以便获得每个监 视器的描述符。ConstrainModesOnVidPNTargets可被调用根据从监视器描述符 所获得的监视器性能在每个枚举的视频显现目标上设置视频模式约束条件。
在视频显现网络结构中,GetInitialVidPNImpl可被随意地调用以便获得由视 频小端口推荐的视频显现网络临时配置。CreateVidPNImpl可被调用基于来自视 频小端口的任选的推荐来建立一个视频显现网络临时配置。可替代地, CreateVidPNImpl可以建立一个视频显现网络临时配置,而不管来自小端口的任 选的推荐。
EnumCurrentlyAvailVidPNSourceModeSets、PinModeOnVidPNSource和 UnpinModeOnVidPNSource可被调用直到视频显现源模式固定在视频显现网络 源上,作为建立一个部分-起作用的视频显现网络的一部分。如果将要固定的视 频显现源模式已知是为视频显现网络源而工作,PinModeOnEachVidPNSource可 被调用立刻在所有的视频显现网络源上固定视频显现源模式。
EnumCurrentlyAvailVidPNTargetModeSets、PinModeOnVidPNTarget和 UnpinModeOnVidPNTarget可被调用直到视频显现目标模式固定在视频显现网 络目标上,作为实现一个起作用的视频显现网络的一部分。如果将要固定的视 频显现目标模式已知是为视频显现网络目标而工作的, PinModeOnEachVidPNTarget可被调用立刻在所有的视频显现网络目标上固定视 频显现目标模式。
为了提交一个视频显现网络临时配置,CommitVidPNImpl可被调用。在对 于视频显现网络中的每个源设置了主表面链接之后,一个起作用的视频显现网 络临时配置可被提交。可能需要作为在视频显现网络拓扑和视频显现源和目标 (例如主表面链接)外边输入其它的OS拥有的资源的CommitVidPNImpl。
实施例30-视频输出和再现目标的示范性分离
一个视频再现装置驱动器暴露的接口(例如到一个操作系统,并且因此间 接地到运行在该操作系统上的应用程序)不必将一个视频输出和一个再现目标 的概念区分为两个分离的、独立的实体,其中在该视频输出上该视频再现装置 正物理上驱动该显示的图像,并且该应用正在将它希望呈现的内容逻辑上再现 到该再现目标。该再现目标可以隐含地和静态地与视频再现装置上的每个视频 输出联系在一起。然而,这样的一个方法可以是限制的。
在本文中描述的任一实施例中,再现目标的一个明确的概念通过再现模式 的概念可被支持。一个显示模式可有两种描述:一个视频模式,其是输出形式 描述符(用于一个输出或目标,诸如在图1或图25中所示出的那些);以及一 个再现模式,其是输入形式描述符(用于一个输入或源,诸如在图1或图25中 所示出的那些),其中该显示模式是操作系统中的任何装置的基本操作形式描述 符。这样的一个方法在具有多个视频输出的系统中特别有用。作为视频驱动器 的接口(例如DDI)可以允许视频模式和再现模式的分开的规定。
因此,逻辑再现目标可被与物理视频输出相分离地动态管理。该目标可被 映射到在运行时间选择的视频输出,需要时使它们从输出到输出地重定向,或 者甚至同时将单个再现目标映射到多个输出。
实施例31-用于监视器达到/离开的示范性管理
在本文中描述的任何技术可适用于当系统正运行时将监视器加入到系统中 或从系统移除的情况。例如,当监视器到达或离开系统时,事件(例如HPD事 件)可被系统检测,并且一个配置可因此被选择。并且,可实现将视频流重定 向到不同的输出(例如,用于复制图像、延伸的桌面管理等等)的变化。对于 这样的动态配置改变的稳定的支持可通过在此描述的与物理视频输出相分离地 管理逻辑再现目标来完成。
实施例32-技术的示范性综合利用
在本文中描述的任一实施例中,视频显示装置可以采取各种形式,例如, 图21示出到一个具有多个视频显示装置的计算机系统中的示范性的技术综合利 用。
图21是多个视频输出装置系统2100的示范性的高级结构的方框图。一个 桌面2110、一个显示特性小程序2112和一个全屏图形应用2114与一个图形子 系统2120通信。图形子系统2120驱动一个视频驱动器2130和另一个视频驱动 器2132。两个视频驱动器(例如视频小端口)通过一个到视频适配器2150和 2152的硬件抽象层(HAL)2140通信,视频适配器2150和2152发送输出的信 号到多个视频输出装置的任何组合。这样的视频输出装置可以包括一个CRT监 视器2160、一个平面监视器2162、一个数字投影机2164、一个LCD监视器2166、 一对虚拟现实护目镜2168等等。除了示出的那些的组合外,其它组合也是可能 的。
实施例33-集中到希望的配置的解空间的示范性横越
图22示出一个客户服务系统2200,其中一个视频配置基于优先次序确定。 一个客户2202与一个服务器2204通信。客户2202包含说明优先化信息的优先 次序2206。
这样的优先化信息可以包括一个或多个希望的拓扑的列表、用于相应源的 希望的模式的列表、用于各个目标的希望的模式的列表等等,或者其中的一些 组合。优先化信息还可以包括是否某个源模式是比拓扑选择更重要的。另外, 希望的源模式和希望的目标模式可被列入优先位置(例如从重要性最大的到重 要性最小的)。
这样的优先次序可以优先化列表的形式。然而,优先次序也可以通过并入 逻辑实现(例如在客户2202中if-then表达式)。
图23示出用于基于诸如在上述图22中示出的系统中的希望的视频配置选 项的优先化列表来确定视频配置的示范性方法2300。
在2302,用于至少第一资源的一个部分视频配置被提交。
在2304,与该部分视频配置共同起作用的配置选项的列表被接收。
在2306,作出在优先化列表中的一个希望的选项是否显示在与该部分视频 配置共同起作用的配置选项的列表中的确定。
在2308,响应该希望的选项没有被显示的确定,对于第一资源重新提交一 个修改的部分配置。实际上,优先次序之间的折中可能是可取的。
具体实例包含在本申请中(例如在图5和6的附件A)。
实施例34-集中到拓扑可改变的希望的配置上的解空间的示范性横越
图24示出横越可能的起作用的多个视频输出配置组合的图表的另一示范 性方法2400的流程图。然而,该实施例包括在希望的起作用的视频显现网络临 时配置的确定期间改变拓扑的可能性。
在2402,一个特定拓扑被选择。
在2404,一个视频显现源模式被选择并固定在视频显现源上。
在2406,确定是否任何视频显现目标模式是可利用的(例如借助于枚举)。 如果是,该处理继续到2408。如果不是,该处理前进到2410。
在2408,一个视频显现目标模式被选择并且固定在视频显现目标上。接着 该方法可以结束(例如在一个提交之后)。
在2410,确定具有以前选择的拓扑是否比具有选择的视频显现源模式更重 要。如果答案是肯定的,那么在2412一个不同的视频显现源模式被选择并固定 在视频显现源上,并且处理回到2406。否则,在2414选择一个不同的拓扑并且 处理回到2404。
虽然该实施例示出源模式和拓扑之间的折中方案,其它的资源之间的折中 方案也是可能的。此外,如在一些其它的实施例中所示出的,希望的选项可被 列入优先位置。
在该实施例中执行的和在图24中说明的逻辑可改变为适应多个视频显现 源和/或多个视频显现目标,类似于上面说明的和在图16中说明的。例如,在图 24中的2410-2414执行的逻辑可插入在图16中的1608和1610之间和/或1616 和1618之间。
在该实施例中,搜索从一个初始拓扑开始,如在图24中的2402所做的。 为了拓扑中的视频显现路径,在一个视频显现目标模式可被固定在视频显现路 径的视频显现网络目标上之前,一个视频显现源模式可固定在该视频显现路径 的视频显现网络源上。例如,一个搜索可以从一个单独的源图像视频显现路径 开始,在源和目标上都固定模式,并且接着通过将另一视频显现路径增加到拓 扑来发展拓扑。可替代地,当只有视频显现源模式被固定时该拓扑可被改变。
实施例35-配置服务地示范性使用
配置服务的示范性执行可着手配置一个视频显现网络。该实施例假定一个 视频显现网络在它的拓扑中具有三个源的视频显现并且下面为三个源中的每一 个列出视频显现源模式组:
1.(1,{1,640×480),(2,800×600),(3,1024×768),(4,1280×1024)})
2.(2,{1,640×480),(2,800×600),(3,1024×768),(4,1280×1024), (5,1600×1200),(6,2000×1500)})
3.(3,{1,640×480),(2,800×600),(3,1024×768)})
假定客户对在每个视频显现网络源上得到最高可能的空间分辨率感兴趣, 该第一视频显现网络源是最重要的,第二视频显现网络源是第二重要的,并且 第三和最后的视频显现网络源是重要性最低的,应该着手在第一视频显现网络 源上固定最高模式,其是(4,1280×1024)。
然而,通过这样做,客户使第二视频显现网络源上的模式(4,1280×1024)、 (5,1600×1200)和(6,2000×1500)无效。由于客户仍然没有意识到这些, 它将尽力并且将以前枚举的最高模式(例如(6,2000×1500))固定在第二视 频显现网络源上,这将失败,这个失败是利用一个状态码来表示,该状态码表 明规定的视频显现源模式已经被无效。
在这一点上,客户将重新枚举所有的视频显现网络源的可利用的视频显现 源模式,获得下列三组:
1.(1,{1,640×480),(2,800×600),(3,1024×768),(4,1280× 1024)})
2.(2,{1,640×480),(2,800×600),(3,1024×768)})
3.(3,{1,640×480),(2,800×600),(3,1024×768)})
客户接着将最高可利用的视频显现源模式固定在第二视频显现网络源上 (例如(3,1024×768))。为了支持该增加的模式,然而,该显示卡可以不再 支持第三视频显现网络源上的(2,800×600)和(3,1024×768)。
此外,没有意识到这一事实,客户将为那个视频显现源尽力固定以前枚举 的最高模式(例如(3,1024×768))。努力失败了,客户将重新枚举所有的源 的可利用的模式,得到:
1.(1,{1,640×480),(2,800×600),(3,1024×768),(4,1280×1024)})
2.(2,{1,640×480),(2,800×600),(3,1024×768)})
3.(3,{1,640×480)})
对于第三和最后的视频显现网络源只留下一个模式选择。
在这一点上,客户也可以接受该源模式分布并且着手固定目标模式以便得 出一个起作用的视频显现网络,或者它可以决定640×480空间分辨率不够高并 且退回去找到更适合的解决方案(例如,在第一视频显现网络源上不包含设置 1280×1024空间分辨率的方案,或者可替代地,在它的拓扑中只有两个视频显 现网络源的方案)。
下面标出的模式列表概括了整个处理,在每组中具有黑体和下划线的模式 表示固定的模式,加单删除线的模式表示当在第一视频显现网络目标上的模式 被固定时该模式无效,并且加双删除线的模式表示当在第二视频显现网络目标 上的模式被固定时该模式无效:
1.(1,{1,640×480),(2,800×600),(3,1024×768),(4,1280×1024)})
2.(2,{1,640×480),(2,800×600),(3,1024×768)})
3.(3,{1,640×480)})
应注意,上述算法使用用于再现多模式集中的过分简单化的渴望的方法, 并且它不采用退回。一个更复杂的搜索(例如深度第一的搜索)可被客户代替 使用以便得到一个更适合的再现多模式。还应注意,上述算法假定通过集中处 理固定一个希望的拓扑,诸如在图16中的示范性方法1600。
实施例36-示范性多监视器/多图像系统
图25是示范性多监视器/多图像系统2500的示意图,其可以使用下列形式 描述。有时术语“VidPN”代替“video presenting network(视频显现网络)”使用, 并且“video present(视频显现)”代替“video presenting(视频显现)”使用。而 且,术语“implementation(实现)”有时指的是一个临时配置。系统2500可以在 本文中描述的任何实施例的方式使用。
1.M是一组监视器2510m=(δM),其中:
a.监视器m是视频显现装置,其监控视频再现装置的输出,并且
b.δM∈{EDID v 1.0,EDID v 1.1,EDID v 1.2,EDID v 1.3,具有DIEXT的 EDID v 1.3}是一个监视器描述符。
2.T是一个视频再现装置的一组视频显现目标2520t=(δT),其中:
a.δT∈{(格式[δT],HPD-感知[δT])}是视频显现目标描述符,其中
i.格式[δT]∈VC≡{DVI、HDMI、HDMI-2、HD-15、BNC、4-引脚S-视 频、7-引脚S-视频、RF、RCA复合、3成分RCA、其它}是视频输出格式类型,
ii.HPD-感知[δT]∈HPD≡{可中断的、非破坏的轮询、破坏的轮询、无}是 视频输出HPD-感知,其中视频输出具有:
1.可中断的HPD-感知,当且仅当视频小端口可异步地通知OS关于监 视器到达/离开。
2.非破坏的轮询HPD-感知,当且仅当视频小端口可以只通过周期地轮 询下面的h/w将监视器到达/离开报告到OS,而没有引起视觉失真。
3.破坏的轮询HPD-感知,当且仅当视频小端口只可以只通过不时地轮 询优先地h/w将监视器到达/离开报告到OS,在每个轮询上引起视觉失真。
4.无HPD-感知,当且仅当视频小端口没有感知到监视器到达/离开并 且因此不能向OS异步地通知或者同步地报告这样的事件。
b.编码∈(VE)VC是视频编码类型,其中:
i.VE≡{数字_YcbCr,数字_RGB,模拟_YPbPr,模拟_RGB,模拟_YC,模 拟_复合,其它}是视频编码类型,并且视频输出连接器映射到各个视频输出编 码,如在下面示出的表1中规定的(注意:DDC支持的出现暗示获得监视器描 述符δM的可能性):
表1-视频输出连接器到输出编码的映射 视频输出连接器类型 视频编码类型 DDC支持 DVI 数字_RGB或者 数字_YCbCr 是 HDMI 数字_RGB或者 数字_YCbCr (+音频) 是 HDMI-2 数字_RGB或者 数字_YCbCr (+音频) 是 HD-15 模拟_RGB 有时 BNC 模拟_RGB或者 模拟_YPbPr 否 7-引脚S-视频 模拟_YC 是 4-引脚S-视频 模拟_YC 否 RCA复合 模拟_复合 否 3成分RCA 模拟 YPbPr 否 RF 模拟_复合 否 其它 其它 未知
c.同步的:
是视频输出同步判 定,其中已知两个输出,确定它们是否彼此同步。
3.K是一组视频显现编解码器2530κ=(δK),其中:
a.δK是视频编解码器描述符。
4.∑是一组视频显现源2550σ=(δ∑),其中:
a.δ∑∈{线性,其它}是视频显现源描述符,并且
b.显现在监视器上的每个视频显现网络输入的内容被称为图像。
5.V是一组图像2560v=(δV),其中:
a.δV∈{(重要性[δV],方向[δV])}是图像描述符,其中:
i.重要性[δV]∈{初始的,第二的,其它}
ii.方向[δV]∈{左,右,中心,其它} 6 . S = Z 2 32 { 0 . . 0 × ffffffff } 是一组32比特空间坐标。
7.Θ是一组显示模式θ=(wΘ,hΘ,rΘ,fΘ),其中:
a.wΘ∈S\{0}是显示模式宽度。
b.hΘ∈S\{0}是显示模式高度。
c.rΘ∈RΘ是显示模式帧速率,其中:
i.RΘ≡{a.b|a,b∈{1..0×FFFF}}是一组显示模式帧速率,单位是Hz。
d.fΘ∈FΘ是显示模式单元格式,(也就是监视器的有效彩色分辨率-是监 视器技术的功能的物理参数),其中:
i.F∑≡{1比特,5比特,6比特,8比特,10比特,12比特,16比特,18 比特,32比持,TBD}是一组显示模式彩色分辨率。
e.gΘ∈[1.0,+∞)∪{SD-601,HD-709}监视器传输功能(也就是监视器灰度 系数),其是监视器技术的强度响应功能。
8.B是一组视频显现目标模式,
β=(AB,TB,Δ(ABTB),fB,vrB,hrB,crB,oB,cpB,gB,TB,YUV→RGB,bpoB,wpoB,pmB),也 被称为显现目标模式,其中:
a.AB∈{(宽度[AB],高度[AB])}是视频显现目标模式有源区域,其中:
i.宽度[AB]是视频显现模式有源区域宽度。
ii.高度[AB]是视频显现模式有源区域高度。
b.TB∈{(宽度[TB],高度[TB])}是视频显现目标模式总区域,其中:
i.宽度[TB]是视频显现模式总区域宽度。
ii.高度[TB]是视频显现模式总区域高度。
c.Δ(ABTB)∈{偏移水平[AB,TB],偏移垂直[AB,TB])}是视频显现目标模式的有 源区域位移,其中:
i.偏移水平[AB,TB]是视频显现模式的水平有源区域位移。
ii.偏移垂直[AB,TB]是视频显现模式的垂直有源区域位移。
d.fB∈FB=FB,模拟∪FB,数字是视频模式像素编码格式,其中:
i.FB,数字≡{Y10Cb10Cr10,Y8Cb8Cr8,sR10G10B10,sR8G8B8}是一 组数字视频模式像素编码格式。
ii.FB,模拟≡{YPbPr,模拟_YC,模拟_复合,RGB}是一组模拟视频模式 像素编码格式。
e.vrB∈VRB是垂直更新速率,也被称为Vsync速率,或者垂直回扫频率, 其中:
i.VRB≡{a.b|a,b∈{1..0×FFFFFFFF}}是一组有理数垂直更新速率,单位是 Hz,通常在范围50到200Hz中。
f.hrB∈HRB是水平更新速率,也被称为Hsync速率、行速率或者水平回扫 频率,其中:
i.HRB≡{a.b|a,b∈{1..0×FFFFFFFF}}是一组分数水平更新速率,单位是 Hz,通常在范围10到200KHz中。
g.crB∈CRB是像素时钟速率,其中:
i.CRB≡{a|a∈{1..0×FFFFFFFF}}是一组像素时钟速率,单位是Hz,通常 在范围1到500MHz中。
h.oB∈OB是内容排序,其中:
i.OB≡{逐行的,隔行的_上面场优先,隔行的_下面场优先}是一组内容排序 类型,其中对于逐行的内容排序场速率=Vsync速率,并且对于隔行的内容排序 场速率=2×Vsync速率。
i.cpB∈CPB是彩色原色。(在(x,y)的三原色,其中x=X/(X+Y+Z)并 且y=Y/(X+Y+Z),其是与一些专用的有关的)。
j.wprB∈CPB是白点参考(也就是参考白色)。
k.gB∈[1.0,+∞)∪{SD-601,HD-709}是传输功能的指数(也就是灰度系 数)。
1.TB.YUV→RGB是从Y’U’V’到R’G’B’的彩色空间转换矩阵。
m. bpo B R + 是黑点偏移(也就是启动电压)。
n. wpo B R + 是白点偏移。
o. pm B Z 2 8 { 0 . . 0 × ff } 是视频显现目标模式优先次序,其中模式优先借助 于{0×01..0×ff}范围来表示,其中0×01表示最优先的并且0×ff表示优先权最 小的模式或者不相干的模式优先。0×00是为未知的/未初始化的保留的。
某个视频模式通过一个工业广泛使用的标准化(实际的和形式的)来限定。 这些模式可以包括下面在表2中列出的那些,以及下列由VESA通用定时公式 (GTF)限定的连续的模式组:
βGTF≡βGTF,VR∪βGTF,HR∪βGTF,CR
其中:
β GTF , VR { ( vr B , GT F VR B HR B ( vr B , o B , w B , h B ) , GTF VR B CR B ( vr B , o B , w B , h B ) ) |
vr B VR B }
β GTF , HR { ( GT F HR B VR B ( hr B , o B , w B , h B ) , hr B , GTF HR B CR B ( hr B , o B , w B , h B ) ) |
hr B HR B }
β GTF , CR { ( GT F CR B HR B ( cr B , o B , w B , h B ) , GTF CR B VR B ( vr B , o B , w B , h B ) cr B ) |
cr B CR B }
表2-模式 名称  宽度  (像素)  高度  (像素) 像素编码格式 Vsync 速率 (Hz)  Hsync速  率(Hz)  像素时钟速  率(Hz) YUV->RGB 转换矩阵 内容排序 NTSC_M  720  525 YPbPr模拟_YC 模拟_复合 60000/ 1001  15734.27  3579545  601 隔行的 NTSC_J  720  525 相同 60000/ 1001  15734.27  3579545  601 隔行的 NTSC_443  720  525 相同 60000/ 1001  15734.27  4433618.75  601 隔行的 PAL_B  720  625 YPbPr 模似_YC 模拟_复合 RGB601_复合同步 50  15,625  4433618.75  601 隔行的 PAL_B1  720  625 相同 50  15,625  4433618.75  601 隔行的 PAL_G  720  625 相同 50  15,625  4433618.75  601 隔行的 PAL_H  720  625 相同 50  15,625  4433618.75  601 隔行的 PAL_I  720  625 相同 50  15,625  4433618.75  601 隔行的 PAL_D  720  525 相同 60000/ 1001  15,734  3575611.49  601 隔行的 PAL_N  720  625 相同 50  15,625  4433618.75  601 隔行的 PAL_NC  720  625 相同 50  15,625  3582056.25  601 隔行的 SECAM_B  720  625 相同 50  15,625  601 隔行的 SECAM_D  720  625 相同 50  15,625  601 隔行的 SECAM_G  720  625 相同 50  15,625  601 隔行的 SECAM_H  720  625 相同 50  15,625  601 隔行的 SECAM_K  720  625 相同 50  15,625  601 隔行的 SECAM_K1  720  625 相同 50  15,625  601 隔行的 SECAM_L  720  625 相同 50  15,625  601 隔行的 SECAM_L1  720  625 相同 50  15,625  601 隔行的 EIA_861_1  720  480 YPbPr(NTSC定时) Y8Cb8Cr8 Y10Cb10Cr10 (R10G10B10未来) 60000/ 1001  601 隔行的 EIA_861_2  640  480 相同 60000/ 1001  601 逐行的 EIA_861_3  720  480 相同 60000/ 1001  601 逐行的 EIA_861_4  1280  720 相同 60000/ 1001  709 逐行的 EIA_861_5  1920  1080 相同 60000/ 1001  709 隔行的 EIA_861_6  720  480 YPbPr Y8Cb8Cr8 60  601 隔行的 Y10Cb10Cr10 (R10G10B10未来) EIA_861_7  640  480 相同 60  601 逐行的 EIA_861_8  720  480 相同 60  601 逐行的 EIA_861_9  1280  720 相同 60  709 逐行的 EIA_861_10  1920  1080 相同 60  709 隔行的 EIA_861A_1  720  576 YPbPr (PAL定时) sRGB Y8Cb8Cr8 Y10Cb10Cr10 (sR10G10B10未来) 50  601 隔行的 EIA_861A_2  720  576 相同 50  601 逐行的 EIA_861A_3  1280  720 相同 50  709 逐行的 EIA_861A_4  1920  1080 相同 50  709 隔行的 EIA_861B_1  1920  1080 YPbPr sRGB Y8Cb8Cr8 Y10Cb10Cr10 (sR10G10B10未来) 24000/ 1001  709 逐行的 EIA_861B_2  1920  1080 相同 24  709 逐行的 EIA_861B_3  1920  1080 相同 25  709 逐行的 EIA_861B_4  1920  1080 相同 30000/ 1001  709 逐行的 EIA_861B_5  1920  1080 相同 30  709 逐行的 EIA_861B_6  1920  1080 相同 50  709 逐行的 EIA_861B_7  1920  1080 相同 60  709 逐行的 IBM_1  720  400 sRGB 70  N/A 逐行的 IBM_2  720  400 相同 88  N/A 逐行的 IBM_3  640  480 相同 60  N/A 逐行的 IBM_4  1024  768 相同 87  N/A 隔行的 APPLE_1  640  480 相同 67  N/A 逐行的 APPLE_2  832  624 相同 75  N/A 逐行的 APPLE_3  1152  870 相同 75  N/A 逐行的 VESA_1  640  480 相同 72  N/A 逐行的 VESA_2  640  480 相同 75  N/A 逐行的 VESA_3  800  600 相同 56  N/A 逐行的 VESA_4  800  600 相同 60  N/A 逐行的 VESA_5  800  600 相同 72  N/A 逐行的 VESA_6  800  600 相同 75  N/A 逐行的 VESA_7  1042  768 相同 60  N/A 逐行的 VESA_8  1042  768 相同 70  N/A 逐行的 VESA_9  1042  768 相同 75  N/A 逐行的 VESA_10  1280  1024 相同 75  N/A 逐行的 VDMT_1  640  350 相同 85  37,900  31500000  N/A 逐行的 VDMT_2  640  400 相同 85  37,900  31500000  N/A 逐行的 VDMT_3  720  400 相同 85  37,900  35500000  N/A 逐行的 VDMT_4  640  480 相同 60  31,500  25175000  N/A 逐行的 VDMT_5  640  480 相同 72  37,900  31500000  N/A 逐行的 VDMT_6  640  480 相同 75  37,500  31500000  N/A 逐行的 VDMT_7  640  480 相同 85  43,300  36000000  N/A 逐行的 VDMT_8  800  600 相同 56  35,100  36000000  N/A 逐行的 VDMT_9  800  600 相同 60  37,900  40000000  N/A 逐行的 VDMT_10  800  600 相同 72  48,100  50000000  N/A 逐行的 VDMT_11  800  600 相同 75  46,900  49500000  N/A 逐行的 VDMT_12  800  600 相同 85  53,700  56250000  N/A 逐行的 VDMT_13  1024  768 相同 43  35,500  44900000  N/A 隔行的 VDMT_14  1024  768 相同 60  48,400  65000000  N/A 逐行的 VDMT_15  1024  768 相同 70  56,500  75000000  N/A 逐行的 VDMT_16  1024  768 相同 75  60,000  78750000  N/A 逐行的 VDMT_17  1024  768 相同 85  68,700  94500000  N/A 逐行的 VDMT_18  1152  864 相同 75  67,500  108000000  N/A 逐行的 VDMT_19  1280  960 相同 60  60,000  108000000  N/A 逐行的 VDMT_20  1280  960 相同 85  85,900  148500000  N/A 逐行的 VDMT_21  1280  1024 相同 60  64,000  108000000  N/A 逐行的 VDMT_22  1280  1024 相同 75  80,000  135000000  N/A 逐行的 VDMT_23  1280  1024 相同 85  91,100  157500000  N/A 逐行的 VDMT_24  1600  1200 相同 60  75,000  162000000  N/A 逐行的 VDMT_25  1600  1200 相同 65  81,300  175500000  N/A 逐行的 VDMT_26  1600  1200 相同 70  87,500  189000000  N/A 逐行的 VDMT_27  1600  1200 相同 75  93,800  202500000  N/A 逐行的 VDMT_28  1600  1200 相同 85  106,300  229500000  N/A 逐行的 VDMT_29  1792  1344 相同 60  83,640  204750000  N/A 逐行的 VDMT_30  1792  1344 相同 75  106,270  261000000  N/A 逐行的 VDMT_31  1856  1392 相同 60  86,330  218250000  N/A 逐行的 VDMT_32  1856  1392 相同 75  112,500  288000000  N/A 逐行的 VDMT_33  1920  1440 相同 60  90,000  234000000  N/A 逐行的 VDMT_34  1920  1440 相同 75  112,500  297000000  N/A 逐行的
9.Γ是一组视频显现源模式,γ=(wΓ,hΓ,fΓ,Γ,nΓ,pmΓ),也被称为显现源 模式,其中:
a.wΓ∈S\{0}是视频显现源模式宽度。
b.hΓ∈S\{0}是视频显现源模式高度。
C.fΓ∈FΓ是视频显现源模式单元格式,其中:
i.FΓ是一组视频显现源模式单元格式,其可被分为两种主要子类:
1.图形视频显现源模式单元格式,由最近的DirectX发行中的 D3DFORMAT可枚举类型限定。
2.文本视频显现源模式单元格式,由TBD限定的。
d.Γ∈ψΓ是光栅化的图形滤波技术,其在再现期间使用,其中:
i.ψΓ是一组光栅化的图形滤波技术,由最近DirectX发行中的 D3DDDIMULTISAMPLE_TYPE可枚举类型限定。
e.nΓ∈N是主表面链接长度(也就是主表面链接中的表面数量)。
f. pm Γ Z 2 8 { 0 . . 0 × ff } 是视频显现源模式优先次序,其中模式优先借助于 {0×01..0×ff}范围表示,其中0×01表示最优先的并且0×ff表示优先权最小的 模式或者不相干的模式优先。0×00是为未知的/未初始化的保留的。
10.ρMT∈TM是监视器连通性拓扑-也就是从监视器映射到它们所连接的 视频显现目标。
11.ρTK∈KT是视频显现目标-到-编解码器拓扑-也就是从视频显现目标 映射到驱动它们的视频显现编解码器-由在显示卡上的可编程交叉线限定。
12.ρK∑∈∑K是视频显现编码器-到-源拓扑-也就是从视频显现编解码器映 射到视频显现源,从该视频显现源该编解码器是流视觉内容。
13.ρT∑∈∑T是视频显现目标-到-源拓扑2540-也就是从视频显现源映射到 视频显现目标,从视频显现源的下面的视频输出编解码器到视频显现目标的是 流视觉内容,视频显现内容是流到视频显现目标的。
14.PTK∑≡{ρTK∑|(ρTK∑≡ρTKορK∑)∧支持的( ρTK)∧支持的(ρK∑)∧ρTK∑实现ρT∑} 是一组支持的VidPN拓扑- 也就是从一对包括一组视频显现目标和一组视频显现源的 到用于这对的相应的支持的VidPN实施组,其中每个实施明确地规定其中视频 显现源经过视频输出编解码器被布置到它们驱动的视频显现目标的方式。 被称为 VidPN实施,其中:
a. 是一组VidPN视频显现目标。
b. 是一组VidPN视频显现源。
c. ρ T γ Σ γ Σ T 是VidPN拓扑。
16.ρ∑V∈V∑和ρV∑∈∑V在图像和下面的视频显现源之间是1∶1对应-也就 是ρ∑V和ρV∑在∑和V之间是同形性。
17. 是多-编解码器视频显现目标模式组矢量-也就是从视频输 出编解码器映射到它们支持的视频显现目标模式组。
18. 是多-目标视频显现目标模式组矢量-也就是从视频显现目 标映射到它们支持的视频显现目标模式组。
19. 是多-监视器视频监视器源模式组矢量-也就是从监视器映 射到它们支持的视频监视器源模式组。
20. 是多-源视频显现源模式组矢量-也就是从视频显现源映射 到它们支持的视频显现源模式组。
21. β K B K 是多-编解码器视频显现目标模式矢量-也就是从视频输出编 解码器映射到视频显现目标模式,其中这些编解码器对与它们连接的视频显现 目标的视频输出进行驱动。
22. 是多-输出视频显现目标模式矢量-也就是从视频 显现目标映射到视频显现目标模式,该视频显现目标模式的视频显现目标正被 与它们连接的视频输出编解码器视频显现驱动。
23. 是多-监视器视频显现目标模式矢量-也就是从监 视器映射到视频显现目标模式,该视频显现目标模式被与它们连接的视频显现 目标视频显现目标驱动。
24. θ M × B Θ M × B 是多-监视器显示模式矢量-从监视器映射到作为下面的视 频显现目标模式在监视器的输入上被驱动的结果而在监视器上显示的显示模 式。
25. γ Σ Γ Σ 是多-源视频显现源矢量-也就是从视频显现源映射到这些源设 置的视频显现源模式。
26.一个VidPN实施被报告当且仅当已经在所有的它的视频显现源上成功 地选择了视频显现源模式时是部分起作用的。
27.一个VidPN实施被报告当且仅当它是部分起作用的并且在所有的它的 视频显现目标上已经成功地选择了视频显现目标模式时是起作用的。
实施例37-示范性的定义
假定涉及一组复杂的相关性,多个形式的定义可以用于一些实施。某一(图 像,输出)对可以因子分解到视频显现源中,视频显现源可以显示输出到视频 输出编解码器中(例如CRTC DAC,TMDS)和视频显现目标,视频显现目标可 以显示视频输出到显示卡上(例如HD-15、DVI、S-视频)。
一个显示模式可以因子分解到一个视频显现源模式中,视频显现源模式可 以借助于图形栈数据正提供将要显示给用户的再现内容来规定主表面格式,并 且视频显现目标模式可以规定在各个视频输出上被驱动的视频信号格式。
多-输出显示卡的视频显现能力借助于视频显现网络(VidPN)的概念被模 拟,视频显现网络借助于一个VidPN拓扑可以使一组视频显现源与一组视频显 现目标联系起来。当且仅当视频显现源模式固定在每个它的视频显现源上时, 一个VidPN可被认为是部分起作用的。当且仅当它是部分起作用的并且视频显 现目标模式固定在每个它的视频显现目标上时,一个VidPN可被认为是起作用 的。
在一个单独的视频显现源和一个单独的视频显现目标之间的关联可被称为 一个视频显现路径。在一个单独的视频显现源和多个视频显现目标之间的关联 可被称为一个视频显现多路径。
具有上述的适当的定义,在显示模式管理的环境中的视频小端口的工作可 被描述为管理一个有效VidPN,该有效VidPN在它正驱动的各个显示卡上显示视 频显现配置的状态,以及以在于增加建立起作用的每个均可被设置为有效的 VidPN为目的的客户请求服务。
实施例38-示范性的多视频输出显示模式解决方案
改变依附于多输出显示卡的监视器上的显示模式可以不再遭受该领域的 “单-输出操作”限制,其中视频小端口开发者必须在某个视频驱动器栈之间实 施复杂的同步,该视频驱动器栈正驱动相同的下面的物理装置,并且上述改变 可以被由一个单独视频驱动器栈服务的已知显示卡上的起作用的VidPN实施的 明确的以交换为基础的提交代替。
多个输出视频显示模式解决方案可以取决于多个标准诸如:(a)硬件限制 (例如由连接到各个视频显现目标的监视器支持的视频模式设置);(b)操作的 模式考虑(例如由连接到各个视频显现目标的监视器推荐的特定视频模式); (c)性能考虑(例如通过视频输出编解码器减少视频存储器总线的连接而获得 的再现性能改进);(d)能量管理考虑(例如通过禁止未利用的视频输出编解码 器而获得的显示卡的能量消耗的减少,并且减小它的功率);(e)热损耗考虑(例 如,通过在多个单元之间持续交换开关而获得的显示卡的操作的温度的降低, 其中一个单元当另一单元操作时被给出一个机会冷却,并且反之亦然,因此从 不会增加由某个希望的上边界之外的显示卡辐射的J/sec数量);以及(f)可用 性考虑(例如,在一个用户的初始监视器上驱动监视器的较佳模式比在第二监 视器上驱动它更重要,假定所有的监视器不能以较佳模式驱动,其中哪个监视 器是初始的确定是用户特定的操作模式的功能)。例如,已知DVILCD、S-视频 HDTV以及HD-15 CRT/3D眼镜,一个用户可能更喜欢在具有最好的透明度的 DVILCD上工作/读取/浏览,在具有最大有效像素区域的S-视频HDTV上看电 影,并且在支持最高更新速率和最好的博弈经验的HD-15 CRT/3D上玩游戏。
实施例39-示范性的解空间
一个包含所有可能的VidPN实施的解空间对于一个简单的穷举法枚举可能 是难处理的,该解空间具有所有可能的在它的目标上可利用的视频显现目标模 式设置和所有的各种分配可利用的视频显现源模式通过它的输入的方式,每个 视频显现源模式的可利用性是将要在各个输出上驱动的视频模式的功能(基于 例如在下面的视频编解码器中存在硬件缩放这样的因素)。一个用于T视频显现 目标、K编解码器和∑视频显现源的通用情况的非穷举法可以类似于典型的三 分裂的图表匹配问题,其通称为NPC(例如,不存在以多项式时间运行并且得 到一个理想的或者全局最佳的解决方案的已知算法)。确定一个尽可能接近理想 解决方案的合适的解决方案是可取的。
实施例40-示范性的复杂性
确定哪个配置是起作用的可能是一项复杂的工作。例如,对于一个已知的 配置,需要考虑以下方面:
1.哪个视频输出编解码器可用于驱动哪个视频输出
2.哪个视频编解码器可用于将哪个再现目标的主表面转换成一个视频信号
3.通过视频输出的可能的视频模式设置分配是什么
4.每个视频编解码器可以驱动的可能的视频模式是什么
5.通过再现目标的可能的图形再现模式分配是什么
这些问题中的一些使得搜索复杂在于编解码器是稀少资源,并且通常存在 编解码器少于输出,因此对于复制图像,只要有可能,通过多个输出共用一个 编解码器是有利的。这样的一个方法中将同样的视频模式强制在两个也许不工 作的监视器上的情况有下降趋势,如果监视器不具有两个都支持的公共的视频 模式(例如一个CRT可以上到1280×1024并且一个LCD只可以支持1600× 1200)。即使它们共用一个视频模式,这可能不是驱动监视器的理想的方式,因 为该视频模式可能不是它们的较佳模式。例如,一个投影机支持640×480、800 ×600、1024×768(本地的)和1280×1024。该LCD支持640×480、800×600、 1024×768、1280×1024和1400×1050(本地的)。在这两个装置之间共用一个 编解码器只有一个驱动器可以在它的较佳视频模式被驱动。
或者,一个LCD可以支持1024×768、1280×1024、1600×1200(较佳的)。 并且一个投影机可以支持640×480、800×600(较佳的)以及1024×768。共 用装置两个监视器都不能在它的较佳模式被驱动。
另外,不是所有的编解码器都是相等的制造的。有时一个显示卡具有不同 的编解码器,其中一个编解码器能够工作在更多的模式或者实现比其他模式更 好的某些模式。当在某个编解码器上具有可利用的某种模式时这种情况可能变 得更加复杂(例如,一个编解码器可以只支持16比特,并且另一编解码器可以 只支持32比特模式)。
最后,当交叉线可用于重定编解码器到不同输出的路径,具有该视频输出 的拓扑的编解码器的限制和不兼容性可导致某种编解码器被限制到某种输出子 集(例如CRTC不能驱动DVI,并且TMDS不能驱动S-视频的HD-15)。
为了避免枚举所有可能的实施的穷举方法,一个集中方法可代替使用。
实施例41-将确定委托给视频驱动器的示范性优势
在此描述的任一实施例中,确定一个特定的临时配置是否对于视频适配器 是起作用的可以由(例如委托给)装置驱动器来完成。一个可能的替代方案是 构造一个可以通过一组视频适配器(例如所有已知的视频适配器)处理确定的 通用情况的一般解决方法。然而,这样的一个解决方法需要用于处理大量情况 的逻辑电路
代替的,通过将确定委托给装置驱动器,该装置驱动器可以更加轻便并且 不需要解决一般的情况。例如,该装置驱动器不必包含用于处理相应的视频适 配器不能实现(例如在硬件中不存在)的情况。因此,该装置驱动器的尺寸可 以被减小并且它的性能(例如速度)可以增加(例如与一般的解决方法相比)。
实施例42-在拓扑和源/目标之间的示范性比较
一个拓扑可被作为一个可配置的资源对待,其中选项(例如视频显现路径) 可并行地配置。与那些其中只有单个选项(例如源/目标模式)可被立刻配置的 视频显现源/目标相比。在一个已知的模式组中的模式可能相互排斥,然而显现 路径不是必定相互排斥,但是可能是。
实施例43-示范性方法
两个可能的方法包括一个基于查询的方法和一个基于横越的方法。一个基 于查询的方法可以包含查询一个用于满足OS提供的一组要求的解决方法的显 示器微端口。一个基于横越的方法可以包含通过增加地建立一个起作用的 VidPN实施来穿过解空间,该起作用的VidPN实施具有分别对于它的目标和源 而选择的希望的视频显现目标和源模式。确定一个VidPN的接近最佳的实施可 以留给视频小端口来完成。
可替代地,一个OS可以为视频小端口提供:(1)对于具有连接到它的一 个监视器的每个VidPN目标所需要的视频显现目标模式组(例如一个显示卡不 能暴露依附的监视器不支持的视频信号模式),符合DDI方的模式可以在视频显 现目标模式枚举期间被OS确认;以及(2)基于一个提供的优先化方案支持监 视器的较佳的监视器源模式的视频显现目标模式组方针,其中通过该方针显示 器微端口可以找到一个VidPN实施,在该实施中一个较佳的监视器源模式首先 在一个更可取的监视器上被支持,该方针由于该较佳的监视器源模式在连接到 该系统的每个监视器上被支持因而是理想的解决方法。
查找在VidPN源上被支持的图形视频显现源模式的接近最佳的分配可以留 给图像子系统的客户(例如外壳)来完成,其中通过在规定的操作状态下API 报告显示卡的性能,一个驱动器仅仅暴露横越各个视频显现源模式组分配解空 间的性能。可以采用象渴望的一样简单的或者象以图表为基础的搜索一样复杂 的方法。
实施例44一示范性的计算环境
图26和下列讨论企图提供一个可实现所公开的技术的示范性计算环境的 简短的、概括的说明。虽然不需要,所公开的技术将在可由一个个人计算机(PC) 执行的计算机可执行的指令的一般环境诸如程序模中描述。通常地,程序模 块包括执行特定任务或实现特定抽象数据类型的例行程序、程序、目标、元件、 数据结构等等。此外,所公开的技术可以利用其它的计算机系统配置来实施, 其它的计算机系统配置包括手持装置、多处理器系统、基于微处理器的或者可 编程的消费者电子设备、网络PC、微型计算机、大型机计算机等等。所公开的 技术也可能在分布式的计算环境中实践,其中通过经一个通信网络连接的远程 处理装置执行任务。在一个分布式的计算环境中,程序模块可以设置在本地和 远程存储器存储装置中。
参照图26,一个用于实现所公开的技术的示范性系统包括一个以传统的 PC2600的形式的通用的计算装置,其包括一个处理单元2602、一个系统存储器 2604以及一个将包括系统存储器2604耦合到处理单元2602的各种系统部件的 系统总线2606。该系统总线2606可以是以下几种总线结构中的任一种:存储器 总线或存储器控制器、外围总线以及使用各种总线结构中任一种的本地总线。 该系统存储器2604包括只读存储器(ROM)2608和随机存取存储器(RAM) 2610。一个基本输入/输出系统(BIOS)2612包含帮忙信息在PC2600中的元件 之间传输的基本常规程序,被存储在ROM2608中。
该PC 2600还包括一个用于从硬盘(未示出)读和写到硬盘的硬盘驱动器 2614、一个用于从可移动磁盘2617读和写到该磁盘的磁盘驱动器2616以及一 个用于从可移动光盘2619(诸如CD-ROM或其它的光介质)读并写到该光盘 的光盘驱动器2618。该硬盘驱动器2614、磁盘驱动器2616和光盘驱动器2618 分别通过硬盘驱动器接口2620、磁盘驱动器接口2622和光驱动器接口2624连 接到系统总线2606。该驱动器和它们的相关的计算机可读介质提供用于PC2600 的计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。可以存 储PC可存取的数据的其它类型的计算机可读介质,诸如磁带、闪存卡、数字视 频盘、CD、DVD、RAM、ROM等等也可用在该示范性操作环境中。
多个程序模块可存储在硬盘、磁盘2617、光盘2619、ROM 2608或者RAM 2610上,其包括一个操作系统2630、一个或多个应用程序2632、其它程序模块 2634以及程序数据2636。一个用户可以通过输入装置(未示出)诸如键盘2640 和指示装置2642(诸如一个鼠标)输入命令和信息到PC 2600中。其它输入装 置(未示出)可以包括一个数字相机、麦克、操纵杆、游戏垫、卫星反射器扫描仪等等。这些和其它的输入装置总是通过一个串行端口接口2644连接到处 理单元2602,串行端口接口2644耦合到系统总线2606,但是也可以通过其它 接口诸如并行端口、游戏端口或者通用串行总线(USB)被连接。一个监视器 2646或者其它类型的显示装置也通过一个接口诸如视频适配器2648连接到系 统总线2606。可包括其它外围输出装置诸如扬声器和打印机(未示出)。
该PC 2600可以在一个使用逻辑连接到一个或多个远程计算机诸如远程计 算机2650的网络环境中操作。该远程计算机2650可以是另一个PC、一个服务 器、一个路由器、一个网络PC或者一个同等装置或者其它的公共网络节点,并 且通常包括上述的与PC 2600有关的许多或所有元件,虽然在图26中只示出一 个存储器存储装置2652。在图26中描述的逻辑连接包括一个局域网(LAN) 2654和一个广域网(WAN)2656。这样的网络环境在办公室、企业范围的计算 机网络、企业内部互联网和因特网中是普遍现象。
当用于LAN网络环境中时,PC 2600通过一个网络接口2658连接到LAN 2654。当用于WAN网络环境中时,PC 2600通常包括一个调制解调器2660或 者其它的用于通过WAN 2656诸如因特网建立通信的装置。该调制解调器2660 经过串行端口接口2644连接到系统总线2606,该调制解调器可以是内置的或外 置的。在一个网络环境中,与个人计算机2600有关的描述的程序模块或其部分 可以存储在远程存储器存储装置中。该示出的网络连接是示范性的,并且可以 使用在计算机之间建立通信链接的其它装置。
实施例45-示范性的说明
下面是用于实现一个支持在此描述的各种技术的视频显现网络的示范性说 明。在该实施例中,一个视频显现网络有时称为一个“视频显现网络”或“VidPN”。 一个用于视频显现网络的特定的配置有时称为一个“VidPN实施”。
所描述的功能可被组成编程接口,诸如API或DDI。这样的一个接口可以 通过一个用于通过客户诸如一个操作系统存取的装置驱动器来实现。
表3-功能EnumAvailVidPNTargets 名称 EnumAvailVidPNTargets 目的 枚举可利用的VidPN目标,其由显示卡支持,已知规定的VidPN 实施,每个实施使用AddvideoPresentPathTovidPNTopology能被加到它的拓扑,其中每个目标表示在 显示卡上的一个独特的视频输出。 原型 NTSTATUS EnumAvai IVidPNTargets ( [in]VIDPN_IMPL       hVidPNImpl, [out]PDWORD              pdwNumOfAvailVidPTs, [out]   PVIDEO_PRESENT_TARGET*  ppAvailVidPTs 输入 名称 说明 --- --- 输出 名称 说明 hVidPNImpl VidPN实施,在其环境中调用者对查找到由显示卡支持 的可利用的VidPN目标感兴趣。 应注意,这些不仅仅目标,该目标是规定的VidPN实施 的一部分。 如果hVidPNimpi=NULL,将返回该显示卡可以通过至少 一个VidPN支持的视频显现目标。 pdwNumOfAvailVidPTs 可利用的视频显现目标的数量(VidPTs)。 ppAvailVidPTs 用于阵列的地址的占位符,该阵列包含将要由显示器微 端口初始化的可利用的视频显现目标描述符。 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了查询。 STATUS_VIDEO_INVALID_VIDPN_IMPL 已经提供了无效的VidPN实施处理。 STATUS_NO_MEMORY 显示器微端口没能为视频显现目标的被请求的阵列分配 足够的系统存储器。 副作用 无 分配所 有权语 义 显示器微端口负责分配缓冲器的尺寸: pdwNumOfAvailVidPTs  *  sizeof(VIDPT) 用于在系统存储器中使用DlpAllocatePool的视频显现目标阵列。显示装载器负责在缓冲器利用完毕 时就解除该缓冲器的分配。 注释 视频显现目标以它们的ID来排序,最小的在第一位,从0到pdwNumOfAvailvidPTs-1。 应注意,任何数量的枚举的视频显现目标的都可以相互排斥,意味着它们对于通过一个单个VidPN 的同时使用不一定都是可利用的,并且将它们中的一个用于任何给定VidPN的拓扑可以使得无法获 得一个或多个另一个枚举的视频显现目标。
表4-功能ConstrainModesOnVidPNTargets 名称 ConstrainModesOnVidPNTargets 目的 在每个枚举的视频显现目标上设置视频模式约束。 原型 NTSTATUS ConstrainModesOnVidPNTargets ( [in]     PVIDEO_MODE_SET     pvmsMonitor ): 输入 名称 说明 pvmsMonitor 由连接到各个VidPT的视频显现目标的监视器支持的视频 模式组阵列,并且因此被允许在这些输出上。 入口包含NULL意味着没有约束强加在各个视频输出的模 式上(也就是没有监视器出现在那个输出上)。OS将NULL- 约束的输出作为禁止使用的对待,并且显示器微端口应该考 虑下调DAC的功率,该DAV驱动那个视频输出以便保存 显示卡的能量消耗。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地设置了约束。 副作用 无 分配所有权语 义 显示器微端口必须将提供的每目标视频模式约束复制一个私人备份,由于一旦要求被成功地完 成,参数的存储器可被OS解除分配。 注释 该DDI允许OS指定在每个视频显现目标上被允许的视频模式组以与EnumAvailVidPNTargets 所枚举的顺序相同的顺序排序。OS需要使用该在监视器HPD事件上的DDI以便通知显示器 微端口关于在显示卡的视频显现目标上的视频模式约束中的变化。 应注意,如果没有出现监视器描述符,OS将使用一个视频模式的硬编码列表,该视频模式被 期望在给定类型(例如用于DVI、HD-15、BNC等等的IBM_*、APPLE*、VESA_*、VDMT_*和 EIA_*模式;用于S-视频、RCA、RF等等的NTSC_*、PAL_*和SECAM_*模式。)的视频输出 上被支持。 第三方硬-编码列表操作(例如从这样的列表移除视频模式或者加入视频模式到这样的列表中) 将在OS中被支持以便满足可扩展性和适应性需要。
表5-功能EnumAvailVidPNSources 名称 EnumAvailVidPNSources 目的 枚举显示卡支持的可利用的VidPN源,已知规定的VidPN实施,每个 VidPN实施使用AddVideoPresentPathTovidPNTopology能被加入到它的 拓扑,其中每个源表示在显示卡上的视频输出编解码器的输入。 原型 NTSTATUS EnumAvailVidPNSources ( [in]  VIDPN_IMPL                                hVidPNImpl, [out]PDWORD                              pdwNumOfAvailVidPSs, [out]  PVIDEO_PRESENT_SOURCE*           ppAvailVidPSs ); 输入 名称 说明 hVidPNImpl VidPN实施,在其环境中调用者对查找到 显示卡支持的可利用的VidPN源感兴趣。 应注意,这些不仅仅是源,该源是规定的 VidPN实施的一部分。 如果hVidPNImpl=NULL,将返回最大数 量的视频显现源,(并且由此认为)显示 卡可以在至少一个VidPN被支持视频显 现。 输出 名称 说明 pdwNumOfAvailVidPSs 多个可利用的显现源,其可加到规定的 VidPN的拓扑。 ppAvailVidPSs 用于阵列的地址的占位符,该阵列包含将 由显示器微端口初始化的可利用的视频 显现源描述符。 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了查询。 STATUS_VIDEO_INVALID_ VIDPN_IMPL 已经提供了无效的VidPN实施处理。 STATUS NO MEMORY 显示器微端口没能为所要求的视频显现 源阵列分配足够的系统存储空间。 副作用 无 分配所 有权语 义 显示器微端口负责分配缓冲器的尺寸: pdwNumOfAvailVidPSs  *  sizeof(VIDPS) 用于在系统存储器中使用DlpAllocatePool的视频显现目标阵列。显示装 载器负责在缓冲器利用完毕时就解除该缓冲器的分配。 批注 视频显现源从0到dwNumOf Outputs-1被识别,被以最小的优先方式 排序。应注意,该DDI不会返回所有的源,只返回那些可以加到规定 的VidPN的源。 最大数量的支持的视频显现源是VidPN的实施的功能。特别地,每一 个在两个或多个视频显现目标之间共用视频输出编解码器(用于复制- 图像),一个附加的视频显现源可被显示卡支持。如果在复制-图像组合 中的每个输出被一个单独的视频编解码器驱动,那么当可利用的编解 码器的数量降低时,视频显现源的最大数量降低。因此,基本上,该 DDI返回未被规定的VidPN的实施使用的和不能与那个VidPN使用的 视频输出编解码器结合的视频输出编解码器的数量。 为了得到当前VidPN可以扩展到的附加的视频显现源的最大数量视频 显现,忽略由GetActiveVidPNImpl返回的VidPN实施处理。
表6-功能CreateVidPNImpl 名称 CreateVidPNImpl 目的 建立一个VidPN实施 原型 NTSTATUS CreateVidPNImpl ( [in]  PVIDPN_TOPOLOGY           pVidPNTopology, [in]    PDWORD                pdwPreferredMonitors, [out]   PVIDPN_IMPL                       phVidPNImpl ); 输入 名称 说明 pVidPNTopology 将要建立的VidPN的拓扑 pdwPreferredMonitors 监视器的优先化,从最佳的到优先权最 小的。当在满足规定的拓扑的VidPN实 施中选择时,显示器微端口必须首先尽 力支持在最佳的监视器上的较佳的视 频模式,理想的情况是监视器(例如所 有的)可以以它们较佳的模式的被驱 动。 输出 名称 说明 phVidPNImpl 用于处理规定的VidPN的实施的占位 符。 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_VIDPN_TOP OLOGY_NOT_SUPPORTED 规定的VidPN拓扑不被显示卡支持。 STATUS_VIDEO_INVALID VIDPN_TOPOLOGY 规定的VidPN是无效的(例如输出不能 同时指向两个视频显现源)。 副作用 无 分配所 有权语 显示器微端口必须将提供的监视器的优选化方案复制一个私人备份,由 于一旦成功地完成了该请求,参数的存储器可被OS解除分配。 注释 该DDI建立由显示器微端口保持的表示一个VidPN的临时目标。下列 操作可以随后在这样的一个VidPN目标上执行: 1.AddVideoPresentPathTovidPNTopology  -将一个视频显现(目标、 源)组合加入它中。 2.RemovePresentTargetFromVidPNTopolgy -从它移除一个视频显现目 标。 3.RemovePresentSourceFromVidPNTopology -从它移除一个视频显现 源。 4.DisposeOfVidPNImpl                  -处理它 5.CommitVidPNimpl                     -将显示卡的有效VidPN 设置到它。 见各个DDI的更详细的描述。
表7-功能GetActiveVidPNImpl 名称 GetActiveVidPNImpl 目的 将一个处理返回给VidPN实施,该VidPN实施是基于当前设置在显 示卡上的VidPN。 原型 NTSTATUS GetActiveVidPNImpl ( [out]  PVIDPN_IMPL phActiveVidPNImpl ); 输入 名称 说明 --- --- 输出 名称 说明 phActiveVidPNImpl 对有效的VidPN的实施的处理。 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了查询。 副作用 无 批注 当希望在现存的VidPN中加入或者移除一个VidPN组合时该DDI是 有用的,胜于建立一个完全的新的配置。该DDI实质上是 GetActiveVidPNTopology和CreateVidPNImpl的组 合。 确定附加的最大数量的视频显现源也是有用的(并且因此认为)显示 卡可以支持给定的当前VidPN(见更详细的 EnumAvailvidPNSources)。
表8-功能GetActiveVidPNTopology 名称 GetActiveVidPNTopology 目的 返回有效VidPN的拓扑。 原型 NTSTATUS GetActiveVidPNTopology ([out]  PVIDPN_TOPOLOGY*  ppActiveVidPNTopology ); 输入 名称 说明 --- --- 输出 名称 说明 ppActiveVidPNTopology 用于有效的VidPN的拓扑描述符的占 位符。 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了查询。 STATUS_NO_MEMORY 显示器微端口没能为请求的VidPN分 配足够的系统存储空间。 副作用 无 分配所有 权语义 显示器微端口负责使用DlpAllocatePool在系统存储器中为VidPN分 配足够大的缓冲器。显示装载器负责在缓冲器利用完毕时就解除该缓 冲器的分配。 注释 这DDI对确定有效VidPN来说是有益的。特别地,需要利用BIOS 获得可以被导入的初始VidPN拓扑显示卡。
表9-功能DisposeOfVidPNImpl 名称 DisposeOfVidPNImpl 目的 处理规定的VidPN实施。 原型 NTSTATUS DisposeOfVidPNImpl ( [in]  VIDPN_IMPL hVidPNImpl ); 输入 名称 说明 hVidPNImpl 将被处理的VidPN实施。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定的VidPN实施是无效 副作用 在成功地完成的基础上,该规定的VidPN实施被无效的再现。 批注 当不再需要使用CreateVidPNImpl或GetActiveVidPNImpl建立的 VidPN实施时,OS应该使用该DDI。
表10-功能CommitVidPNImpl 名称 CommitVidPNImpl 目的 设置有效的VidPN到该规定的VidPN实施。 原型 NTSTATUS CommitVidPNImpl ( [in]    VIDPN_IMPL  hVidPNImpl ); 输入 名称 说明 hVidPNImpl 将要被设置为有效的VidPN实 施。 输出 名称 说明 --- --- 状态 名称 说明 STATUS SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID_VID PN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_MODE_NOT_ PINNED_ON_VIDPN_TARGET 视频模式没有被固定在一个或 多个视频显现目标上。只有一个 起作用的VidPN实施可被提交。 STATUS_VIDEO_MODE_NOT_ PINNED_ON_VIDPN_SOURCE 视频显现源模式没有被固定在 一个或多个视频显现源上。只有 一个起作用的VidPN实施可被 提交。 副作用 在成功地完成的条件下,在该显示卡上的该有效的VidPN改变到规 定的VidPN实施。接着根据视频模式和图形模式怎样被设置在 VidPN实施上,使用PinModeOnVidPNSource(s)和PinVideoModes将 适当的视频模式和图形模式设置在视频显现目标和视频显现源上。 注释 OS使用该DDI将当前VidPN改变到一个该OS集中到其上的起作 用的VidPN实施。
表11-功能AddVideoPresentPathToVidPNTopology 名称 AddVideoPresentPathToVidPNTopology 目的 将一个视频显现目标-到-源组合加到规定的VidPN实施。 原型 NTSTATUS AddVideoPresentPathToVidPNTopology ( [in]  VIDPN_IMPL                 hVidPNImpl,[in]  PVIDEO_PRESENT_PATH pVidPresentPathToAdd,[in]PDWORD   pdwPreferredMonitors ); 输入 名称 说明 hVidPNImpl 将要加入视频-输出-到-再现-目标组合的VidPN实 施。 pVidPresentPathToAdd 将被加入的视频显现路径(也就是目标到源组合)。 pdwPreferredMonitors 监视器的优先化,从最佳的到优先权最小的。当在 满足规定的拓扑的各种VidPN实施中选择时,显示 器微端口首先必须尽力支持在最佳的监视器上的较 佳视频模式,理想的情况是监视器(例如所有的) 可以以它们的较佳模式被驱动。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_TARGET 规定的视频显现目标是无效的。 STATUS_VIDEO_INVALID_VIDPN_SOURCE 规定的视频显现源是无效的。 STATUS_VIDEO_VIDPN TOPOLOGY_NOT_SUPPORTED 请求的VidPN不被显示卡支持。 副作用 在成功地完成的条件下,规定的VidPN组合加到规定的VidPN实施。否则,不作出改变。 注释 OS使用该DDI增加地发展一个VidPN拓扑,一次增加一个显现路径。
表12-功能RemovePresentTargetFromVidPNTopology 名称 RemovePresentTargetFromVidPNTopology 目的 从规定的VidPN实施的拓扑中移除规定的视频显现目标。 原型 NTSTATUS RemovePresentTargetFromVidPNTopology ( [in]  VIDPN  IMPL  hVidPNImpl, [in]  VIDPT_ID    idTargetToRemove ); 输入 名称 说明 hVidPNImpl 要从中移除视频显现目标的 VidPN实施。 idTargetToRemove 要移除的视频显现目标。 输出 名称 说明 --- --- 状态 名称 说明 STATUS  SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_TARGE T 规定的视频显现目标是无效 的。 副作用 在成功地完成的条件下,与规定的视频显现目标相应的VidPN组合从规 定的VidPN实施的拓扑中移除。否则,不作出改变。 如果视频显现源作为输出移动的一部分被移除,在得到的VidPN中的另 一视频显现源上的可利用的图形视频显现源模式组可以发展为包括新 模式。 注释 OS使用该DDI从一个VidPN实施中移除一个视频显现目标。
表13-功能RemovePresentSourceFromVidPNTopology 名称 RemovePresentSourceFromVidPNTopology 目的 从规定的VidPN实施的拓扑中移除规定的视频显现源。 原型 NTSTATUS RemovePresentSourceFromVidPNTopology ( [in]  VIDPN_IMPL   hVidPNImpl, [in]  VIDPS_ID      idSourceToRemove ); 输入 名称 说明 hVidPNImpl 要从中移除视频显现源的VidPN实施。 idSourceToRemove 要移除的视频显现源。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVAL ID_VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_INVAL ID_VIDPN_SOURCE 规定的视频显现源是无效的。 副作用 在成功地完成的条件下,与规定的视频显现源相应的VidPN组合从规定 的VidPN实施的拓扑中移除。否则,不作出改变。 如果成功,在得到的VidPN中的另一视频显现源上的可利用的图形视频 显现源模式组可以发展为包括新模式。 注释 OS应该使用该DDI从VidPN实施的拓扑中移除一个视频显现源。
表14-功能EnumCurrentlyAvailVidPNTargetModeSets 名称 EnumCurrentlyAvailVidPNTargetModeSets 目的 枚举在规定的VidPN实施中每个视频显现目标上的可利用的视频显 现目标模式组,其是由连接到这些输出的各个监视器支持的。 原型 NTSTATUS EnumCurrentlyAvailVidPNTargetModeSets ( [in]    VIDPN_IMPL            hVidPNImpl, [out]  PVIDEO_MODE_SET*  ppvmsAvailable ); 输入 名称 说明 hVidPNImpl VidPN实施,在其上可利用的视频模式的 视频显现目标组必须被枚举。 输出 名称 说明 ppvmsAvailable 用于视频模式组的阵列的占位符,这些模式 组在规定的VidPN实施中的视频显现目标 上该视频模式组被支持。 视频模式设置以它们的输出ID排序(最小 的在第一)。 如果在一个给定视频输出(例如已经禁止使 用的输出)上没有视频模式被支持,显示器 微端口应该为它的视频模式组返回NULL。 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALI D_VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_NO_MEMOR Y 显示器微端口没能为请求的VidPN分配足 够的系统存储空间。 分配所 有权语 义 显示器微端口负责使用DlpAllocatePool为系统存储器中可利用的视 频模式设置分配足够大的缓冲器。一旦缓冲器利用完毕,显示装载 器就负责解除该缓冲器的分配。 副作用 无 注释 应注意,显示卡可能不支持由监视器支持的所有视频模式。因此不 管它感知到每个监视器支持的视频模式的事实,OS必须枚举视频模 式。 OS应该确认枚举的视频模式组是各个监视器支持的视频模式组的 子集。 应注意,在一个视频显现目标上设置一个枚举的视频模式可以使在 另一视频输出上枚举的视频模式无效。这是在一个单独调用中所有 视频显现目标上枚举可利用的(例如所有的)视频模式组、以便客 户能从可能可利用的选项中选择的基本原因。
表15-功能PinModeOnVidPNTarget 名称 PinModeOnVidPNTarget 目的 将规定的视频显现目标模式固定在规定的VidPN目标上,保证显示器端口不会枚举(并且允许将要固定的)视频显现 目标模式在使该模式无效的其它VidPN目标上。 原型 NTSTATUS PinModeOnVidPNTarget ([in]    VIDPN_IMPL                            hVidPNImpl, [in]  VIDEO_PRESENT_TARGET                    pTargetToPinModeOn, [in]    DWORD                                         dwVideoPresentTargetModeToPin, [out]PBOOLEAN                     pbOtherVideoPresentTargetModesInvalidated ); 输入 名称 说明 hVidPNImpl VidPN实施,在其视频显现目标上规定的视频显现目标模 式将要被固定。 pTargetToPinModeOn 视频显现目标,在其上规定的视频显现目标模式将要被固 定。 dwVideoPresentTargetModeToPin 来自规定的视频显现目标上的可利用的模式的组中的视频 显现目标模式的索引,其通过 EnumCurrentlyAvailVidPNTargetModeSets枚举,将要被固 定。 pbOtherVideoPresentTargetModes Invalidated 用于判决的占位符,其如果是真,则表示在一些其它视频 显现目标上的至少一个视频显现目标模式已经被无效,并 且OS需要使用EnumCurrentlyAvailVidPNTargetModeSets 重新查询可利用的视频显现目标模式。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_TARGET 规定的视频显现目标是无效的。 STATUS_VIDEO_INVALID_VIDEO_PRESENT_TARGET_ MODE 规定的视频显现目标模式不作为可利用的枚举。 STATUS_VIDEO_PRESENT_TARGET_MODE_ALREADY_ PINNED 视频显现目标模式已经固定在规定的视频显现目标上。调 用者必须首先使用UnpinModeOnvidPNTarget解除所述的 视频显现目标模式。 STATUS_VIDEO_ENUMERATED_VIDPN_TARGET_MO DESET_CHANGE D 在规定的视频显现目标上以前枚举的可利用的视频显现 目标模式的组已经改变。OS必须通过 EnumCurrentlyAvailVidPN TargetModeSets来重新枚举该 组。 STATUS VIDEO MODE NOT PINNED ON VIDPN SOURCE 视频模式没有固定在一个或多个视频显现源上。部分起 作用的VidPN实施必须被提供。 副作 用 无 注释 OS使用该DDI为VidPN实施中的每个视频显现目标固定一个视频显现目标模式,在使用CommitVidPNImpl启动该实 施之前。 应注意,视频显现目标必须具有一个在他们之上选择的视频模式。 除了固定的模式,当在另一视频显现目标上的视频显现目标模式被设置时,在视频显现目标上的视频显现目标模式经 受无效。显示器微端口应该保证没有视频显现目标模式被枚举和/或可固定(从以前的枚举)在规定的VidPN实施中的 任一视频显现目标上,其中该视频显现目标模式能使任一固定的视频显现目标模式无效。
表16-功能UnpinModeOnVidPNTarget 名称 UnpinModeOnVidPNTarget 目的 解除在规定的VidPN实施的规定的视频显现目标上的当前选择的视频显现目标模式的固定,使显示器微端口免于禁止在 另一视频显现源上的视频显现目标模式的责任,在另一视频显现源上的视频显现目标模式能使在规定的视频显现目标上 的以前选择的视频显现目标模式无效。 原型 NTSTATUS UnpinModeOnVidPNTarget (     [in]  VIDPN_IMPL              hVidPNImpl,     [in]  PVIDEO_PRESENT_TARGET   pTargetToUnpinModeOn,     [out] PBOOLEAN                pbNewVideoPresentTargetModesAvailal   ); 名称 说明 hVidPNImpl VidPN实施,在其视频显现目标上该规定的视频显现目标模式将 要被解除固定。 pTargetToUnpinModeOn VidPN目标,在其上该规定的视频显现目标模式将要被解除固 定。 pbNewVideoPresentTargetModesAvailable 用于判决的占位符,其如果是真,则表示在一些 其它视频显现目标上至少一个新视频显现目标模 式已经变得可利用了,并且OS需要使用 EnumCurrentlyAvaiIVidPNTargetModeSets来重新 查询可利用的视频显现目标模式。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_TARGET 规定的视频显现目标是标是无效的。 STATUS_VIDEO_MODE_NOT_PINNED_ON_VIDPN_ TARGET 规定的视频显现目标不具有一个选择的模式。 副作用 无 注释 当不再对支持规定的视频显现目标上的规定的视频显现目标模式感兴趣时,OS使用DDI。例如,这将是如果一个固定 的视频显现目标模式使另一视频显现目标上的希望的视频显现目标模式无效的情况。
表17-功能PinModeOnEachVidPNTarget 名称 PinModeOnEachVidPNTarget 目的 为规定的VidPN实施中的每个视频显现目标固定一个模式 原型 NTSTATUS PinModeOnEachVidPNTarget ( [in]  VIDPN_IMPL  hVidPNImpl, [in]  PDWORD          pdwVideoModesToPin ); 输入 名称 说明 hVidPNImpl VidPN实施,在其视频显现目标上规定的视频模式将 被固定。 pdwVideoModesToPin 使用 EnumCurrentlyAvailVidPNTargetMode Sets 枚举的进入各个视频模式组的视频模式 索引的阵列。 视频模式以它们的视频输出ID(最小的 在第一)排序。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 已经成功地完成了请求。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定的VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDEO_PRESENT_TARGET_MODE 一个或多个规定的视频模式ID是无效的。 STATUS_VIDEO_ENUMERATED_VIDPN_TARGET_ MODESET_CHANGED 在规定的视频输出上以前枚举的可利用 的视频模式的组已经改变。OS必须通过 使用 EnumCurrentlyAvailVidPNTargetModeSets 重新枚举该设置。 副作用 无 注释 这个DDI从可在相应输上获得的视频模式组中的VidPN中每一个视频输出固定一个视频模式,利用 EnumCurrentlyAvailVidPNTargetModeSets枚举。 注意,由于可利用的视频模式组仅依赖于驱动其的视频输出编解码器,因此将一个视频模式固定到一个视频输出没有使 其他视频显现目标上的任何先前枚举的视频模式失效,并因此仅使规定VidPN实施上的失效。 一个给定的视频模式可变成无效的唯一方法是如果显示卡的操作能力由于其电源管理状态变化而改变。
表18-功能EnumCurrentlyAvailVidPNSourceModeSets 名称 EnumCurrentlyAvailVidPNSourceModeSets 目的 枚举规定VidPN实施中每一个视频显现源上的可利用的视频显现源模式组 原型 NTSTATUS EnumCurrentlyAvailVidPNSourceModeSets ( [in]  VIDPN_IMPL                       hVidPNImpl, [out] PVIDEO_PRESENT_SOURCE_MODE_SET*  pprmsAvailable ); 输入 名称 说明 hVidPNImpl VidPN实施,从该VidPN实施上看必须枚举可利 用的视频显现源模式组。 输出 名称 说明 pprmsAvailable 在规定VidPN实施中视频显现源上可利用的视频 显现源模式组阵列。 视频显现源模式组被它们的视频显现源ID排序 (最小的优先)。 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMP L 规定VidPN实施是无效的。 STATUS_NO_MEMORY 显示器微端口不能给所请求的VidPN分配足够的 系统存储器。 STATUS_VIDEO_MODE_NOT_PINNED_ ON_VIDPN_TAGRET 视频模式未固定到一个或更多视频显现目标上。 必须提供半功能VidPN。 副作用 无。 分配所有权 语义 显示器微端口负责利用DlpAllocatePool为系统存储器中可利用的图形模式组阵列分配足够大 的缓存器。显示器装载器负责在一旦缓存器利用完毕就释放这个缓存器。 注释 在调用DDI之前,OS必须为每一个VidPN目标选出一个视频显现目标模式。 注意,由于显示卡可以进行h/w缩放(在它的视频输出编解码器中),因而视频模式组的空间 分辨率不必与(图形)视频显现源模式的空间分辨率相应。 显示器微端口不必报告需要基于缩放的GPU的(图形)视频显现源模式。这个功能性将在OS 的图形子系统层中完成。 显示器微端口不必报告选择它们将防止另一个视频显现源支持至少一个视频显现源模式的(图 形)视频显现源模式。
表19-功能PinModeOnVidPNSource 名称 PinModeOnVidPNSource 目的 将规定视频显现源模式固定到规定VidPN实施的规定视频显现源上,保证显示器微端口不会枚举(以及允许被固定)将使这 个模式失效的其他视频显现源上的视频显现源模式。 原型 NTSTATUS PinModeOnVidPNSource ( [in]  VIDPN_IMPL             hVidPNImpl, [in]  PVIDEO_PRESENT_SOURCE  pSourceToPinModeOn [in]  DWORD                  dwVideoPresentSourceModeToPin [out] PBOOLEAN ); 输入 名称 说明 hVidPNImpl VidPN实施,在其的视频显现目标上规定视频显现源模式将被固定。 pSourceToPinModeOn 规定视频显现源模式将被固定到其上的视频显现源。 dwVideoPresentSourceModeToPin 利用EnumCurrently AvailVidPNSourceModeSet枚举的规定VidPN源上可利用的模式组的视 频显现源模式的索引,用于固定。 pbOtherVideoPresentSourceModesInvalidated 用于判决的占位符,如果为真则表示在某些其他VidPN源上至少一个视 频显现源模式已失效,并且OS需要利用 EnumCurrentlyAvailVidPNSourceModeSet再查询可利用的视频显现源模 式。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_SOURCE 规定VidPN源是无效的。 STATUS_VIDEO_INVALID_VIDEO_PRESENT_ SOURCE_MODE 规定视频显现源模式未作为可利用的来枚举。 STATUS_VIDEO_MODE_ALREADY_PINNED_ ON_VIDPN_SOURCE 视频显现源模式已被固定到规定VidPN源上。调用者必须首先利用 UnpinModeOnVidPNSource对所述的视频显现源模式进行去固定。 STATUS_VIDEO_ENUMERATED_VIDPN_TAR GET_MODESET_CHANGED 先前枚举的规定VidPN源上可利用的视频显现源模式组已被改变。OS 必须利用EnumCurrentlyAvailVidPNSourceModeSets重新枚举该组。 副作用 无。 注释 在利用CommitVidPNImpl启动这个实施之前,OS利用这个DDI为VidPN实施中的每一个视频显现固定一个视频显现源 模式。 注意,视频显现目标必须具有一个在它们上选择的视频模式。 当另一视频显现源上的视频显现源模式被设定时,不同于被固定的模式,视频显现源上的视频显现源模式无效。显示器微端 口应该保证没有会使任何被固定的视频显现源模式无效的视频显现源模式被枚举和/或可被(从先前枚举)固定到规定VidPN 实施中的任一视频显现源上。
表20-功能UnpinModeOnVidPNSource 名称 UnpinModeOnVidPNSource 目的 对规定VidPN实施中规定视频显现源上的当前选择的视频显现源模式进行去固定,使显示微端口从责任中释放,从而 禁止在其他视频显现源上的视频显现源模式,其中这些视频显现源模式会使先前选择的规定视频显现源上的视频显现 源模式无效。 原型 NTSTATUS UnpinModeOnVidPNSource ( [in]VIDPN_IMPL               hVidPNImpl, [in]PVIDEO_PRESENT_SOURCE   pSourceToUnPinModeOn, [out]PBOOLEAN                pbNewVideoPresentSourceModesAvailable ); 输入 名称 说明 hVidPNImpl VidPN实施,规定视频显现源模式将在该实施的视频显现目标上被 去固定。 pSourceToUnPinModeOn 规定视烦显现源模式将从其上被去固定的视频显现源。 pbNewVideoPresentSourceModesAvailable 用于判决的占位符,其如果为真则表示某些其他视频显现源上的至 少一个新视频显现源模式已变成可利用的并且OS需要利用 EnumCurrentlyAvailVidPNSourceModeSets重新查询可利用的的视 频显现源模式。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_SOURCE 规定视频显现源是无效的。 STATUS_VIDEO_MODE_NOT_PINNED_ON_V IDPN_SOURCE 规定视频显现源不具有一个选定的模式。 副作用 无 注释 当DDI不再对支待规定视频显现源上的规定视频显现源模式感兴趣时,OS利用这个DDI。这种情况可能发生在例如 在一个被固定的视频显现源模式使另一个视频显现源上的一个要求的视频显现源模式无效时。
表21-功能PinModeOnEachVidPNSource 名称 PinModeOnVidPNSource 目的 在单个调用中,为VidPN实施中的每一个视频显现源固定一个视频显现源模式。 原型 NTSTATUS PinModeOnEachVidPNSource ( [in]  VIDPN_IMPL          hVidPNImpl, [in]  PDWORD              pdwRenderingModeIDsToPin ); 输入 名称 说明 hVidPNImpl VidPN实施,规定视频显现源模式将被固定到该实施的视频显现 源上。 pdwRenderingModeIDsToPin 将被固定的视频显现源模式的视频显现源模式ID阵列,其中每 一个模式来自相应的视频显现源的模式组,其通过EnumCurrently AvailVidPNSourceModeSet枚举。 视频显现源模式通过它们的视频显现源的ID排序(最小的优先)。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDEO_PRESENT_S OURCE_MODE_ID 规定视频显现源模ID中一个或多个是无效的。 STATUS_VIDEO_ENUMERATED_VIDPN_TARG ET_MODESET_CHANGED 先前枚举的规定视频显现源上的可利用的视频显现源模式组已改 变。OS必须利用EnumCurrentlyAvailVidPNSourceModeSets重新 枚举该组。 STATUS_VIDEO_PRESENT_SOURCE_MODES_ ARE_MUTUALLY_EXCLUSIVE 一个视频显现源上至少一个规定视频显现源模式使规定VidPN中 另一个视频显现源上另一个规定视频显现源模无效。 STATUS_VIDEO_MODE_NOT_PINNED_ON_VI DPN_TARGET 视频模式未被固定到一个或更多视频显现目标上。必须提供半功 能VidPN实施。 副作用 无。 注释 这个DDI为VidPN中每一个视频显现源固定来自利用EnumCurrentlyAvailVidPNSourceModeSets枚举的、相应视频显现 源上可利用的视频显现源模式组中的一个视频显现源模式。 当已知用于给定VidPN的规定再现多模式工作时,这个DDI将被使用,例如在OS将一个已知的用户记录在先前遇到 的监视器HPD-事件-感知的VidPN中或上的情况中,其中先前使用的配置被持续并且可以被再次使用。 注意,如果任一个视频显现源具有一个利用PinRenderMode固定到该视频显现源上的视频显现源模式时,这个模式将被 忽略并且假设规定视频显现源模式可以被设定,那么调用将会成功。这个与PinRenderMode的调用语义不同,在 PinRenderMode中如果视频显现源模式已被选择在规定视频显现源上时,调用将会失败。
表22-功能EnumCurrentlyAvailFilteringTechniqueSets 名称 EnumCurrentlyAvailFilteringTechniqueSets 目的 枚举规定功能VidPN实施中的每一个视频显源上可利用的滤波技术组。 原型 NTSTATUS EnumCurrentlyAvailFilteringTechniqueSets ( [in]  VIDPN_IMPL                            hVidPNImpl, [out]  PFILTERING_TECHNIQUES_SET*  ppftsAvailable ); 输入 名称 说明 hVidPNImpl VidPN实施,从该VidPN实施上看必须枚举可利用的滤 波技术组。 输出 名称 说明 ppftsAvailable 规定VidPN实施中视频显现源上可利用的滤波技术组 阵列。 视频显现源模式组以它们的视频显现源ID排序(最小 的优先)。 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定VidPN实施是无效的。 STATUS_NO_MEMORY 显示器微端口不能给所请求的VidPN分配足够的系统 存储器。 STATUS_VIDEO_MODE_NOT_PINNED_ON_VIDPN_TA RGET 视频模式未被固定到一个或更多视频显现目标上。必须 提供一个功能VidPN实施。 STATUS_VIDEO_MODE_NOT_PINNED_ON_VIDPN_SO URCE 视频显现源模式未被固定到一个或更多视频显现源上。 必须提供一个起作用的VidPN实施。 副作用 无。 分配所有 权语义 显示器微端口负责利用DlpAllocatePool为系统存储器中可利用的图形模式组阵列分配足够大的缓存器。显示器装载器 负责在一旦缓存器利用完毕就释放这个缓存器。 注释 在调用这个DDI之前,OS必须为每一个视频显现目标固定一个视频模式,并为规定VidPN实施中的每一个视频显现 源固定一个视频显现源模式(即需要构造一个功能VidPN)。
表23-功能PinFilteringTechniqueOnVidPNSource 名称 PinFilteringTechniqueOnVidPNSource 目的 将规定滤波技术固定到规定VidPN实施的规定视频显现源上的,保证显示器微端口不会将滤波技术枚举(并且允许被设 定)在会使这个滤波技术无效的其他视频显现源上。 原型 NTSTATUS PinFilteringTechnique ( [in]  VIDPN_IMPL  hVidPNImpl, [in]VIDPS_ID     idSourceToPinModeOn, [in]DWORD        dwFilteringTechniqueToSelect [out]  PBOOLEAN    pbOtherFilteringTechniquesInvalidated ); 输入 名称 说明 hVidPNImpl VidPN实施,其中规定视频显现源模式被固定到该VidPN实 施的视频显现目标上。 idRenderTargetToSelectModeOn 视频显现源,其中规定滤波技术将被固定到其上。 dwFilteringTechniqueToSelect 来自规定视频显现源上的可利用的滤波技林组的滤波技术的 索引,其通过EnumCurrentlyAvailFilteringTechniqueSets枚举, 用于固定。 pbOtherFilteringTechniquesInvalidated 用于判决的占位符,其如果为真表示某些其他视频显现源上 至少一个滤波技术已被无效,并且OS需要利用 EnumCurrentlyAvailFilteringTechniqueSets重新查询可利用的 滤波技术。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_SOURCE 规定视频显现源是无效的。 STATUS_VIDEO_INVALID_FLTRTECHNIQUE 规定滤波技术未被枚举为可利用的滤波技术。 STATUS_VIDEO_FLTRTECHNIQUE_ALREADY_PIN NED 滤波技术已被固定到规定视频显现源上。调用者必须首先利 用UnpinFilteringTechnique对所述的滤波技术进行去固定。 STATUS_VIDEO_ENUMERATED_TECHNIQUE_SET_ CHANGED 先前枚举的源视频显现源上的可利用滤滤技术组已改变。 OS必须利用EnumCurrentlyAvailFilteringTechniqueSets重新枚 举该组。 STATUS_VIDEO_MODE_NOT_PINNED_ON_VIDPN_ TARGET 视频模式已被固定到一个或更多视频显现目标上。必须提供 一个功能VidPN实施。 STATUS_VIDEO_MODE_NOT_PINNED_ON_VIDPN_ SOURCE 视频显现源模式未被选择到一个或更多视频显现源上。必须 提供一个功能VidPN实施。 副作用 无。 注释 在利用CommitVidPNImpl将这个实施设置为当前配置之前,OS利用这个DDI为VidPN实施中的每一个视频显现源选 择一个滤波技术。 注意,这个步骤是任选的,并且如果没有明确规定,驱动器将使用默认滤波技术——即无滤波。 注意,视频显现目标必须具有一个被固定到它们上的视频模式,并且视频显现源具有一个被固定到它们上的视频显 现源模式——即VidPN必须是起作用的。 当另一个视频显现源上的滤波技术被设定时,除了固定技术外,视频显现源上的滤波技术被无效。显示器微端口应保证 没有会使任一固定无效的滤波技术源举和/或可被固定(从先前枚举)到规定VidPN实施中任一视频显现源上。
表24-功能UnpinFilteringTechniqueOnVidPNSource 名称 UnpinFilteringTechniqueOnVidPNSource 目的 对规定VidPN实施的规定视频显现源上的当前被固定的滤波技术去固定,将显示器微端口从责任中释放,以便不接受 会使先前所选择的规定视频显现源上的滤波技术无效的其他视频显现源上的滤波技术。 原型 NTSTATUS UnpinFilteringTechnique ( [in]  VIDPN_IMPL   hVidPNImpl, [in]VIDPS_ID      idSourceToUnpinTechniqueOn, [out]PBOOLEAN      pbNewFilteringTechniquesAvailable ); 输入 名称 说明 hVidPNImpl VidPN实施,其中规定视频显现源模式将被固定到其视频显现 目标上。 idSourceToUnpinTechniqueOn 视频显现源,其中规定视频显现源模式将被固定到其上。 pbNewFilteringTechniquesAvailable 用于判决的占位符,其中如果为真,那么至少一个新滤波技术 对某些其它视频显现源来说已变成可利用的滤波技术,并且OS 需要利用EnumCurrentlyAvailFilteringTechniqueSets重新查询可 利用的滤波技术。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMPL 规定VidPN实施是无效的。 STATUS_VIDEO_INVALID_VIDPN_SOURCE 规定视频显现源是无效的。 STATUS_VIDEO_FLTRTECHNIQUE_NOT_PINNE D_ON_VIDPN_SOURCE 规定视频显现源不具有被固定的滤波技术。 副作用 无。 注释 当DDI不再对支持规定视频显现源上的规定滤波技术感兴趣时,OS利用这个DDI。这可能在例如如果一个被选择的滤 波技术使另一个视频显现源上的一个要求的滤波技术无效时发生。 当视频显现源上没有选择滤滤技术时,默认的滤波技术是“无滤波”,其由一个零滤波技术ID表示。
表25-功能PinFilteringTechniqueOnEachVidPNSource 名称 PinFilteringTechniqueOnEachVidPNSource 目的 在单个调用中,为VidPN实施中每一个视频显现源固定一个滤波技术。 原型 NTSTATUS PinFilteringTechniques ( [in]  VIDPN_IMPL        hVidPNImpl, [in]  PDWORD            pdwFilteringTechniqueIDsToPin ); 输入 名称 说明 hVidPNImpl VidPN实施,其中规定滤波技术将被固定到其视频显现源上。 pdwFilteringTechniqueIDsToPin 来自相应视频显现源的滤波技术组的滤波技术ID阵列。 滤滤技术以它们的视频显现源的ID排序(最小的优先)。 输出 名称 说明 --- --- 状态 名称 说明 STATUS_SUCCESS 请求已成功完成。 STATUS_VIDEO_INVALID_VIDPN_IMP L 规定VidPN实施是无效的。 STATUS_VIDEO_INVALID_FLTRTECH NIQUE_ID 一个或更多规定滤波技术ID是无效的。 STATUS_VIDEO_FLTRMODES_ARE_M UTUALLY_EXCLUSIVE 一个视频显现源上的至少一个规定滤波技术使规定VidPN中另一个视频显 现源上的另一个规定波波技术无效。 STATUS_VIDEO_MODE_NOT_PINNED _ON_VIDPN_TARGET 视频模式未被固定到一个或更多视频显现目标上。必须提供一个功能 VidPN实施。 STATUS_VIDEO_MODE_NOT_PINNED _ON_VIDPN_SOURCE 视频显现源模式未被固定到一或更多视频显现源上。必须提供一个功能 VidPN实施。 副作用 无。 注释 这个DDI从利用EnumCurrentlyAvailFilteringTechniqueSets枚举的相应视频显现源上可利用的滤波技术组中为VidPN中 每一个视频显现源选择一个滤波技术。零滤波技术ID表示无滤波。 当已知用于给定VidPN的经过视频显现源的规定分配的滤技术工作时,这个DDI将被使用,例如在OS将一个已知 的用户记录在先前遇到的监视器HPD事件感应的VidPN中或上的情况中,其中先前使用的配置可以被再次使用。
表26-功能Filtering_Techniques_Set 名称 Filtering_Techniques_Set 目的 滤波技术设定 定义 Typedef struct_FILTERING_TECHNIQUES_SET { DWORD                dwNumOfFilteringTechniques; PFILTERING_TECHNIQUE  pFilteringTechniques; } FILTERING_TECHNIQUES_SET,*PFILTERING_TECHNIQUES_SET; 字段 名称 说明 dwNumOfFilteringTechniques 组中滤波技术的数量。 pFilteringTechniques 组元素的阵列(通过dwNumOfFilteringTechniques确定条目的数量)。 注释 滤波技术组被用来显现给定VidPN实施中视频显现源上的可利用的滤波技术组。
表27-功能Filtering_Technique 名称 Filtering_Technique 目的 滤波技术描述符。 定义 Typedef enum_FILTERING_TECHNIQUE { TBD } VIDEO_MODE,    *PVIDEO_MODE; 注释 滤波技术规定在把被再现的帧转换成视频模式场时利用何种滤波算法GPU和/或视频输出编解码器来处理视频显现源的 主表面。
表28-功能Video_Present_Target 名称 Video_Present_Target 目的 视频显现目标描述符。 定义 Typedef struct_VIDPT { VIDEO_OUTPUT_TECHNOLOGY     VideoOutputTechnology, VIDEO_OUTPUT_HPD_AWARENESS  VideoOutputHPDAwareness; DWORD                       dwCharacteristics; } VIDEO_PRESENT_TARGET,    *PVIDEO_PRESENT_TARGET; 字段 名称 说明 VideoOutputTechnology 视频输出技术的类型(见更详细的VIDEO_OUTPUT_TECHNOLOGY)。 VideoOutputHPDAwareness 视频输出的HPD感知的类型(见更详细的VIDEO_OUTPUT_HPD_AWARENESS)。 dwCharacteristics 描述视频输出的判决特征的位阵列,利用下列标记来定义:TBD。 注释 OS通过利用EnumAvailVidPNTargets对它们进行枚举为VidPN中每一个视频输出获取描述符。
表29-功能Video_Output_Technology 名称 Video_Output_Technology 目的 视频输出技术描述符。 定义 Typedef enum_VIDEO_OUTPUT_TECHNOLOGY {    VOT_Uninitialized =  0,    VOT_HD15          =  1,    VOT_DVI           =  2,    VOT_HDMI          =  3,    VOT_HDMI2         =  4,    VOT_Svideo_4pin   =  5,    VOT_SVideo_7pin   =  6,    VOT_RCA_composite =  7,    VOT_RCA_3component=  8,    VOT_BNC           =  9,    VOT_RF            = 10,    VOT_Other         =255 } VIDEO_OUTPUT_TECHNOLOGY,*PVIDEO_OUTPUT_ECHNOLOGY; 注释 视频输出技术被用来在监视器的描述符无效时确定由监视器支持的视频模式的硬编码列表。滤波技术是一个视频输出编 解码器输入特征。YUV->RGB转换是一个视频输出编解码器输出特征。IHV的默认推荐是:SD->601,HD->709。 这可能是错的,因此你希望能够替换它。
表30-功能Video_Output_HPD_Awareness 名称 Video_Output_HPD_Awareness 目的 视频输出HPD感知描述符。 定义 Typedef enum_VIDEO_OUTPUT_HPD_AWARENESS {    VOHPD_Uninitialized          =0,    VOHPD_None                   =1    VOHPD_DestructivelyPolled    =2,    VOHPD_NonDestructivelyPolled =3,    VOHPD_Interruptible          =4 } VIDEO_OUTPUT_HPD_AWARENESS,*PVIDEO_OUTPUT_HPD_AWARESS; 注释 视频输出HPD感知 被用来表示由显示卡在其视频输出上感测的监视器的连通性的等级。视频输出具有: 4.可中断的HPD感知 当月仅当显示器微端口可以异步地通知OS关于监视器的到达/离开。 5.非破坏地轮询HPD感知 当且仅当显示器微端口可以仅通过周期地轮询下面的的h/w而不引起视觉失真来向OS报 告监视器的到达/离开。 6.破坏地轮询HPD感知 当且仅当显示器微端口可以仅通过偶尔地轮询下面的h/w而不在每一个轮询上引起视觉失真 来向OS报告监视器的到达/离开。 7.无HPD感知 当且仅当显示器微端口不感知到监视器的到达/离开,并因此不能异步地通知OS或者同步地向OS 报告发生了这样的事件。
表31-功能Video_Present_Source 名称 Video_Present_Source 目的 视频显现源描述符。 定义 Typedefstruct_VIDEO_PRESENT_SOURCE { VIDEO_PRESENT_SOURCE_CONTENT_LAYOUT   ContentLayout; DWORD                         dwCharacteristics; } VIDEO_PRESENT_SOURCE,     *PVIDEO_PRESENT_SOURCE; 字段 名称 说明 dwCharacteristics 描述视频显现源的判决特征的位阵列,利用下列标记来定义:TBD。 ContentLayout 布局格式的类型,其中视频显现源的内容以这种格式被存储(见 VIDEO_PRESENT_SOURCE_CONTENT_LAYOUT的更详细说明) 注释 OS通过利用EnumAvailVidPNTargets对它们进行枚举为VidPN中每一个视频显现源获取描述符。
表32-功能Video_Present_Source_Content_Layout 名称 Video_Present_Source_Content_Layout 目的 视频显现源内容的布局格式。 定义 Typedef,enum_VIDEO_PRESENT_SOURCE_CONTENT_LAYOUT { VPSCL_Linear=1, VPSCL_Other =2, } VIDEO_PRESENT_SOURCE_CONTENT_LAYOUT,*PVIDEO_PRESENT_SOURCE_CONTENT_LAYOUT; 注释 视频显现源的布局格式被用来确定如何将图像的内容布置在相应主表面中。
表33-功能Video_Present_Path 名称 Video_Present_Path 目的 VidPN显现目标到源映射。 定义 Typedefstruct_VIDEO_PRESENT_PATH { PVIDEO_PRESENT_TARGET       pVidPT; PVIDEO_PRESENT_SOURCE        pVidPS; } VIDEO_PRESENT_PATH,         *PVIDEO_PRESENT_PATH; 注释 这个类型被用于描述一个从单一视频显现目标至VidPN中单一视频显现源的映射。
表34-功能VidPN_Topology 名称 VIDPN_TOPOLOGY 目的 VidPN拓扑描述符。 定义 Typedefstruct_VIDPN_TOPOLOGY { DWORD                      dwNumOfVidPresentPaths; VIDEO_PRESENT_PATH         arr_pVidPresentPaths[1]; } VIDPN_TOPOLOGY,   *PVIDPN_TOPOLOGY; 字段  名称 说明 dwNumOfVidPresentPaths 组中的视频模式数量。 arr_pVidPresentPaths  VidPN拓扑中视频显现路径的dwNumOfVidPresentPaths元素的阵 列。 注释 这种类型被用于描述CreateVidPNImpl以及GetCurrentVidPNTopology中的VidPN.
表35-功能VidPN_Impl 名称 VIDPN_IMPL 目的 VidPN实施执行。 定义 Typedef ULONG_PTR VIDPN_IMPL,*PVIDPN_IMPL 注释 这种类型被用来描述针对一个特殊VidPN通过示器微端口返回的VidPN实施的执行。
表36-功能Video_Present_Target_Mode_Set 名称 VIDEO_PRESENT_TARGET_MODE_SET 目的 视频模式设定描述符。 定义 typedefstruct_VIDEO_PRESENT_TARGET_MODE_SET { DWORD                              dwNumOfModes; VIDEO_PRESENT_TARGET_MODE           arr_vidptModes[1]; } VIDEO_PRESENT_TARGET_MODE_SET,        *PVIDEO_PRESENT_TARGET_MODE_SET; 字段 名称 说明 dwNumOfModes 组中的视频模式数量。 arr_vidptModes 视频模式组的dwNumOfModes元素阵列。 注释 视频模式组被用于描述给定VidPN实施中视频显现目标上的可利用的视频模式组。
表37-功能Video_Present_Target_Mode 名称 VIDEO_PRESENT_TARGET_MODE 目的 视频模式描述符。 定义 Typedef struct_VIDEO_PRESENT_TARGET_MODE { VIDEO_SIGNAL_STANDARD    vidStandard; SIZE      sizeTotal; SIZE      sizeActive; SIZE      sizeActiveOffset; SIZE      sizeTLDeltaVisibleFromActive; SIZE      sizeBRDeltaVisibleFromActive; FRACTIONAL_FREQUENCY             frqVSync; FRACTIONAL_FREQUENCY             frqHSync; DWORD                            dwPixelRate; VIDEO_SIGNAL_SCANLINE_ORDERING   ScanLineOrdering; BOOLEAN                          bIsGTF; BOOLEAN                          bIsPreferred; BOOLEAN                          bIsKnownToBeSupportedByMonitor, } VIDEO_PRESENT_TARGET_MODE,  *PVIDEO_PRESENT_TARGET_MODE; 字段 名称 说明 vidStandard 定义这个模式的视频模式标准(若需要)。 sizeTotal (像素中)总的区域尺寸。 sizeActive (像素中)有源区域尺寸,也被称作生产孔径。 sizeActiveOffset 有源区域的左上相对于总的区域的左上角的偏移。 sizeTLDeltaVisibleFromActive 来自视频信号的有源像素左上角的可视像素的左上角 的监视器屏幕的增量(delta)。 注意:默认=(0,0)。 sizeBRDeltaVisibleFromActive 来自视频信号的有源像素右下角的可视像素的右下角 的监视器屏幕的增量。 注意:默认=(0,0)。 frqVSync 垂直刷新频率(单位为Hz)。 frqHSync 水平刷新频率(单位为KHz)。 dwPixelRate 像素时钟速率。 ScanLineOrdering 扫描行排序(例如逐行、隔行)。 bIsPreferred 通过连接到相应视频输出的监视器判决规定这个模式 是否是优选的。 bIsGTF 判决规定这个模式的Vsync、Hsync以及时钟速率是否 遵守由VESA广义定时公式强加的约束。 bIsKnownToBeSupportedByMonitor 判决规定是否已知这个模式被已连接的监视器支持。通 过将这个字段设置为真,视频微端口将确保这个特殊的 模式幸免于基于模式删除的OS监视器性能,即使监视 器不将它列举为支持。 注释 视频模式是给定视频输出的操作模式,该视频输出驱动一个已连接的监视器,并且该视频模式 被一个内部视频输出编解码器驱动。 注意,这个描述符代替与视频模式相关的VIDEO_MODE_INFORMATION结构的子组。在 XDDM中,视频和视频显现源模式都被描述在这个结构中。LDDM分离这两个概念,并因此 分离它们的描述符。 当设置成意义明确视频标准时,视频标准字段vidStandard将被用于视频模式比较。注意,大部 分标准模式不遵守VESAGTF频率约束。 基于删除代替字段bIsKnownToBeSupportedByMonitor的监视器性能使得视频IHV规定额外的 视频模式,其中已知这些额外的视频模式可被附着它们的显示卡的监视器支持,但是这些额外 的显示模式并没在该监视器的描述符中规定。这对不具有描述符和关于它们的性能的信息的监 视器来说特别有用,其中这些描述符和信息而是以专有格式被产生最终综合解决方案的OEM 存储在BIOS中。这种替换应当保守地应用,并仅为在没有其他方法列举出一个已知的用于给 定的监视器的模式的情况而准备。视频微端口应该从不枚举一个作为被监视器描述符支持来列 表的模式,其中监视器描述符通过将这个字段设置成真来支持该模式的。
表38-功能Video_Signal_Standard 名称 VIDEO_SIGNAL_STANDARD 目的 视频模式标准描述符,列举Windows明确支持的标准。 定义 typedefenum_VIDEO_SIGNAL_STANDARD {   NTSC_M,NTSC_J,NTSC_443,   PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_N,PAL_NC,   SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAN_K,SECAM_K1,SECAM_L,SECAM_L1,   EIA_861_1,EIA_861_2,EIA_861_3,EIA_861_4,EIA_861_5,   EIA_861_6,EIA_861_7,EIA_861_8,EIA_861_9,EIA_861_10,   EIA_861A_1,EIA_861A_2,EIA_861A_3,EIA_861A_4,   EIA_861B_1,EIA_861B_2,EIA_861B_3,EIA_861B_4,EIA_861B_5,   EIA_861B_6,EIA_861B_7,   IBM_1,IBM_2,IBM_3,IBM_4,
    APPLE_1,APPLE_2,APPLE_3,     VESA_1,VESA_2,VESA_3,VESA_4,VESA_5,VESA_6,VESA_7,VESA_8,VESA_9,     VESA_10,VDMT_1,VDMT_2,VDMT_3,VDMT_4,VDMT_5,VDMT_6,VDMT_7,VDMT_8,     VDMT_9,VDMT_10,VDMT_11,VDMT_12,VDMT_13,VDMT_14,VDMT_15,VDMT_16,     VDMT_17,VDMT_18,VDMT_19,VDMT_20,VDMT_21,VDMT_22,VDMT_23,VDMT_24,     VDMT_25,VDMT_26,VDMT_27,VDMT_28,VDMT_29,VDMT_30,VDMT_31,VDMT_32,     VDMT_33,VDMT_34,     GTF,     Other } VIDEO_SIGNAL_STANDARD,*PVIDEO_SIGNAL_STANDARD; 注释 当适当时(即没有其他时),这个enum将被用来简化视频模比较。下表列出了这些模式的一些基本参数。     Name     Width  Height  Vsync    Hsync rate    Pixel clock     Content     NTSC_M     720    525    59.94    15,734.27    3,579,545       Interlaced     NTSC_J     720    525    59.94    15,734.27    3,579,545       Interlaced     NTSC_443   720    525    559.94   15,734.27    4,433,618.75    Interlaced     PAL_B      720    625    50       15,625       4,433,618.75    Interlaced     PAL_B1     720    625    50       15,625       4,433,618.75    Interlaced     PAL_G      720    625    50       15,625       4,433,618.75    Interlaced     PAL_H      720    625    50       15,625       4,433,618.75    Interlaced     PAL_D      720    625    50       15,625       4,433,618.75    Interlaced     PAL_D      720    525    59.94    15,734       3,575,611.49    Interlaced     PAL_N      720    625    50       15,625       4,433,618.75    Interlaced     PAL_NC     720    625    50       15,625       3,582,056.25    Interlaced     SECAM_B    720    625    50       15,625                       Interlaced     SECAM_D    720    625    50       15,625                       Interlaced     SECAM_G    720    625    50       15,625                       Interlaced     SECAM H    720    625    50       15,625                       Interlaced     SECAM_K    720    625    50       15,625                       Interlaced     SECAM_K1   720    625    50       15,625                       Interlaced     SECAM_L    720    625    50       15,625                       Interlaced     SECAM_L1   720    625    50       15,625                       Interlaced     EIA_861_1  720    480    59.94                                 Interlaced     EIA_861_2  720    480    60                                    Interlaced     EIA_861_3  640    480    59.94                                 Progressive     EIA_861_4  640    480    60                                    Progressive     EIA_861_5  720    480    59.94                                 Progressive     EIA_861_6  720    480    60                                    Progressive     EIA_861_7  1280   720    59.94                                 Progressive     EIA_861_8  1280   720    60                                    Progressive     EIA_861_9  1920   1920   59.94                                 Interlaced     EIA_861_10 1920   1080   60                                    Interlaced     EIA_861A_1 720    576    50                                    Interlaced     EIA_861A_2 720    576    50                                    Progressive     EIA_861A_3 1280   720    50                                    Progressive     EIA_861A_4 1920   1080   50                                    Interlaced     EIA_861B_1 1920   1080   23.96                                 Progressive
    EIA_861B_1    1920    1080    23.96                         Progreesive     EIA_861B_2    1920    1080    24                            Progressive     EIA_861B_3    1920    1080    25                            Progressive     EIA_861B 4    1920    1080    29.97                         Progressive     EIA_861B_5    1920    1080    30                            Progressive     EIA_861B_6    1920    1080    50                            Progressive     EIA_861B_7    1920    1080    60                            Progressive     IBM_1         720     400     70                            Progressive     IBM_2         720     400     88                            Progressive     IBM_3         640     480     60                            Progressive     IBM_4         1024    766     67                            Interlaced     APPLE_1       640     480     67                            Progressive     APPLE_2       832     624     75                            Progressive     APPLE_3       1152    870     75                            Progressive     VESA_1        640     480     72                            Progressive     VESA_2        640     480     75                            Progressive     VESA_3        800     600     56                            Progressive     VESA_4        800     600     60                            Progressive     VESA_5        800     600     72                            Progressive     VESA_6        800     600     75                            Progressive     VESA_7        1024    768     60                            Progressive     VESA_8        1024    768     70                            Progressive     VESA_9        1024    768     75                            Progressive     VESA_10       1280    1024    75                            Progressive     VDMT_1        840     350     85    37,900    31,500,000    Progressive     VDMT_2        640     400     85    37,900    31,500,000    Progressive     VDMT_3        720     400     85    37,900    35,500,000    Progressive     VDMT_4        640     480     60    31,500    25,175,000    Progressive     VDMT_5        640     480     72    37,900    31,900,000    Progressive     VDMT_6        640     480     75    37,500    31,500,000    Progressive     VDMT_7        640     480     85    43,300    36,000,000    Progressive     VDMT_8        800     600     56    35,100    36,000,000    Progressive     VDMT_9        800     600     60    37,900    40,000,000    Progressive     VDMT_10       800     600     72    48,100    50,000,000    Progressive     VDMT_11       800     600     75    46,900    49,500,000    Progressive     VDMT_12       800     600     85    53,700    56,250,000    Progressive     VDMT_13       1024    768     43    35,500    44,900,000    Interlaced     VDMT_14       1024    768     60    48,400    65,000,000    Progressive     VDMT_15       1024    768     70    56,500    75,000,000    Progressive     VDMT_16       1024    768     75    60,000    78,750,000    Progressive     VDMT_17       1024    768     85    68,700    94,500,000    Progressive     VDMT_18       1162    864     75    67,500    108,000,000   Progressive     VDMT_19       1280    960     60    60,000    108,000,000   Progressive     VDMT_20       1280    960     85    85,900    148,500,000   Progressive     VDMT_21       1280    1024    60    64,000    108,000,000   Progressive     VDMT_22       1280    1024    75    80,000    135,000,000   Progressive     VDMT_23       1280    1024    85    91,100    157,500,000   Progressive     VDMT_24       1600    1200    60    75,000    162,000,000   Progressive     VDMT_25       1600    1200    65    81,300    175,600,000   Progressive     VDMT_26       1600    1200    70    87,600    189,000,000   Progressive     VDMT_27       1600    1200    75    93,800    202,500,000   Progressive     VDMT_28       1600    1200    85    106,300   229,750,000   Progressive     VDMT_29       1782    1344    60    83,640    204,750,000   Progressive     VDMT_30       1792    1344    75    106,270   261,000,000   Progressive     VDMT_31       1856    1392    60    86,330    218,250,000   Progressive     VDMT_32       1820    1392    75    112,500   288,000,000   Progressive     VDMT_33       1920    1440    60    90,000    234,000,000   Progressive     VDMT_34       1920    1440    75    112,500   297,000,000   Progressive
表39-功能Video_Signal_Scanline_Ordering 名称 VIDEO_SIGNAL_SCANLINE_ORDERING 目的 扫描行排序描述符。 定义 typedefenum_VIDEO_SIGNAL_SCANLINE_ORDERING { SLO_Uninitialized                 =0, SLO_Progressive                   =1, SLO_Interlaced_UpperFieldFirst    =2, SLO_Interlaced_LowerFieldFirst    =3, SLO_Other                         =255 } VIDEO_SIGNAL_SCANLINE_ORDERING,  *PVIDEO_SIGNAL_SCANLINE_ORDERING; 注释 视频模式的扫描行排序,规定每一个字段是否包含一个帧的全部内容,或者仅包含其一半(即奇/ 偶线可交替地)。 注意当用于标准隔行模式时,哪一个场首先到来可以从该模式中推断出来,规定这个利用enum来 阐明的特征既使客户从必须保持基于模式的查找表解放出来,又可延伸到没有在 VIDEO_MODE_STDenum中列举的将来的标准模式。 名称
表40-功能Fractional_Frequency 名称 FRACTIONAL_FREQUENCY 目的 视频模式分频描述符。 定义 Typedefstruct_FRACTIONAL_FREQUENCY { DWORD dwNumerator, DWORD dwDenominator, } FRACTIONAL_FREQUENCY;  *PFRACTIONAL_FREQUENCY; 字段 名称 说明 dwNumerator 分频分子。 dwDenominator 分频分母。 注释 用于表示视频模式的垂直和水平频率(即VSync和HSync)的分数值。垂直频率以Hz为单位来 存储。水平频率以KHz为单位来存储。 这个编码格式的动态范围,假设10^-7分辨率是{0.2^32-1/10^7},对于垂直频率其被译为 {0..428.4967296}[Hz]以及对于水平频率译为{0..428.4967296}[KHz]。这个子微秒精度范围将可被 接受,甚至对于专业视频应用(对于视频信号同步,误差在一微秒内将意味着一个具有 10^7/(60*60*24)=115.741天的周期的时间漂移)。
表41-功能Video_Present_Source_Mode_Set 名称 VIDEO_PRESENT_SOURCE_MODE_SET 目的 视频显现源模式组描述符。 定义 typedefstruct_VIDEO_PRESENT_SOURCE_MODE_SET { DWORD                            dwNumOfModes; VIDEO_PRESENT_SOURCE_MODE        arr_vidpsModes[1]; } VIDEO_PRESENT_SOURCE_MODE_SET,    *PVIDEO_PRESENT_SOURCE_MODE_SET; 字段 名称 说明 dwNumOfModes 该组中视频显现源模式的数量 pvidpsModes 视频显现源模式组的dwNumOfModes元素阵列。 注释 视频显现源模式组被用于描述给定VidPN实施中的视频显现源上的可利用的视频显现源模式组。
表42-功能Video_Present_Source_Mode 名称 VIDEO_PRESENT_SOURCE_MODE 目的 视频显现源模式描述符。 定义 typedefstruct_VIDEO_PRESENT_SOURCE_MODE { VIDEO_PRESENT_SOURCE_MODE_TYPE   type; union { GRAPHICS_RENDERING_FORMAT     grfxFormat;//if(type==Graphics) TXST_RENDERING_FORMAT              textFormat;//if(type==Text) } } VIDEO_PRESENT_SOURCE_MODE,    *PVIDEO_PRESENT_SOURCE_MODE; 字段 type 规定该模式是图形还是文本视频显现源模式。 grfxFormat 图形视频显现源模式的描述符(仅在(type==Graphics)时有效)。 textFormat 文本视频显现源模式的描述符(仅在(type==Graphics)时有效)。 注释 视频显现源模式是给定视频显现源的操作的模式。视频显现源模式确定视频显现源的主表面的 格式,图形子系统将在该主表面上再现将要显示给用户的可视图像,并且该视频输出编解码器 从该主表面读取将要被转换成相应的视频模式信号的可视图像内容。
表43-功能Video_Present_Source_Mode_Type 名称 VIDEO_PRESENT_SOURCE_MODE_TYPE 目的 视频显现源模式枚举类型描述符。 定义 typedefenum_VIDEO_PRESENT_SOURCE_MODE_TYPE { RMT_Uninitialized=0, RMT_Graphics     =1, RMT_Text         =2, } VIDEO_PRESENT_SOURCE_MODE_TYPE,  *PVIDEO_PRSESENT_SOURCE_MODE_TYPE; 注释 这个类型被用于规定视频显现源模式是图形还是文本视频显现源模式(见更详细的 VIDEO_PRESENT_SOURCE_MODE)。
表44-功能Graphics_Rendering_Format 名称 GRAPHICS_RENDERING_FORMAT 目的 图形视频显现源模式描述符。 定义 typedefstruct_GRAPHICS_RENDERING_FORMAT { SIZE               sizePrimSurf, SIZE               sizeVisible; DWORD              dwStride; PIXEL_PORMAT       PixelFormat; COLOR_ACCESS_MODE     ClrAccessMode; } GRAPHICS_RENDERING_FORMAT,    *P GRAPHICS_RENDERING_FORMAT; 字段 sizePrimSurf 这个视频显现源模式需要的主表面的尺寸。 sizeVisible 主表面的可视部分的尺寸,用于被固定的包括缩放模式的模式。 dwStride 一个扫描行的开始与下一扫描行之间的字节数。 PixelFormat 像素格式(例如,分解成单独的子通道) ClrAccessMode 像素颜色信息的访问模式 注释 图形视频显现源模是视频显现源模式的主要使用的子类型(其他是文本视频显现源模式)。 注意,无论什么时候,视频显现源模式的可视尺寸 GRAPHICS_VIDEO_PRESENT_SOURCE_MODE.sizeVisible都不等于相应的视频模式的可视尺寸 VIDEO_MODE.sizeVisible,h/w缩放是由视频输出编解码器执行的。
表45-功能Pixel_Format 名称 PIXEL_FORMAT 目的 图形视频显现源模式像素格式描述符。 定义 typedefstruct_PIXEL_FORMAT { D3DFORMAT      type; COLOR_BASIS    clrBasis; } 字段 type 像素格式的相应的DirectX类型 clrBasis 颜色要素,像素颜色相对于这个颜色要素来扩展的 注释 显示器微端口是空闲的以便为它的图形模式支持任何D3D像素格式,这些图形模式当作为主表 面像素格式时是有意义的。针对一个适当地已用像素格式没有有效的模式时,将在内核模式 (Kernel Mode)中完成。如果这证明是一个问题的话,那么WHQL可以从用户模式中强制执 行某一像素格式列表。 这个描述符不包括像素值子通道位屏蔽,这是由于: a.暴露像素值子通道位屏蔽的主要参数是允许应用开发者写入可扩充编码,可扩充编码 可为未来的像素格式起杠杆作用。 b.然而,事实是这样的,历史上许多应用开发者未能适当地实施普通像素值解码算法以 及像素值子通道位屏蔽,像素值子通道位屏蔽被混入DX8中。 c.主要观点:最好强迫应用开发者对他们声称支待的每一个情况通过使它们利用将D3D 像素格式枚举映射到像素值子通道位屏蔽中的查找表来进行测试。 d.为了促进应用发展,为应用开发者输送一个执行枚举至位屏蔽的映射的助手用户模式 库。他们仍然需要为每个应用相对于现存的像素值格式但是不保持查找表来编码他们的应用。 e.像素值子通道位屏蔽暴露的需求进一步减小,这是由于它们仅对具有意义明确的整数 RGB编码像素值的线性表面格式才真正有用。 i.当表面格式具有一个非线性像素布局(即VIDPS.VidPSContentLayout= VPSCL_Linear)时,像素值子通道位屏蔽的知识将不会帮助开发者了解如何访问该表面中的每 一个像素。 ii.大部分四-CC格式(例如NVT4/NVT5)落入这个类别中,并且由于它们的 大部分意味着不能简单地描述出来的结构布局,因而将再次测试每一个格式以便其被该应用支 持。 iii.并且位屏蔽对浮点像素格式不起作用。
表46-功能Color_Access_Mode 名称 COLOR_ACCESS_MODE 目的 颜色访问模式描述符。 定义 typedef enum_COLOR_ACCESS_MODE { CAM_Uninitalized   =0, CAM_Direct         =1, CAM_PresetPalette  =2, CAM_SettablePalette=3 } COLOR_ACCESS_MODE,    *PCOLOR_ACCESS_MODE; 注释 利用Direct通过直接存储在主表面中的颜色表现视频显现源模式。 利用PresetPalette通过存储在主表面中的颜色索引以及存储在显示卡专用的调色板中的实际颜 色值表现视频显现源模式,这必须从显示器微端口被查询。 利用SettablePalette通过存储在主表面中的颜色索引以及存储在可设置调色板中的实际颜色值来 表现视频显现源模式,其中通过将该调色板规定给显示器微端口而可将该调色板动态地设置在 显示卡上。
表47-功能Color_Basis 名称 COLOR_BASIS 目的 颜色要素的描述符,相对于这些颜色要素扩展像素的颜色或相反地基于这些颜色要素合成颜色值。 定义 typedef enum_COLOR_BASIS { CB_Uninitialized  =0, CB_Intensity      =1,
CB_sRGB     =2, CB_scRGB    =3, CB_YCbCr    =4, CB_YPbPr    =5, } COLOR_BASIS,    *PCOLOR_BASIS; 注释 图形行业中通常使用的颜色要素是RGB,其具有要素(红、绿和蓝)以及YPbPr和YCbCr,YPbPr 和YCbCr具有要素(1,蓝-1,红-1)*亮度(红,绿,蓝)的按比例变化的变形。 三色激励线性RGB非常适合于实时再现,这是因为大部分滤波算法使用了三色值来估计由于与环 境的交互作用而导致的光谱变换,而采用三色值来占计主要是由于被觉察的光级与光谱亮度之间 存在一个线性的关系。理想地,视频内容的处理(例如所有的处理)(即缩放、滤波等)应该在线 性RGB空间中执行。 Y’PbPr空间利用接近于伽2.2曲线(即x^0.45)的反转的非线性曲线存储数据。这使得在人眼 更敏感的暗色亮度中有更多的精度将被存储。 sRGB(更准确地说是sR’G’B’)存储与伽马曲线相关的光亮度。 scRGB存储线性值,并需要更高的精度,以便表现相同的感知的类似信号。 基于YPbPr和YCbCr的光亮度更适合于持续的预再现内容,例如视频流。这是由于人的视觉系统 对光子亮度的小差异比对频率(即可感知的颜色)更敏感,并因而基于有限动态范围上的颜色扩 展的光亮度相对于人眼来说比基于相同范围内的颜色扩展的三色产生更好的可感知的图像质量 (例如,非线性Y8Cb8Cr8看上去稍微比R8G8B8好,并且与R9G9B9具有可比性)。 利用Intensity来再现单色模式。灰度级成像被大量地应用于医学成像中。 *注意:撇号Y’PbPr用来提醒你正利用非线性数据工作。
表48-功能Text_Rendering_Format 名称 TEXT_RENDERING_FORMAT 目的 文本视频显现源模式格式。 定义 typedef TBD TEXT_RENDERING_FORMAT; 注释 文本视频显现源模式仅被支持用于向后兼容。
表49-功能Filtering_Technique 名称 FILTERING_TECHNIQUE 目的 滤波技术枚举类型。 定义 typedef D3DDDIMULTISAMPLE_TYPE    FILTERING_TECHNIQUE, *PFILTERING_TECHNIQUE; 注释 这种类型被用于规定哪一类型的滤波技术被用来在视频显现源上重现(例如,2×2/4×4多取 样/超级取样等)。
实例46-监视器的示例性相对重要性
在这里的任一实例中,可以要求操作多个监视器(例如视频微端口)的视 频驱动器提供一个推荐功能配置。在这种情况中,监视器的相对重要性可以被 规定。例如,监视器可以被排序(例如最重要到最不重要)。然后,驱动器可以 根据所规定的相对重要性提供一个配置。
实例47-示例性无状态实施
在此描述的某些技术是在利用一种方法的情况下描述的,在这种方法中视 频驱动器保持临时配置状态(例如其被固定和去固定)。然而,也可以采用无状 态方法。在这种方法中,视频驱动器不需要跟踪状态(例如临时配置的状态) 并且可以制造得更轻和更简单。如果需要,客户软件可以在所需配置的确定过 程中跟踪一个状态。
在这样一种方法中,编程接口(例如,DDI)可以被用于传递与临时配置 的状态相关的信息。例如,数据结构可以用于容纳配置的细节并通过该接口传 递。
实例48-示例性无状态驱动器接口
下面是一个示例性内核模式驱动器接口(例如一个DDI),包括一个用于实 施一个视频显现网络的无状态视频表现网络管理微端口接口,其中该视频显现 网络支持在此描述的各种技术。在这个实例中,一个视频显现网络有时被称为 一个“视频显现网络”或“VidPN”。用于视频显现网络的一个具体配置有时被 称为一个“VidPN实施”。并且,在这个实例中,使用了措辞“微端口”,但是 在此描述的技术可以被应用到任何显示适配器或视频驱动器。
一个示例性内核模式驱动器可以是一个视频微端口的一部分。每一个物理 GPU可以作为其自己的适配器来处理,其中该适配器可以用下面取回的 HANDLE hAdapter来表示。如果单个GPU具有多个输出(例如头),它仍然可 以被当作单个适配器来处理。
一个微端口的HwVidQueryInterface功能可以利用下面的 QUERY_INTERFACE结构调用,以便取回驱动器的进入点:
QUERY_INTERFACE queryinterface;
      queryinterface.InterfaceType          =GUID_DEVINTERFACE_D3DDDI;
      queryinterface.Size                   =sizeof(D3DKMDDI_INTERFACE);
      queryinterface.Version                =D3DDDI_INTERFACE_VERSION;
      queryinterface.Interface              =&pD3DKMDDIInterface;
      queryinterface.InterfaceSpecificData  =&pD3DKMDDIInterfaceSpecificData;
如果接口被成功取回,那么这个HwVidQueryInterface调用返回 NO_ERROR,否则它将返回适当的错误代码。驱动器的进入点可以在下面的 D3DKMDDI_INTERFACE结构中返回。查询该接口可以隐含地引用它。因此, 如果在该接口已被查询之后驱动器的初始化失败,那么可以在驱动器未找到显 式引用的情况下调用接口去引用功能。
typedef struct_D3DKMDDI_INTERFACE
{
   USHORT         Size;
   USHORT         Version;
   HANDLE         hAdapter;
   VOID*          pInterfaceReference;
   VOID*          pInterfaceDereference;
   //Exemplary adapter methods
   PFND3DKMDDI_QUERYADAPTERINFO      pfnQueryAdapterInfo;
   PFND3DKMDDI_CREATEDEVICE          pfnCreateDevice;
    PFND3DKMDDI_CREATEALLOCATION               pfnCreateAllocation;
    PFND3DKMDDI_DESTROYALLOCATION              pfnDestroyAllocation;
    PFND3DKMDDI_ACQUIREAPERTURE                pfnAcquireAperture;
    PFND3DKMDDI_RELEASEAPERTURE                pfnReleaseAperture;
    PFND3DKMDDI_MAPAPERTURESEGMENT             pfnMapApertureSegment;
    PFND3DKMDDI_UNMAPAPERTURESEGMENT           pfnUnmapApertureSegment;
    PFND3DKMDDI_PATCH                          pfnPatch;
    PFND3DKMDDI_SUBMITCOMMAND                  pfnSubmitCommand;
    PFND3DKMDDI_PREEMPTCOMMAND                 pfnPreemptCommand;
    PFND3DKMDDI_SETPOINTERSHAPE                pfnSetPointerShape;
    PFND3DKMDDI_SETPOINTERPOSITION             pfnSetPointerPosition;
    PFND3DKMDDI_BUILDPAGINGBUFFER              pfnBuildPagingBuffer;
    PFND3DKMDDI_ESCAPE                         pfnEscape;
    PFND3DKMDDI_QUERYCURRENTFENCE              pfnQueryCurrentFence;
    PFND3DKMDDI_SETMODE                        pfnSetMode;
    PFND3DKMDDI_SETOUTPUTSTATE                 pfnSetOutputState;
//示例性适配器VidPN管理方法
    PFND3DKMDDI_ENUMVIDEOPRESENTSOURCESET      pfnEnumVideoPresentSourceSet;
    PFND3DKMDDI_ENUMVIDEOPRESENTTARGETSET      pfnEnumVideoPresentTargetSet;
    PFND3DKMDDI_ISSUPPORTEDVIDPN               pfnIsSupportedVidPN;
    PFND3DKMDDI_ENUMCOFUNCVIDPNSOURCEIDSET     pfnEnumCofuncVidPNSourceIDSet;
    PFND3DKMDDI_ENUMCOFUNCVIDPNTARGETIDSET     pfnEnumCofuncVidPNTargetIDSet;
    PFND3DKMDDI_ENUMVIDPNCOFUNCMODALITY        pfnEnumVidPNCofuncModality;
    PFND3DKMDDI_RECOMMENDFUNCTIONALVIDPN       pfnRecommendFunctionalVidPN;
//示例性装置方法
    PFND3DKMDDI_DESTROYDEVICE                  pfnDestroyDevice;
    PFND3DKMDDI_OPENALLOCATION                 pfnOpenAllocation;
    PFND3DKMDDI_CLOSEALLOCATION                pfnCloseAllocation;
    PFND3DKMDDI_RENDER                         pfnRender;
    PFND3DKMDDI_PRESENT               pfnPresent;
   }D3DKMDDI_INTERFACE;
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_QUERYADAPTERINFO)(HANDLE hAdapter,CONST
      D3DKMDDIARG_QUERYADAPTERINFO*);
  typedeef NTSTATUS(APIENTRY*PFND3DKMDDI_CREATEDEVICE)(HANDLE hAdapter,
      D3DKMDDIARG_GREATEDEVICE*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_CREATEALLOCATION)(HANDLE hAdapter,
      D3DKMDDIARG_CREATEALLOCATION*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_DESTROYALLOCATION)(HANDLE hAdapter,CONST
      D3DKMDDIARG_DESTROYALLOCATION*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ACQUIREAPERTURE)(HANDLE hAdapter,
      D3DKMDDIARG_ACQUIREAPERTURE*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_RELEASEAPERTURE)(HANDLE hAdapter,CONST
      D3DKMDDIARG_RELEASEAPERTURE*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_MAPAPERTURESEGMENT)(HANDLE hAdapter,CONST
      D3DKMDDIARG_MAPAPERTURESEGMENT*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_UNMAPAPERTURESEGMENT)(HANDLE hAdapter,CONST
      D3DKMDDIARG_UNMAPAPERTURESEGMENT*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_PATCH)(HANDLE hAdapter,CONST D3DKMDDIARG_PATCH*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_SUBMITCOMMAND)(HANDLE hAdapter,CONST
      D3DKMDDIARG_SUBMITCOMMAND*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_PREEMPTCOMMAND)(HANDLE hAdapter,CONST
      D3DKMDDIARG_PREEMPTCOMMAND*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_SETPOINTERSHAPE)(HANDLE hAdapter,CONST
      D3DKMDDIARG_SETPOINTERSHAPE*);
    typedef NTSTATUS(APIENTRY*PFND3DKMDDI_SETPOINTERPOSITION)(HANDLE hAdapter,CONST
        D3DKMDDIARG_SETPOINTERPOSITION*);
    typedef NTSTATUS(APIENTRY*PFND3DKMDDI_BUILDPAGINGBUFFER)(VOID*,
        D3DKMDDIARG_BUILDPAGINGBUFFER*);
    typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ESCAPE)(HANDLE hAdapter,D3DKMDDIARG_ESCAPE*);
    typedef NTSTATUS(APIENTRY*PFND3DKMDDI_QUERYCURRENTFENCE)(HANDLE hAdapter,
        ULARGE_INTEGER*);
    typedef NTSTATUS(APIENTRY*PFND3DKMDDI_SETMODE)(HANDLE hAdapter,D3DKMDDIARG_SETMODE*);
    typedef NTSTATUS(APIENTRY*PFND3DKMDDI_SETOUTPUTSTATE)(HANDLE hAdapter,
        D3DKMDDIARG_SETOUTPUTSTATE*);
//示例性VidPN管理方法
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ENUMVIDEOPRESENTSOURCESET)(HANDLE hAdapter,
       D3DKMDDIARG_ENUMVIDEOPRESENTSOURCESET*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ENUMVIDEOPRESENTTARGETSET)(HANDLE hAdapter,
       D3DKMDDIARG_ENUMVIDEOPRESENTTARGETSET*);
  typcdef NTSTATUS(APIENTRY*PFND3DKMDDI_ISSUPPORTEDVIDPN)(HANDLE hAdapter,
       D3DKMDDIARG_ISSUPPORTEDVIDPN*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ENUMCOFUNCVIDPNSOURCEIDSET)(HANDLE hAdapter,
       D3DKMDDIARG_ENUMCOFUNCVIDPNSOURCEIDSET*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ENUMCOFUNCVIDPNTARGETIDSET)(HANDLE hAdapter,
       D3DKMDDIARG_ENUMCOFUNCVIDPNTARGETIDSET*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_ENUMVIDPNCOFUNCMODALITY)(HANDLE hAdapter,
       D3DKMDDIARG_ENUMVIDPNCOFUNCMODALITY*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_RECOMMENDFUNCTIONALVIDPN)(HANDLE hAdapter,
       D3DKMDDIARG_RECOMMENDFUNCTIONALVIDPN*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_DESTROYDEVICE)(HANDLE hDevice);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_OPENALLOCATION)(HANDLE hDevice,CONST
       D3DKMDDIARG_OPENALLOCATION*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_CLOSEALLOCATION)(HANDLE hDevice,CONST
       D3DKMDDIARG_CLOSEALLOCATION*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_RENDER)(HANDLE hDevice,D3DKMDDIARG_RENDER*);
  typedef NTSTATUS(APIENTRY*PFND3DKMDDI_PRESENT)(HANDLE hDevice,D3DKMDDIARG_PRESENT*);
在D3DKMDDI_INTERFACE结构中被返回的hAdapter可以作为 pInterfaceReference以及pInterfaceDereference的上下文来传递。并且其还可以以 适配器起作用的hAdaper参数在接口中传递。
typdef struct_D3DKMDDI_INTERFACESPECIFICDATA
 {
 HANDLE            hAdapter;
 //示例性D3DKMDDI接口回调功能
     PFND3DKMDDI_GETHANDLEDATACB             pfnGetHandleDataCb;
     PFND3DKMDDI_GETHANDLEPARENTCB           pfnGetHandleParentCb;
     PFND3DKMDDI_ENUMHANDLECHILDRENCB        pfnEnumHandleChildrenCb;
     PFND3DKMDDI_NOTIFY_DMAINTERRUPTCB       pfnNotifyDmaInterruptCb;
     PFND3DKMDDI_NOTIFY_DMADPCCB             pfnNotifyDmaDpcCb;
     PFND3DKMDDI_ALLOCSYSMEMFOROUTPARAMCB    pfnAllocSysMemForOutParamCb;
     PFND3DKMDDI_FREESYSMEMFOROUTPARAMCB     pfnFreeSysMemForOutParamCb;
    }D3DKMDDI_INTERFACESPECIFICDATA;
typedef HANDLE(APIENTRY CALLBACK*PFND3DKMDDI_GETHANDLEPARENTCB)(HANDLE hDevice,
     D3DKMT_HANDLE);
typedef VOID*(APIENTRY CALLBACK*PFND3DKMDDI_GETHANDLEDATACB)(HANDLE hDevice,CONST
     D3DKMDDIARGCB_GETHANDLEDATA*);
typedef HANDLE(APIENTRY CALLBACK*PFND3DKMDDI_ENUMHANDLECHILDRENCB)(HANDLE hDevice,
     CONST D3DKMDDIARGCB_ENUMHANDLECHILDREN*);
typedef NTSTATUS(APIENTRY CALLBACK*PFND3DKMDDI_NOTIFY_DMAINTERRUPTCB)(HANDLE hAdapter,
     CONST D3DKMDDIARG_NOTIFY_DMAINTERRUPT_DATA*);
typedef NTSTATUS(APIENTRY CALLBACK*PFND3DKMDDI_NOTIFY_DMADPCCB)(HANDLE hAdapter,CONST
     D3DKMDDIARG_NOTIFY_DMADPC_DATA*);
typedef VOID*(APIENTRY CALLBACK*PFND3DKMDDI_ALLOCSYSMEMFOROUTPARAMCB)(IN POOL_TYPE,
     IN SIZE_T);
typedef VOID(APIENTRY CALLBACK*PFND3DKMDDI_FREESYSMEMFOROUTPARAMCB)(VOID*);
接口特定数据可以包含指示器以便在驱动器可以调用的运行时间中回调功 能。hAdaper可以是运行时间的适配器处理,并且可以被传递给请求一个适配器 处理的回调。
除上述接口外,也可以使用下面传统的IOCTL:
IOCTL_VIDEO_RESET_DEVICE
IOCTL_VIDEO_SET_COLOR_REGISTERS
IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES
IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES
IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
IOCTL_VIDEO_QUERY_AVAIL_MODES
表50-功能EnumVideoPresentSourceSet  typedef NTSTATUS       (APIENTRY*PFND3DKMDDI_ENUMVIDEOPRESENTSOURCESET)       (IN  HANDLE                                   hAdapter,       OUT D3DKMDDIARG_ENUMVIDEOPRESENTSOURCESET*    pEnumVideoPresentSourceSetArg); typedef struct_D3DKMDDIARG_ENUMVIDEOPRESENTSOURCESET {   OUT D3DKMDDI_VIDEO_PRESENT_SOURCE_SET*pVideoPresentSourceSet; } D3DKMDDIARG_ENUMVIDEOPRESENTSOURCESET;
EnumVideoPresentSourceSet可以通过VidPN管理器被系统中每一个显示适 配器调用,其中VidPN管理器正驱动相应显示适配器的后再现视频表象能力, 以便获得一个规定显示适配器具有的视频显现源的列表。
微端口可以经过INTERFACESPECIFICDATA接口,利用通过操作系统提 供给它的AllocSysMemForOutParamCb回调在系统存储器中分配一个足够大的 缓存器,以便包含用于规定显示适配器的被请求的视频显现源组。所分配的尺 寸应为(D3DKMDDI_VIDEO_PRESENT_SOURCE_SET)的尺寸+ (D3DKMDDI_VIDEO_PRESENT_SOURCE)的尺寸* (视频显现源的#-1)。
一旦用于输出参数的存储器已分配,那么微端口可以根据下列的定义对其 进行填充:
typedef struct_D3DKMDDI_VIDEO_PRESENT_SOURCE_SET
{
  SIZE_T                          NumOfVideoPresentSources;
  D3DKMDDI_VIDEO_PRESENT_SOURCE   VideoPresentSourees[1];
}
D3DKMDDI_VIDEO_PRESENT_SOURCE_SET;
其中:
·NumOfVideoPresentSources-在VideoPresentSources中列出的视频显现 源的数量。
·VideoPresentSources-在该组中的视频显现源描述符的阵列的地址。在 NumOfVideoPresentSources规定元素的实际数量。
视频显现源描述符被定义为如下:
typedef struct_D3DKMDDI_VIDEO_PRESENT_SOURCE
{
  D3DKMDDI_VIDEO_PRESENT_SOURCE_ID    VideoPresentSourceID;
  DWORD                               dwReserved;
}
D3DKMDDI_VIDEO_PRESENT_SOURCE;
其中:
·VideoPresentSourceID-用来通过微端口以及操作系统引用相应的视频 显现源的唯一的ID。
·dwReserved-在这里起作用的其它视频显现源描述符特性。视频显现源 ID被定义为:
typedefUINT D3DKMDDI_VIDEO_PRESENT_SOURCE_ID;
在从这个功能成功返回的基础上,操作系统可以取得以输出参数形式返回 的数据的使用期的所有权,并且在完成时可以释放被它的支持分配所占用的存 储器。
返回代码
STATUS_SUCCESS表示驱动器成功地执行调用。
表51-功能EnumVideoPresentTargetSet  typedef NTSTATUS       (APIENTRY*PFND3DKMDDI_ENUMVIDEOPRESENTTARGETSET)       (IN HANDLE                                    hAdaptet,       OUT D3DKMDDIARG_ENUMVIDEOPRESENTTARGETSET*    pEnumVideoPresentTargetSetArg);  typedef struct_D3DKMDDIARG_ENUMVIDEOPRESENTTARGETSET  {   OUT D3DKMDDI_VIDEO_PRESENT_TARGET_SET*pVideoPresentTargetSet;  }  D3DKMDDIARG_ENUMVIDEOPRESENTTARGETSET;
可以通过VidPN管理器为系统中每一个显示适配器调用 EnumVideoPresentTargetSet,管理器正驱动相应显示适配器的后再现视频显现能 力以便获得规定显示适配器所具有的视频显现目标列表。
微端口可以经过INTERFACESPECIFICDATA接口,利用通过操作系统提 供给它的AllocSysMemForOutParamCb回调在系统存储器中分配一个足够大的 缓存器,以便包含用于被规定的显示适配器的所请求的视频显现源组。所分配 的尺寸应为(D3DKMDDI_VIDEO_PRESENT_TARGET_SET)的尺寸+ (D3DKMDDI_VIDEO_PRESENT_TARGET)的尺寸*(视频显现目标的#- 1)。
一旦用于输出参数的存储器已分配,微端口就可以基于下面的定义对其进 行填充:
typedef struct_D3DKMDDI_VIDEO_PRESENT_TARGET_SET
{
 SIZE-T                        NumOfVideoPresentTargets;
 D3DKMDDI_VIDEO_PRESENT_SOURCE VideoPresentTargets[1];
}
D3DKMDDI_VIDEO_RESENT_TARGET_SET;
其中:
·NumOfVideoPresentTargets-在VideoPresentSources中列举的视频显现 目标的数量。
·VideoPresentSources-在该组中的视频显现目标描述符的阵列的地址。 在NumOfVideoPresentTargets中规定元素的实际数量。
视频显现目标描述符被定义为如下:
typedef struct_D3DKMDDI_VIDEO_PRESENT_TARGET
{
  D3DKMDDI_VIDEO_PRESENT_TARGET_ID          VideoPresentTargetID;
  D3DKMDDI_VIDEO_OUTPUT_TECHNOLOGY          VideoOutputTechnology;
  D3DKMDDI_VIDEO_OUTPUT_HPD_AWARENESS       VideoOutputHPDAwareness;
  D3DKMDDI_MONITOR_ORIENTATION_AWARENESS    MonitorOrientationAwareness;
}
D3DKMDDI_VIDEO_PRESENT_TARGET;
其中:
·VideoPresentTargetID-用来通过微端口以及操作系统引用相应的视频 显现目标的唯一的ID。
·VideoOutputTechnology-视频输出技术的类型。
·VideoOutputHPDAwareness-视频输出的HPD的感知类型。
·MonitorOrientationAwareness-监视器定位感知。
视频显现目标ID被定义为:
typedefUINT D3DKMDDI_VIDEO_PRESENT_TARGET_ID;
视频输出技术类型描述符可以被定义为:
typedef enum_D3DKMDDI_VIDEO_OUTPUT_TECHNOLOGY
{
D3DKMDDI_VOT_UNINITIALIZED     =0,
D3DKMDDI_VOT_HD15              =1,
D3DKMDDI_VOT_DVI               =2,
D3DKMDDI_VOT_HDMI              =3,
D3DKMDDI_VOT_HDMI2             =4,
D3DKMDDI_VOT_SVIDEO_4PIN       =5,
D3DKMDDI_VOT_SVIDEO_7PIN       =6,
D3DKMDDI_VOT_RCA_COMPOSITE     =7,
D3DKMDDI_VOT_RCA_3COMPONENT    =8,
D3DKMDDI_VOT_BNC               =9,
D3DKMDDI_VOT_RF                =10,
D3DKMDDI_VOT_OTHER             =255
}
D3DKMDDI_VIDEO_OUTPUT_TECHNOLOGY;
视频输出HPD感知描述符类型可以被定义为:
typedef enum_D3DKMDDI_VIDEO_OUTPUT_HPD_AWARENESS
{
D3DKMDDI_VOHPDA_UNINITIALIZED          =0,
D3DKMDDI_VOHPDA_NONE                   =1,
D3DKMDDI_VOHPDA_DESTRUCTIVELYPOLLED    =2,
D3DKMDDI_VOHPDA_NONDESTRUCTIVELYPOLLED =3,
D3DKMDDI_VOHPDA_INTERRUPTIBLE          =4
}
D3DKMDDI_VIDEO_OUTPUT_HPD_AWARENESS;
视频输出HPD感知可以被用来表示由显示适配器在监视器的视频输出上 感应的监视器连通性的等级,并可利用如下四种类型:
1.可中断的HPD-当并且仅当微端口可以异步地将监视器的到达/离 开通知操作系统时感知。
2.非破坏性轮询HPD-当并且仅当微端口不能异步地将监视器的到 达/离开通知操作系统时感知,但是操作系统可以在不引起可视失真的情况下周 期地轮询监视器的存在。
3.破坏性轮询HPD-当并且仅当微端口不能异步地将监视器的到达/ 离开通知操作系统时感知,但是操作系统可以偶发性地轮询监视器的存在,在 每一个轮询上引起可视失真。
4.无HPD-当并且仅当微端口通过中断或轮询感知不到监视器到达/ 离开时感知。
监视器定位感知可以被定义为:
typedef enum_D3DKMDDI_MONITOR_ORIENTATION_AWARENESS
{
D3DKMDDI_MOA_UNINITIALIZED    =0,
D3DKMDDI_MOA_NONE             =1,
D3DKMDDI_MPA_POLLED           =2,
D3DKMDDI_MOA_INTERRUPTIBLE    =3
}
D3DKMDDI_MONITOR_ORIENTATION_AWARENESS;
在从这个功能成功返回的基础上,操作系统可以取得以输出参数的形式返 回的数据的使用期的所有权,并且在完成时可以释放被它的支持分配所占用的 存储器。
返回代码
STATUS_SUCCESS表示驱动器成功执行调用。
表52-功能IsSupportedVidPN  typedef NTSTATUS       (APIENTRY*PFND3DKMDDI_ISSUPPORTEDVIDPN)       (IN HANDLE                           hAdapter,       IN OUT D3DKMDDIARG_ISSUPPORTEDVIDPN* pIsSupportedVidPNArg); typedef struct_D3DKMDDIARG_ISSUPPORTEDVIDPN {   IN OUT D3DKMDDI_VIDPN*  pDesiredVidPN;     OUT BOOLEAN*          pbIsVidPNSupported; } D3DKMDDIARG_ISSUPPORTEDVIDPN;
IsSupportedVidPN可以允许操作系统查询微端口是否所提供的VidPN配置 被支持(例如可以被扩展到功能性VidPN)。第一个参数(argument)hAdapter 可以规定显示适配器,在该适配器上VidPN支持正被讨论。实际的VidPN可以 被规定在第二参数的第一字段上,pIsSupportedVidPN->pDesiredVidPN,其中 VidPN描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN
{
D3DKMDDI_VIDPN_TOPOLOGY    VidPNTopology;
DWORD                      dwReserved;
}
D3DKMDDI_VIDPN;
VidPN拓扑描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN_TOPOLOGY
{
D3DKMDDI_VIDPN_PRESENT_PATH_SET VidPNPresentPathSet;
}
D3DKMDDI_VIDPN_TOPOLOGY;
VidPNPresentPathSet可以表示构成VidPN的拓扑的视频显现路径组,其中
typedef struct_D3DKMDDI_VIDPN_PRESENT_PATH_SET
}
SIZE_T                         NumOfVidPNPresentPaths;
D3DKMDDI_VIDPN_PRESENT_PATH    VidPNPresentPaths[1];
}
D3DKMDDI_VIDPN_PRESENT_PATH_SET;
具有:
1.NumOfVidPNPresentPaths包含在VidPNPresentPaths中的视频显现 路径的数量,并且
2.VidPNPresentPaths包含构成VidPNP的拓扑的视频显现路径的阵 列。
VidPNP显现路径描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN_PRESENT_PATH
{
D3DKMDDI_VIDPN_SOURCE                      VidPNSource;
D3DKMDDI_VIDPN_TARGET                      VidPNTarget;
D3DKMDDI_VIDPN_PRESENT_PATH_TRANSFORMATION VidPNPresentPathTransformation;
D3DKMDDI_VIDPN_PRESENT_PATH;
D3DKMDDI_VIDPN_PRESENT_PATH是视频显现路径描述符,其可以被 用于显现VidPN拓扑中从单个视频显现目标至单个视频显现源的映射,其中:
·VidPNSource是视频显现路径的源描述符。
·VidPNTarget是视频显现路径的目标描述符。
·VidPNPresentPathTransformation是视频显现路径的内容转换描述符。
其中VidPN源描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN_SOURCE
{
D3DKMDDI_VIDEO_PRESENT_SOURCE_ID    VidPNSourceID;
SIZE_T                              PinnedModeIndex;
D3DKMDDI_VIDPN_SOURCE_MODESET*      pCofuncVidPNSourceModeSet;
}
D3DKMDDI_VIDPN_SOURCE;
其中:
·VidPNSourceID是用于通过微端口和操作系统引用相应的视频显现源 的唯一的ID。这个值来自EnumVideoPresentSourceSet调用。
·PinnedModeIndex是视频显现源模式索引,其被固定在给定的当前 VidPN配置的这个视频显现源上的可利用的共同作用模式组中,或者当没有模 式被固定到这个源上时,其被固定到D3DKMDDI_NO_PINNED_MODE。
·pCofuncVidPNSourceModeSet是与当前(部分或临时)的VidPN共同 作用的VidPN源模式,这个源是其中一员。
VidPN源模式组描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN_SOURCE_MODESET
{
SIZE_T                        NumOfVidPNSourceModes;
D3DKMDDI_VIDPN_SOURCE_MODE    VidPNSourceModes[1];
}
D3DKMDDI_VIDPN_SOURCE_MODESET;
其中:
·NumOfVidPNSourceModes规定列举在VidPNSourceModes中的视频显 现源模式的数量。
·VidPNSourceModes包含组中的视频显现源模式的阵列。
VidPN源模式描述符可以被定义为:
  typedef struct_D3DKMDDI_VIDPN_SOURCE_MODE
  {
  D3DKMDDI_VIDPN_SOURCE_MODE_TYPE Type;
  union
  {
    D3DKMDDI_GRAPHICS_RENDERING_FORMAT grfxFormat;
    D3DKMDDI_TEXT_RENDERING_FORMAT     textFormat;
  };
}
D3DKMDDI_VIDPN_SOURCE_MODE;
其中Type包含VidPN源模式类型描述符,被定义为:
typedef enum_D3DKMDDI_VIDPN_SOURCE_MODE_TYPE
{
D3DKMDDI_RMT_UNINITIALIZED  =0,
D3DKMDDI_RMT_GRAPHICS       =1,
D3DKMDDI_RMT_TEXT           =2
}
D3DKMDDI_VIDPN_SOURCE_MODE_TYPE;
如果Type等于D3DKMDDI_RMT_GRAPHICS,那么源模式描述符包含一 个图形再现格式描述符grfxFormat,其被定义为:
typedef struct_D3DKMDDI_GRAPHICS_RENDERING_FORMAT
{
SIZE                          sizePrimSurf;
SIZE                          sizeVisible;
DWORD                         dwStride;
D3DKMDDI_PIXEL_FORMAT         PixelFormat;
D3DKMDDI_COLOR_ACCESS_MODE    PixelValueAccessMode;
}
D3DKMDDI_GRAPHICS_RENDERING_FORMAT;
其中,
·sizePrimSurf规定这个VidPN源模式要求的主表面的尺寸。
·sizeVisible规定用来固定包括缩放模式的模式的主表面的可视部分的尺 寸。
·dwStride规定一个扫描行的开始和下一扫描行之间的字节数量。
·PixelFormat规定像素的格式。
·PixelValueAccessMode为像素值信息规定访问模式。
否则,如果Type等于D3DKMDDI_RMT_TEXT,那么源模式描述符包含 一个文本再现格式描述符textFormat,其被定义为:
typedef enum_D3DKMDDI_TEXT_RENDERING_FORMAT
}
D3DKMDDI_TRF_UNINITIALIZED=0
}
D3DKMDDI_TEXT_RENDERING_FORMAT;
另外,VidPN目标描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN_TARGET
{
D3DKMDDI_VIDEO_PRESENT_TARGET_ID    VidPNTargetID;
SIZE_T                              PinnedModeIndex;
D3DKMDDI_VIDPN_TARGET_MODESET*      pCofuncVidPNTargetModeSet;
}
D3DKMDDI_VIDPN_TARGET;
其中:
·VidPNTargetID是用来通过微端口和操作系统引用相应视频显现目标的 唯一的ID。这个值来自EnumVideoPresentTargetSet调用。
·PinnedModeIndex是视频显现目标模式索引,其被固定在给定的当前 VidPN配置的这个视频显现目标上可利用的共同作用模式组中,或者当没有模 式被固定到这个目标上时,其被固定到D3DKMDDI_NO_PINNED_MODE。
·pCofuncVidPNSourceModeSet是与当前(部分)的VidPN共同作用的 VidPN目标模式,这个目标是其中一员。
VidPN目标模式组描述符可以被定义为:
typedef struct_D3DKMDDI_VIDPN_TARGET_MODESET
}
SIZE_T                        NumOfVidPNTargetModes;
D3DKMDDI_VIDPN_TARGET_MODE    VidPNTargetModes[1];
}
D3DKMDDI_VIDPN_TARGET_MODESET;
其中:
·NumOfVidPNTargetModes规定列举在VidPNTargetModes中的视频显现 目标模式的数量。
·VidPNTargetModes包含组中的视频显现目标模式的阵列。
其中,VidPN目标模式描述符可以被定义为如表53所示:
表53-VidPN目标模式描述符 typedef struct_D3DKMDDI_VIDPN_TARGET_MODE   {   D3DKMDDI_VIDEO_SIGNAL_STANDARD      vidStandard;   SIZE                                sizeTotal;   SIZE                                sizeActive;   SIZE                                sizeActiveOffset;   SIZE                                sizeTLDeltaVisibleFromActive;   SIZE                                sizeBRDeltaVisibldFromActive;   D3DKMDDI_FRACTIONAL_FREQUENCY              frqVSync;   D3DKMDDI_FRACTIONAL_FREQUENCY              frqHSync;   SIZE_T                                     sztPixelRate;   D3DKMDDI_VIDEO_SIGNAL_SCANLINE_ORDERING    ScanLineOrdering;   D3DKMDDI_GTFCOMPLIANCE                     IsGTFCompliant;   D3DKMDDI_MODE_PREFERENCE                   ModePreference;   } D3DKMDDI_VIDPN_TARGET_MODE; typedef enum_D3DKMDDI_VIDEO_SIGNAL_STANDARD {                                   //W×H{i|p}@(VR/HR/CR)   D3DKMDDIVMS_UNINITIALIZED =0,   D3DKMDDI_VMS_GTF          =1,   D3DKMDDI_VMS_NTSC_M       =2,//720×525i@(59.94[Hz]/15,734.27[Hz]/3,579,545[Hz])   D3DKMDDI_VMS_NTSC_J       =3,//720×525i@(59.94[Hz]/15,734.27[Hz]/3,579,545[Hz])   D3DKMDDI_VMS_NTSC_443     =4,//720×525i@(59.94[Hz]/15,734.27[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_B        =5,//720×625i@(50   [Hz]/15,625[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_B1       =6,//720×625i@(50   [Hz]/15,625[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_G        =7,//720×625i@(50   [Hz]/15,625[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_H        =8,//720×625i@(50   [Hz]/15,625[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_I        =9,//720×625i@(50   [Hz]/15,625[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_D        =10,//720×525i@(59.94[Hz]/15,734[Hz]/3,575,611.49[Hz])   D3DKMDDI_VMS_PAL_N        =11,//720×625i@(50  [Hz]/15,625[Hz]/4,433,618.75[Hz])   D3DKMDDI_VMS_PAL_NC       =12,//720×625i@(50  [Hz]/15,625[Hz]/3,582,056.25[Hz])   D3DKMDDI_VMS_SECAM_B      =13,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_D      =14,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_G      =15,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_H      =16,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_K      =17,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_K1     =18,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_L      =19,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_SECAM_L1     =20,//720×625i@(50  [Hz]/15,625[Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_1    =21,//720×480i@(59.94[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_2    =22,//720×480i@(60   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_3    =23,//640×480p@(59.94[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_4    =24,//640×480p@(60   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_5    =25,//720×480p@(59.94[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_6    =26,//720×480p@(60   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_7    =27,//1280×720p@(59.94[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_8    =28,//1280×720p@(60  [Hz]/   [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_9    =29,//1920×1080i@(59.94[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861_10   =30,//1920×1080i@(60  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861A_1   =31,//720×576i@(50   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861A_2   =32,//720×576p@(50   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861A_3   =33,//1280×720p@(50  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_ELA_861A_4 =34,//1920×1080i@(50  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861B_1 =35,//1920×1080p@(23.960[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861B_2 =36,//1920×1080p@(24  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861B_3 =37,//1920×1080p@(25  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861B_4 =38,//1920×1080p@(29.970[Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861B_5 =39,//1920×1080p@(30  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_EIA_861B_6 =40,//1920×1080p@(50  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_ELA_861B_7 =41,//1920×1080p@(60  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_IBM_1      =42,//720×400p@(70    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_IBM_2      =43,//720×400p@(88    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_IBM_3      =44,//640×480p@(60    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_IBM_4      =45,//1024×768i@(87   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_APPLE_1    =46,//640×480p@(67    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_APPLE_2    =47,//832×624p@(75    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_APPLE_3    =48,//1152×870p@(75   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_1     =49,//640×480p@(72    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_2     =50,//640×480p@(75    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_3     =51,//800×600p@(56    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_4     =52,//800×600p@(60    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_5     =53,//800×600p@(72    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_6     =54,//800×600p@(75    [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_7     =55,//1024×768p@(60   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_8     =56,//1024×768p@(70   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_9     =57,//1024×768p@(75   [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VESA_10    =58,//1280×1024p@(75  [Hz]/  [Hz]/    [Hz])   D3DKMDDI_VMS_VDMT_1     =59,//640×350p@(85  [Hz]/37,900[Hz]/31,500,000[Hz])   D3DKMDDI_VMS_VDMT_2     =60,//640×400p@(85  [Hz]/37,900[Hz]/31,500,000[Hz])   D3DKMDDI_VMS_VDMT_3     =61,//720×400p@(85  [Hz]/37,900[Hz]/35,500,000[Hz])   D3DKMDDI_VMS_VDMT_4     =62,//640×480p@(60  [Hz]/31,500[Hz]/25,175,000[Hz])   D3DKMDDI_VMS_VDMT_5     =63,//640×480p@(72  [Hz]/37,900[Hz]/31,500,000[Hz])   D3DKMDDI_VMS_VDMT_6     =64,//640×480p@(75  [Hz]/37,500[Hz]/31,500,000[Hz])   D3DKMDDI_VMS_VDMT_7     =65,//640×480p@(85  [Hz]/43,300[Hz]/36,000,000[Hz])   D3DKMDDT_VMS_VDMT_8     =66,//800×600p@(56  [Hz]/35,100[Hz]/36,000,000[Hz])   D3DKMDDI_VMS_VDMT_9     =67,//800×600p@(60.317[Hz]/37,879[Hz]/40,000,000[Hz])   D3DKMDDI_VMS_VDMT_10    =68,//800×600p@(72  [Hz]/48,100[Hz]/50,000,000[Hz])   D3DKMDDI_VMS_VDMT_11    =69,//800×600p@(75  [Hz]/46,900[Hz]/49,500,000[Hz])   D3DKMDDI_VMS_VDMT_12    =70,//800×600p@(85  [Hz]/53,700[Hz]/56,250,000[Hz])   D3DKMDDI_VMS_VDMT_13    =71,//1024×768i@(43  [Hz]/35,500[Hz]/44,900,000[Hz])   D3DKMDDI_VMS_VDMT_14    =72,//1024×768p@(60.004[Hz]/48,363[Hz]/65,000,000[Hz])   D3DKMDDI_VMS_VDMT_15    =73,//1024×768p@(70  [Hz]/56,500[Hz]/75,000,000[Hz])   D3DKNDDI_VMS_VDMT_16    =74,//1024×768p@(75  [Hz]/60,000[Hz]/78,750,000[Hz])   D3DKMDDI_VMS_VDMT_17    =75,//1024×768p@(85  [Hz]/68,700[Hz]/94,500,000[Hz])   D3DKMDDI_VMS_VDMT_18    =76,//1152×864p@(75  [Hz]/67,500[Hz]/108,000,000[Hz])   D3DKMDDI_VMS_VDMT_19    =77,//1280×960p@(60  [Hz]/60,000[Hz]/108,000,000[Hz])   D3DKMDDI_VMS_VDMT_20    =78,//1280×960p@(85  [Hz]/85,900[Hz]/148,500,000[Hz])   D3DKMDDI_VMS_VDMT_21    =79,//1280×1024p@(60 [Hz]/64,000[Hz]/108,000,000[Hz])   D3DKMDDI_VMS_VDMT_22    =80,//1280×1024p@(75 [Hz]/80,000[Hz]/135,000,000[Hz])   D3DKMDDI_VMS_VDMT_23    =81,//1280×1024p@(85 [Hz]/91,100[Hz]/157,500,000[Hz])   D3DKMDDI_VMS_VDMT_24    =82,//1600×1200p@(60 [Hz]/75,000[Hz]/162,000,000[Hz])   D3DKMDDI_VMS_VDMT_25    =83,//1600×1200p@(65 [Hz]/81,300[Hz]/175,500,000[Hz])   D3DKMDDI_VMS_VDMT_26    =84,//1600×1200p@(70 [Hz]/87,500[Hz]/189,000,000[Hz])   D3DKMDDT_VMS_VDMT_27    =85,//1600×1200p@(75 [Hz]/93,800[Hz]/202,500,000[Hz])   D3DKMDDI_VMS_VDMT_28    =86,//1600×1200p@(85 [Hz]/106,300[Hz]/229,500,000[Hz])   D3DKMDDI_VMS_VDMT_29    =87,//1792×1344p@(60 [Hz]/83,640[Hz]/204,750,000[Hz])   D3DKMDDI_VMS_VDMT_30    =88,//1792×1344p@(75 [Hz]/106,270[Hz]/261,750,000[Hz])   D3DKMDDI_VMS_VDMT_31    =89,//1856×1392p@(60 [Hz]/86,330[Hz]/218,250,000[Hz])   D3DKMDDI_VMS_VDMT_32    =90,//1856×1392p@(75 [Hz]/112,500[Hz]/288,000,000[Hz])   D3DKMDDI_VMS_VDMT_33    =91,//1920×1440p@(60 [Hz]/90,000[Hz]/234,000,000[Hz])   D3DKMDDI_VMS_VDMT_34    =92,//1920×1440p@(75 [Hz]/112,500[Hz]/297,000,000[Hz])   D3DKMDDI_VMS_OTHER      =255 } D3DKMDDI_VIDEO_SIGNAL_STANDARD; typedef enum_D3DKMDDI_GTFCOMPLIANCE {   D3DKMDDI_GTF_UNINITIALIZED  =0,   D3DKMDDI_GTF_COMPLIANT      =1,   D3DKMDDI_GTF_NOTCOMPLIANT   =2 } D3DKMDDI_GTFCOMPLIANCE; typedef enum_D3DKMDDI_MODE_PREFERENCE {   D3DKMDDI_MP_UNINITIALIZED   =0,   D3DKMDDI_MP_PREFERRED       =1,   D3DKMDDI_MP_NOTPREFERRED    =2 } D3DKMDDI_MODE_PREFERENCE;
其中:
·vidStandard规定视频模式标准,通过这个标准限定这个模式(如果需 要)。
·sizeTotal规定像素中视频信号的尺寸(例如HTotal和VTotal)。
·sizeActive规定在有源像素中显现图形的尺寸(例如HActive和 VActive)。
·sizeActiveOffset规定有源像素相对于全部像素的位置。
·sizeTLDeltaVisibleFromActive从视频信号的有源像素右下角规定可视 像素的左上角监视器屏幕的增量(delta)。
·sizeBRDeltaVisibleFromActive从视频信号的有源像素右下角规定可视 像素的右下角监视器屏幕的增量。
·frqVSync规定这个模式的垂直刷新频率(以Hz为单位)。
·frqHSync规定这个模式的水平刷新频率(以KHz为单位)。
·sztPixelRate规定这个模式的像素时钟速率。
·ScanLineOrdering规定这个模式的扫描行排序(例如逐行、隔行)。
·IsGTFCompliant规定这个模式的VSync、HSync以及时钟速率是否遵 守由VESA广义的定时公式强加的约束。
·ModePreference通过连接到相应的视频输出的监视器规定这个模式是 否是优选的。
视频信号标准enum可以被用来在合适时简化视频模式比较。
分频描述符可以被定义为:
typedef struct_D3DKMDDI_FRACTIONAL_FREQUENCY
{
  SIZE_T Numerator;
  SIZE_T sztDenominator;
}
 D3DKMDDI_FRACTIONAL_FREQUENCY;
其中:
·Numerator规定分频分子。 
·Denominator规定分频分母。
垂直频率可以以Hz为单位存储,并且水平频率可以以KHz为单位存储。 这个编码格式的动态范围,假定10^-7分辨率(在32比特系统)是 {0..(2^32-1)/10^7},其译为垂直频率是{0..428.4967296}[Hz],译为水平频率是 {0..428.4967296}[KHz]。这个子微秒精度范围将可以被接受,即使用于在专业 视频应用中(对于视频信号同步误差在一微秒中将意味着一个具有 10^7/(60*60*24)=115.741天的周期的时间漂移)。
视频信号扫描行排序描述符可以被定义为:
typedef enum_D3DKMDDI_VIDEO_SIGNAL_SCANLINE_ORDERING
{
 D3DKMDDI_VSSLO_UNINITIALIZED               =0,
 D3DKMDDI_VSSLO_PROGRESSIVE                 =1,
 D3DKMDDI_VSSLO_INTERLACED_UPPERFIELDFIRST  =2,
 D3DKMDDI_VSSLO_INTERLACED_LOWERFIELDFIRST  =3,
 D3DKMDDI_VSSLO_OTHER                       =255
}
D3DKMDDI_VIDEO_SIGNAL_SCANLINE_ORDERING;
并且可以被用来规定每一个字段是否包含一个帧的全部内容或者仅包含它 的一半(例如,奇/偶行可交替地)。利用一个enum明确规定这个特征既可以使 客户不用必须包含基于模式的查找表,并还可以延伸到未在 D3DKMDDI_VIDEO_SIGNAL_STANDARD enum中列举的将来的标准模式。
存储用于可视/有源像素映射的增量而不是可视像素的尺寸和偏移,这具有 理想/默认状态为零的增加的好处。
VidPN显现路径转换描述符可以被定义为:
typedef enum_D3DKMDDI_VIDPN_PRESENT_PATH_TRANSFORMATION
{
 D3DKMDDI_VPPT_IDENTITY  =1,
 D3DKMDDI_VPPT_CENTERED  =2
}
D3DKMDDI_VIDPN_PRESENT_PATH_TRANSFORMATION
其中:
·D3DKMDDI_VPPT_IDENTITY表示按现状呈现的源内容。注意,这个 转换当且仅当视频显现源和目标模式的空间分辨率匹配时才有效。
·D3DKMDDI_VPPT_CENTERED表示未按比例呈现的源内容,相对于 目标模式的空间分辨率来聚集。
一个规定VidPN应至少规定一个有效的拓扑,但是还可以具有用分别地固 定的模式配置的一些或全部的它的目标/源。
返回代码
STATUS_SUCCESS表示驱动器成功执行调用。
STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY表示规定的VidPN 拓扑是无效的。
表54-功能EnumCofuncVidPNSourceIDSet typedef NTSTATUS     (APIENTRY*PFND3DKMDDI_ENUMCOFUNCVIDPNSOURCEIDSET)     (IN HANDLE                                     hAdapter,     IN OUT D3DKMDDIARG_ENUMCOFUNCVIDPNSOURCEIDSET* pEnumCofuncVidPNSourceIDSetArg); typedef struct_D3DKMDDIARG_ENUMCOFUNCVIDPNSOURCEIDSET {   IN D3DKMDDI_VIDPN*                         pConstrainingVidPN;   OUT D3DKMDDI_VIDEO_PRESENT_SOURCE_ID_SET*  pCofuncVidPNSourceIDSet; }  D3DKMDDIARG_ENUMCOFUNCVIDPNSOURCEIDSET;
EnumCofuncVidPNSourceIDSet枚举一个与规定VidPN实施共同作用的 VidPN源ID组。VidPN源当且仅当其可以通过至少一个视频显现路径被加入到 它的拓扑,而不表现出VidPN无效或不被支持时,可以与给定VidPN实施共同 作用。微端口可以分配一个足够大的缓存器,以便通过 pEnumCofuncVidPNSourceIDSetArg利用 D3DKMDDI_INTERFACESPECIFICDATA.pfnAllocSysMemForOutParamCb容 纳整个枚举结果。分配的尺寸应为 (D3DKMDDI_VIDEO_PRESENT_SOURCE_ID_SET)的尺寸+(D3DKMDDI_ VIDEO_PRESENT_SOURCE_ID)的尺寸*(共同作用的视频显现源的#-1)。
一旦用于输出参数的存储器已分配,微端口可以基于下列的定义对其进行 填充:
typedef struct_D3DKMDDI_VIDEO_PRESENT_SOURCE_ID_SET
{
 SIZE_T                              NumOfVidPNSourceIDs;
 D3DKMDDI_VIDEO_PRESENT_SOURCE_ID    VideoPresentSourceIDs[1];
}
D3DKMDDI_VIDEO_PRESENT_SOURCE_ID_SET;
·NumOFVidPNSourceIDs规定列举在VideoPresentSourceIDs中的视频显 现源的ID的数量。
·VideoPresentSourceIDs表示该组中视频显现源的ID阵列。
在从这个功能成功返回的基础上,操作系统可以取得以输出参数的形式返 回的数据的使用期的所有权,并且在完成时可以释放被它的支持分配所占用的 存储器。
返回代码
STATUS_SUCCESS表示驱动器成功地执行调用。
STATUS_GRAPHICS_INVAILID_VIDPN_TOPOLOGY表示被规定的 VidPN拓扑是无效的。STATUS_NO_MEMORY表示微端口不能分配一个适合 所请求的枚举的缓冲器。
表55-功能EnumCofuncVidPNTargetIDSet typedef NTSTATUS     (APIENTRY*PFND3DKMDDI_ENUMCOFUNCVIDPNTARGETIDSET)     (IN HANDLE                                     hAdapter,     IN OUT D3DKMDDIARG_ENUMCOFUNCVIDPNTARGETIDSET* pEnumCofuncVidPNTargetIDSetArg); typedef struct_D3DKMDDIARG_ENUMCOFUNCVIDPNSOURCEIDSET {   IN D3DKMDDI_VIDPN*                        pConstrainingVidPN;   OUT D3DKMDDI_VIDEO_PRESENT_TARGET_ID_SET* pCofuncVidPNTargetIDSet; } D3DKMDDIARG_ENUMCOFUNCVIDPNTARGETIDSET;
EnumCofuncVidPNTargetIDSet枚举一组与规定VidPN实施共同作用的 VidPN目标ID。VidPN目标当且仅当其可以通过至少一个视频显现路径被加入 到它的拓扑,而不表现出VidPN无效或不被支持时,可以与给定VidPN实施共 同作用。微端口可以分配一个足够大的缓存器,以便通过 pEnumCofuncVidPNTargetIDSetArg利用 D3DKMDDI_INTERFACESPECIFICDATA.pfnAllocSysMemForOutParamCb容 纳整个枚举结果。分配的尺寸应为 (D3DKMDDI_VIDEO_PRESENT_TARGET_ID_SET)的尺寸+(D3DKMDDI_ VIDEO_PRESENT_TARGET_ID)的尺寸*(共同作用的视频显现目标的#-1)。
一旦用于输入参数的存储器已分配,微端口可以基于下列的定义对其进行 填充:
typedef struct_D3DKMDDI_VIDEO_PRESENT_TARGET_ID SET
{
 SIZE_T                              NumOfVidPNTargetIDs;
 D3DKMDDI_VIDEO_PRESENT_TARGET_ID    VideoPresentTargetIDs[1];
}
D3DKMDDI_VIDEO_PRESENT_TARGET_ID_SET;
其中:
·NumOfVidPNTargetIDs规定列举在VideoPresentTargetIDs中的视频显现 目标的ID的数量。
·VideoPresentSourceIDs表示该组中视频显现目标的ID阵列。
在从这个功能成功返回的基础上,操作系统可以取得以输出参数的形式返 回的数据的使用期的所有权,并且在完成时可以释放被它的支持分配所占用的 存储器。
返回代码
STATUS_SUCCESS表示驱动器成功地执行调用。
STATUS_GRAPHICS_INVAILID_VIDPN_TOPOLOGY表示被规定的 VidPN拓扑是无效的。
STATUS_NO_MEMORY表示微端口不能分配一个适合所请求的枚举的缓 冲器。
表56-功能EnumVidPNCofuncModality typedef NTSTATUS     (APIENTRY*PFND3DKMDDI_ENUMVIDPNCOFUNCMODALITY)     (IN HANDLE                                   hAdapter,     IN OUT D3DKMDDIARG_ENUMVIDPNCOFUNCMODALITY*  pEnumVidPNCofuncModalityArg); typedef struct_D3DKMDDIARG_ENUMVIDPNCOFUNCMODALITY {   IN D3DKMDDI_VIDPN*                   pConstrainingVidPN;   OUT D3DKMDDI_VIDPN_PRESENT_PATH_SET* pVidPNPresentPathSetWithCofuncModeSets; } D3DKMDDIARG_ENUMVIDPNCOFUNCMODALITY;
EnumVidPNCofuncModality使得操作系统在规定VidPN中的每一个视频显 现路径上枚举共同作用的视频显现和目标模式组,其中:
·PConstrainingVidPN是相对于其VidPN目标和源上的共同作用的模式 组正被搜索的VidPN。
·pVidPNPresentPathSetWithCofuncModeSets是VidPN显现路径组,其中 每一个源/目标被与约束的VidPN共同作用的模式组填充。如果约束的VidPN的 任何源/目标具有固定到它们上的模式,那么它们的索引将在结果组中的相应 VidPN源/目标描述符中被正确地更新。
微端口应该填充:
pVidPresentPath->VideoPresentSource.pCofuncVidPNSourceModeSet->VidPNSourceModes[1..n]
以及
pVidPresentPath->VideoPresentTarget.pCofuncVidPNTargetModeSet->VidPNTargetModes[1..m]
其中
D3DKMDDI_VIDPN_PRESENT_PATH*pVidPresentPath=(*o_ppVidPNPresentPathSetWithCofuncModeSets)- >arr_VidPresentPaths[1..k];
在从这个功能成功返回的基础上,操作系统可以取得以输出参数的形式返 回的数据的使用期的所有权,并且在完成时可以释放被它的支持分配所占用的 存储器。
返回代码
STATUS_SUCCESS表示驱动器成功地执行调用。
STATUS_NO_MEMORY表示微端口不能分配一个适合所请求的枚举的缓 冲器。
表57-功能RecommendFunctionalVidPN  typedef NTSTATUS     (APIENTRY*PFND3DKMDDI_RECOMMENDFUNCTIONALVIDPN)     (IN HANDLE                                    hAdapter,     IN OUT D3DKMDDIARG_RECOMMENDFUNCTIONALVIDPN*  pRecommendFunctionalVidPNArg); typedef struct_D3DKMDDIARG_RECOMMENDFUNCTIONALVIDPN {   IN UINT                              NumberOfMonitors;   IN D3DKMDDI_VIDEO_PRESENT_TARGET_ID* pVidPNTargetPrioritizationVector;   OUT D3DKMDDI_VIDPN*                  pRecommendedFunctionalVidPN; } D3DKMDDIARG_RECOMMENDFUNCTIONALVIDPN;
假定h/w的当前状态,RecommendFunctionalVidPN使得操作系统查询由微 端口推荐的VidPN。它可以被操作系统在其遇到没有规定用户优选项(例如最 后使用形态)的配置时使用。作为这个请求的一部分,操作系统向微端口规定 VidPN目标ID矢量pVidPNTargetPrioritizationVector,矢量按最重要优先来排序, 其表示连接到它们上的监视器的相对重要性。微端口将按顺序地分配充足的存 储器填充起作用的VidPN、填充相应的字段并将它的地址分配给 pRecommendedFunctionalVidPN,其中起作用的VidPN希望推荐给操作系统以用 于h/w的当前状态。在从这个功能成功返回的基础上,操作系统可以取得以输 出参数的形式返回的数据的使用期的所有权,并且在完成时可以释放被它的支 持分配所占用的存储器。
返回代码
STATUS_SUCCESS表示驱动器成功地执行调用。
STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN表示微端口不具有 推荐给显示适配器当前配置的VidPN。
STATUS_NO_MEMORY表示微端口不能分配一个适合所请求的枚举的缓 冲器。
实例49-示例性视频再现装置驱动器的装置特定部分
在此所述的任何技术都可以在一个视频再现装置驱动器的装置特定部分中 实施。驱动器的可再次使用的部分可以经过视频再现装置驱动器共享。
例如,在MICROSOFTWINDOWS操作系统中执行的实施中,视频端 口可以作为驱动器的可再次使用的部分,并且视频微端口可以作为视频再现装 置驱动器的装置特定部分。
示例性优势
多监视器显示模式管理是一个复杂的问题,其涉及视频再现/呈现装置(例 如显示卡也被称为图形适配器)以及视频监视装置(例如监视器)的性能。导 致显示模式管理复杂的主要问题是图形显示装置对象(例如MICROSOFT WINDOWSGDI对象)的性能之间的固有的相关性,其中每一个代表一个映 射在单个多输出显示卡上的单独(视图,输出)映射,这是传统显示模式管理 结构不能很好地处理的。
这些相关性主要由如下方面产生:(1)系统中视频输出编解码器具有的视 频输出端比编解码器能驱动的输出端多而可能出现争用;(2)用大量的方法来 满足一个在给定显示卡中建立任何给定的多输出视频呈现配置的请求,很大程 度上是由于:(a)显示卡中视频输出编解码器的性能的差异;(b)显示卡的通 过利用交叉线来利用具有各种视频输出的视频输出编解码器的能力,该交叉线 可以将任何视频输出编解码器布置到任何兼容的视频输出端;(c)在视频输出 编解码器是缺乏的资源时(例如小于将要被驱动的视频输出的数量时),显示卡 为多视频输出共享视频输出编解码器的能力;(d)在不允许对视频流中的一个 进行窜改的情况下或在视频流上需要覆盖的第二信号为模拟格式,并且仅为了 加入一个数字覆盖而对其解码然后再调制是浪费的情况下,显示卡将多视频输 出编解码器或单个多输入视频输出编解码器用于单个视频输出(例如覆盖)的 能力;(3)由于利用视频输出编解码器而产生的视频存储器总线带宽的争用, 其中,每一个编解码器负责在相应的视频输出接口上将与主表面(或多个表面) 有关的内容转换成视频信号,这基本上减小了对视频存储器的定期读取;或者 (4)由于主表面需要支持给定的视频显现路径(例如从被再现的数字内容到物 理视频接口输出的逻辑路径)而引起的视频存储器容量的争用。
因而,上述的多个可利用的显示模式组(视图,输出)对之间的相关性比 仅基于一个(视图,输出)对的复杂。特别地,选择视图上使用一个给定的主 表面格式可以影响哪个视频信号可在相应输出上显示。并且,当考虑到单个视 图被显示在多个输出上的情况时,可利用的视频信号组基于如何利用视频输出 编解码器和利用哪一个视频输出编解码器实现最终的呈现配置来变化。最后, 当考虑到在单个视频卡上应用多个视图(每一个可能被送到多个输出)的情况 时,可利用的视频信号基于各种视图和输出之间的关系变化。即,显示卡在其 输出端上可以驱动的视频信号是要求呈现的主表面的类型以及它们被呈现(例 如,呈现到那些输出端)应采取的形式的功能。
此外,设计时可以不考虑现代显示卡的缩放能力,其能对给定主表面内容 增加或减小取样来得到不同的空间分辨率,以便被相应的视频输出驱动。同样, 可对多输出显示卡作出的两个主要提取是:(1)包括显示卡和监视器的多功能 显示装置提取的简化视图,被以统一的“显示模式”描述符形态表现,该视图 中包含两种不同的物理装置的状态;以及(2)单个输出模式枚举至多输出的扩 展,这个扩展可以通过对独立的视频驱动器栈以及相应图形装置进行每个(视 图,输出)复制一个来获得。这些提取不足以正确地驱动这样的装置,并且可 以用下述的代替:(1)视图和输出的区别形态描述符;(2)每个显示卡一个视 频驱动器栈,视频驱动器管理一个暴露一个有平衡能力的DDI的视频微端口, 该DDI使得一个客户固定这些其需要的模式,并且重新枚举一个已更新的可利 用的模式组,最后以一系列的反复(例如图形搜索)会聚在一个功能性解决方 案上;以及(3)增加一个实施,以便支持显示模式相关性,最后可利用的模式 组无效,并且模式改变失败。
替换实施例
任何实例中的技术可以与任一个或更多个其他实施中显现的技术组合。考 虑到也可以应用本发明原理的许多可能的实施例,应认识到:所示实施例是本 发明的示例,并且不应作为本发明范围的限制。相反,本发明的范围包括下面 权利要求所覆盖的范围。因此,我们要求在这些权利要求的范围和精神内的所 有的发明作为我们的发明。
相关申请数据
本申请要求在2004年4月30日申请的美国临时申请第60/567053号申请 案、在2004年8月24日申请的美国实用新型申请第10/925662号申请案、在 2004年8月24日申请的美国实用新型申请第10/925445号申请案、在2004年8 月24日申请的美国实用新型申请第10/925837号申请案以及在2004年8月24 日申请的美国实用新型申请第10/925859号申请案的优先权,所有这些在先申请 以参照的方式并入本文中。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈