简化视频再现器与图形设备驱动器之间的交互作用的制作方法

文档序号:6577996阅读:141来源:国知局

专利名称::简化视频再现器与图形设备驱动器之间的交互作用的制作方法
技术领域
:本公开通常涉及处理用于显示的图像图形,特别是,作为辨i胆不仅限于此,即在视频显示与图形设备驱动器之间f,一个通信信息协议来简化他们之间的妊作用,以及随之出现的功能性。这种信息可以包括査询、响应、指令等等,它们被发往例如ProcAmp调节操作。背景在一个典型的计算机环境中,一块图形卡或者對以的设备會辦传输图像到一个显示设备上和用于管理至少部分的图像处理。对于视频图像,经常需要图形卡和全部的计算机设^<吏用一种图形覆盖设备和技术。例如,为了显示来自于一个DVD或者因特网流媒ffi的视频图像,需要启动一个图形覆盖禾辦来放置和维持视频图像。一个图形覆盖禾號选择一^:方形和一个基色用于^:视频图像将MM示的屏幕位置。对于一个长方形的角连同期望的高度与宽度一起,一个长方形可以定义一个起始坐标。基色通常是一种很少看到的颜色,例如明亮的粉红色,用于确保视频被覆盖在定义的长方形内部,除非视频被逻辑的定位在一个显示屏桌面的最上层。在操作中,因为图形卡向一个显示设^f共像素颜色,它检查以确定一个给出的像素位置是否在衫^的图形覆盖长方形内。如果不是默认的图像娜被发往显示设备。另一方面,如果给出的像素位置在扭^的图像覆盖长方形内,图形卡会检査确定那个像素的默认图像数据是否与衫隨的基色相同。如果不同,对于给出的像素,默认的数据图像被发往显示设备。另一方面,如果给出像素的颜fefb^定的基色,对于那个给出的像氣图形卡将视频图像数据发往显示设备。不幸的是这种图形覆盖技术有几个缺点。第一,通常只有具有充足的硬件资源,才會树于一个图形覆盖程序在任何一次都是有效的。无论如何,依靠图形覆盖技术总是由于受到硬件上柳艮制而导致可能同时进行视频显示的数量上的限制。第二,当包含被显示视频的窗口在显示屏幕的桌面周围被有力地移动时,粉红色或者其他基色有时会成为可见的(例如在一个相关的显示设备上显示)。第三,因为在显示设备上显示的视频图像没有被打印屏幕命令捕获,一个打印屏幕命令同样不会有效地起作用。代替的,基色被打印屏幕命令捕获到,因此打印出的(或者被复制的和被粘贴的)图像包括一个基色的实心长方形,在这里视频显示在显示设备上。另一种用于显示视频图像的技术需要^ffl主机的微处理M传输的图形处理器的视频图像发到到显示设备之前进行视频调节。这种主机处理器技术也有几个缺点。第一,一个典型计^m环境的主机微处理器和相关的内存子系统没有针对大型视频图像进行优化。因此,可以显示的视频图像的大小和数量l,格的限制。第二,为了主机的微处理器有效的工作,视频图像一定要驻留在主机微处理器可以直接寻址的内存里。结果,其他类型的硬件加速,例如解压縮和/或去隔行,都不能在视频图像上执行。简而言之,前面的技术,例如图形覆盖禾旨和依靠微处理器,都导致了视觉的假象,太辭口/或不能有效地利用内存,受硬件限制,抑制视频显示的灵活性,和减不能j顿一个全功能的打印屏幕命令。因此,需要有一个方案和/或方》妹补救这些和那些的不足,特别是来简化视频再现器与图形设备驱动器之间的妊作用。鹏简化视频再现器与图形设备驱动之间的交互作用可以通过通信协议和/或应用程序接口(APIs)皿行,应用fMi^口允许与相关图形硬件的图像处理能力有关的信息在一个图形设备驱动器和一个视频再现器之间交换。图像处理能力包括视频处理能力;作为例子但是不仅限于此,视频处理能力包括处S^大(ProcAmp)控制调节,去隔行,屏幕高宽比校正,颜色空间转换,帧速率转换,垂直或者水平反映和alpha混合。在一个典型的方法实施例中,一个方法简化一个或者多个视频再现器和至少一个图形设备驱动器之间的交换作用,这个方^S括由一个或者多个视频再现器的一个视频显示发出查询动作,至少一个上述图形设备驱动器与视频处理能力有关;通过至少一个图形设备驱动器,通知视频再现器至少一个图形设备驱动器可以J^共给视频再现器的视频处理能力的至少一W集。在第一个典型的媒体实施例中,一个视频显示中的电子可执行指令做出的动作包括从一个视频显示向一个图形设备驱动器发出查询,这个查询请求信息涉i3^ocAmp能九从图形设备驱动器接收一个视频显示的响应,这个响应包括与ProcAmp能力有关的被请求的信息。在第二个典型的媒体实施例中,一个图形设备驱动器中的电子可执行指令做出的动作包括从一个视频发生器接收一个图形设备驱动器的査询,这个查询请求是与ProcAmp能力有关的信息;同B寸从图形设备驱动器向视频发生器发出一个响应,这个响应包括与ProcAmp會旨力有关的被请求信息。在一个典型的系统实施例中,一个系统简化视频再现器与图形设备驱动器之间的交互作用,这个系统包括适合准备査询的视频显^辑,这个査询请求涉及可以提供给将要显示视频的处理放大(ProcAmp)能力的信息;适合准备响应的图形设备驱动逻辑,这些响应指出可以提供给将要显示视频的ProcAmp能力。其他方法,系统,设备,协议,媒体,酉ss等等的实施例在这里描述。附图的简要描述在整个附图中涉及相似的和/或相应的M方面,特征和元州吏用相同的数字。图1是包括一个ProcAmp调节操作的第一个视频处理流程图流程图。图2是包括到达一个RGB渲染目标的两个视频处理操作的第二个视频处理流程图。图3是包括到达一个RGB渲染目标的一个视频处理操作的第三个视频处理流程图。图4是一个结构图,它举例说明配置用于简化视频再现器与图形设备驱动器之间的交互作用的一^i十穀M者其他电子设备的某些的功能部件。图5是一个通信/信号图,它举例说明一个视频再现器和一个图形设备驱动器之间的一个典型协议。图6是一个流程图,它举例说明一个简化l^频再现器和一个图形设备驱动器之间的交互作用的一个典型的方法。图7鄉i脱明肯嫩(^的或者部分的)实现这里描述的简化视频再现器与图形设备驱动器之间的交互作用的至少一方面的一个典型计算(或者一般的电子设备)运行环境。详细描述典型的视频处理流程图禾nProcAmp调节具有一个ProcAmp调节的典型视频处斑mi呈图图l是包括一个ProcAmp调节操作104的第一个视频处理流程图100。第一个视频处理流程图100可以使用图形硬件例如一个图形卡来实现。它包括(i)三个图像内存方框102,106和108,和(ii)至少一个图像处理操作104。图像内存方框102包括一个YUV视频图像画面外普通平面。包含一个举例说明的ProcAmp调节操作104的图形处理操作104被应用到图像内存方框102来产生图像内存框106。图像内存框106包括一个YUV画面外普通平面或者一个YUV结构,它于参数和执行图像调节操作的图形硬件的能力。在一个或者更多附加的图像处理操作后(没有在图l中明确的表示),图形硬件产生图像内存方框108,它包括一个RGB渲染目标。图像内存方框108的RGB渲染目标可以通过图形硬件在一个显示设备显示,而不用额外的图像处理操作。而且图像内存方框108包括一个显示设备的屏幕的^像素的图像数据,以至于在图像数据从图像内存方框108转发到显示设备时不需要从其他的内存收回图像麵。ProcAmp调节操作104涉及到一个或者更多的处S^文大(ProcAmp)调节。ProcAmp调节m^i于lJ[!M皮剤诸、操作和显示的州婉附對自。1践,现在可以使用数字技术执行ProcAmp调节操作104。这种ProcAmp调节操作104可以包括一个或者更多的操作,它们被指向至少下面的视频特性中的一个或者几个明亮度、对比度、饱和度和色调。典型的ProcAmp相关视频特性明亮度、对比度、饱和度和色调的随后的描述,连同用于操作他们的值的可能的和/或建议的设置,是用于一个典型的描述性实施例。其他的ProcAmp调节准则可以选掛iMOT。明亮度明亮度也被认为是"黑设置";明亮度不能与增益(对比度)相混淆。它被用于在每一,别的观看瞎况下设置'观看黑色,的级别。功育让地它从一幅画面的所有亮度字中增加或者减少量化步骤(比特)的相同数量。如果偏移加上一些亮度亮度字小于O或者大于全范围,它肖嫩而且通常创建剪辑的情况。它通常与对比度控制赶作用。对比度对比度是图画亮度的'增益'。它是用于更改画面的相关的亮到暗的数值。功能上它是一个线性的正或负的增益,即将数值的输入范围,到一个更小或者更大的范围。设置点(举例来说,当增益变化时没有改变)通常等于一个代^0,但是更适当地这个代码字与一个标称的观看黑色设置点有关。对比度增益结构通常是一个通皿个设置点的线性的传输斜面。如果设置的增益不是1对1的,对比度功育嗵常包括计算的数值的舍入,舍AM常包括i伐胜的抖动M免可视的假象'造型,的产生。饱和度饱和度劍比度的逻辑当量。它是一个增益功能,带有围绕一个"零色度"的设置点(例如,在描述的实施例中的YUV上的代码128或者RGB上的代蹄)。色调色调是色度成分的一个相位关系。色调典型地以级别M示,具有一个从一180到+180的可用范围和一个默认的0级别。成分系统(例如,YUV或者RGB)中的色调是一个三部分的变量,其中三个成f起变化以便维持可用的色傲^^M。^YUV颜色空间中的典型的ProcAmp相关调节下面的用于^EYUV颜色空间内处理明亮度、对比度、饱和度和色调的描述连同用于操作他们的值的可能的种^^议的^gW^^个鹏6^^M列。其他的ProcAmp调节准则可以选掛也使用。一般地,feTJV颜色空间的工作简化了用于一个视频流的ProcAmp调节控制包括的计算。Y处理从Y值中减去16用来将黑色级别定位在0。这样去掉了DC的偏移以至于调节对比度不会改变黑色级别。因为Y值可以小于16,负的Y鹏该在处理中的这个点被支持。对比度舰将YUV像素麟以一个常数调节。(如果U禾PV被调节,无论什么时候改,比度都会导致一个颜色的偏移)。从对比度调节的Y值添加(或者劇》)明亮度特性值,这阻止由于对比度调节而产生的DC的偏移。最后,将16力晒来重新将黑色级别定位在16。一个用于Y值处理的典型公式是这样的Y,=((Y—16)xC)+B+16这里C就比度值,B是明亮度值。uv处理首先从u禾nv中减去i28来将范围定位在o周围。^4虫的色调特性通过像下面一样将U值禾,混合在一棘实现U,=(U—128)XCos(H)+(V—128)XSin(H),和V,=(V—128)XCos(H)—(U—128)XSin(H),这MH代表所需的色调角度。饱和度舰将u禾nv都乘以一个与饱和度值在一起的常麟调节。最后,数值128被加回至UU禾PV。上的色调和饱和度的组合处理是这样的U,=(((U—128)XCos(H)+(V—128)XSin(H))XCXS)+128,和V,=(((V—128)XCos(H)—(U—128)XSin(H))XCXS)+128,这里C壯面的Y'公式中的对比度值,H是色调角度,S是饱和度。具有两个处理操作的典型视频处理流程图图2是包括到达一个RGB渲染目标108的两个视频处理操作202禾口206的第二个视频处理流程图200。第二个视频处理流程图200包括(i)三个图像内存方框102,204和108,禾B(ii)两个图像处鹏作202和206。—般i舰于第二个视频处理流程图,图像内存方框包括一个RGB纹理。图像内存方敏04由图像内存方框102在图像处理操作202,禾辨后产生。图像内存方框108由图像内存方敏04在图像处作206应用禾1^后产生。其他图像处理操作,加上一个ProcAmp控制调节可以被实现。例如,下面任何一个或者更多的典型视频处理操作可以在这些被显示在一个显示设备的屏幕上之fl^共给视频图像数据1.ProcAmp控制调节2.去隔行3.屏幕高宽比校正4.颜色空间转换5.垂直或者^C平反映和alpha混合在可能的时候,所需的视频(和/或其他图像)处理操作被组合成尽可能少的操作,以便减少处理视频图像时消耗的全部的内存带宽。处理操作可以被组合到的级别一般取决于图形硬件的性能。典型地,颜色空间转换处理和屏幕高宽比校正操作l鹏用至鹏多的视频流,否则就是最多。可是,垂直或者水平反映和alpha混合不被频繁的应用。对于第二个视频处理流程图200,ProcAmp调节处理和颜色空间转换处理被组合到图像^M^包02。屏鶴宽tl^IE和图像^^包06l^i行。可Jii也,垂1^#水平反映种麵威合可以鄉合到图像^作206。正如娜述的,实现第二个视频流程图200的图形硬件使用两个图像处理操作和三个图像内存块来产生图像内存i央108作为RGB渲染目标。可是,某些图形硬件可以更有效。具有一个处理操作的典型视频处理流程图图3是包括到达一个RGB渲染目标108的一个视频处理操作302的第三个视频处理流程图300。一般地,第三个视频处理流程图300通过使用一个图像处理操作302和两个图像内存,102禾tn08的图形硬件来实现。特别地,图像内存方框108通过图像处作302由图像内存方框102产生。正如所描述的,图像处理操作302包括下面描述的多个挪频处理操作。第三个视频处理流程图300比第二个视频处理流程图200(图2)更短,因为图像处,作302结合了ProcAmp调节处理,颜色空间转换处理和屏幕高宽比校正处理。因此一个给出的视频处理流程图中的步骤的数目由显示视频图像的软件(例如,一个应用禾號,一个操作系统的成分等等)和相关的图形硬件一起请求的图像处理操作的数目和类型来决定。典型的软件,图形硬件等等在下面参考图4作进一步描述。典型的视频相关软件和图形硬件图4是一个结构图400,它對列说明配翻于简化视频再现器见频再现駒IO与图形设备驱动t!422之间的交互作用的一个计算的某些功能性元件或者其他电子设备。这些多样的典型元件和/或功能在硬件,软件,固件和一些其中的组合等等中可以实现。参照本文的描述,这些硬件,软件,固件和一些其中的组合等等逻辑上可以是组合的和分离的。结构图400的配置只是一个视,M^处理设备或者系统的一个例子。应该理解为,描述的和描写的元件和/或功能的一个或者更多可以组合、调整、增加、省略等等,而不会损害简化视频再现器与图形设备驱动器之间的交互作用的能力。设备或者系统400包括转换逻辑408,例如它可以包括由一个中央处理单元(CPU),—个图形处理单元和/或其中的一个组合执行的指令。转换逻辑408被配置为从至少一个源406接收编码的视频数据。来自源406的编码的视频数据以一些方式被编码(例如MPEG-2等等),转换逻辑408被配置为解码这些编码的视作为例子,源406可以包括一个磁盘和有关的磁盘驱动器,一个光盘和有关的圆盘驱动器,一个磁带和有关的磁带驱动器,固态内存,一个被传输的信号,一个传送媒体,或者其它的被配置为递送或者另外地将编码的视频数据提供给转换逻I408的相似的源。源406的附力啲例子在下面参考图7进行描述。在一般的实施例中,资406可以包括多种的源部分,例如一个网络源和远程源。正如所描述的,源406包括因特网404和一4S^程基于磁盘的存储駒02。被转换逻辑408输出的解码的视频数据被提供给至少一个视频再现:^见频再现駒IO。作为例子但不仅限与此可以j柳McrosoftWindows操作系统(OS)的视频混合器和显示器(VMR)来实现视频再现f^见频再现^410。在描述的实施例中,视频再现器视频再现駒10被配置为在解码视频流中帮助转换逻辑408,来促成要被执行的视频处理操作,来混合ftf可其他的辅助的图像麵,例如闭路字幕(CCs)M带有柳频图像的DVD子画面图像等等。在适当的时间,对于在一个显示设备436上的可能显示,视频再现^M频再现fl410提交或者促成视频图像到图形接口逻辑412。因而,得到的翻译出的视频被樹共给图形接口逻斷12。作为例子但不仅限于此,图形接口逻辑412可以包括例如DirectDmw,Direct3D,禾口/或其他类似的逻辑。图形接口逻辑412被配置为在视频再现Mi频再现lt410与图形设备424之间提供一个接口。正如所描述的,图形设备424包括一个图形处理器单元(GPU)426,一个视频内稱32,和一个数字到模拟转换器(DAC)434。作为例子但不仅限于此,图形设^424可以作为一个被酉還在计算赫其它电子设备内部的柳顷图形卡来实现。图形接口逻辑412输出的图像{顿一个设备驱动器接口(DDI)414被掛共给一个图形设备驱动駒22。在图3中,设备驱动,口414被描述为其至少具有一个应用,Mif接口(API)。设备驱动器接口414被配置为支持和/或建立在视频再WH见频再现^410和图形设备驱动II422之间的接口。正如在设备/系统400中所描述的,对于一个描述的实施例,设备驱动皿口414和图形设备驱动駒22可以进一步被分类为关于相关操作系统环境和图形设^424的一个用户模式418或者一个核心模式420的一部分。因此,视频再现器视频再现駒10和设备驱动離口414是用户模式418的一部分,图形设备驱动器422是核心模式420的一部分。那些至少发生在设备驱动口414和图形设备驱动駒22之间的通f該叉在用户模式418和核心模式420之间。在这个描述的实施例中,视频再现掛见频再现駒10输出的视频图象数据就是这样提供给图形处理器单元426的。图形处理器单元426被配置为执行一个或者更多的图像处理操作。这些图像处理操作包括ProcAmp调节和/或其他的分别由ProcAmp调节逻,28称^^他挪MKW作逻賴30所指出的视频^a^作。ProcAmp调节操作和其他的典型视频处理操作,例如去隔行和帧速率转换,像上面一样将在下面作进一步的描述。来自图形处理器单元426的输出被樹縣合视频内科32。当视频内斜32被读取时,产生的图像可以,^^到一个鮒莫转换駒34,转换器输出一倾合被显示设^436显示的模拟视频信号。在其他的配置中,显示设^436育辦显示来自视频内科32的数字图像数据,而不用一个辦莫拟转换II434的模拟转换。在一个^见频再现器和一个图形设备驱动器之间的典型协议图5是一个通信/信令图表500,它執列说明一个视频再现辦见频再现l1410和一个图形设备驱动^422之间的一个典型协议。典型协议优化f!ProcAmp调节一样的视频(或者其他图像)处理操作的性能。这样的视频处理操作可以包括那些被一个用户请救指定的被撒活和M^制的视频显示应用禾辦(例如一个策划应用辦)。通信/信令图表500包括在视频再现^^见频再现著l410和图形设备驱动H422之间的多个信息交流和通信传输。可选地,M图形接口412(图4中的)和/或设备驱动器接口414,可以打幵和/或帮助这些通信31M图形接口412(图4中的)禾口/或设备驱动,口414,和其中的任何可应用的API。一个信息交船02!M^来确定视频处理(VP)兽g力。特别地,在传您02A中视频再现Wi频再现ll410请求或者査询图形设备驱动:^422关于被图形设备驱动駒22处理和,的视频处理能力。响应502B,图形设备驱动II422告知视频再现親皮分配的视频处理能力。被分配的视频处理能力包括那些视频设备驱动^422能够执行的视频处理操作。这些可以包括ProcAmp控制调节,去隔行操作,屏幕高宽比校正,颜色空间转换,垂直或者7jC平反B央和alpha混合,帧速,换等等中的一个或者更多。图形设备驱动ll422可以选择^f共剩余的视频处理操作带宽的全部或者一部分。通过分配小于全部的剩余视频处理操作带宽,图形设备驱动器能够对于后面的请求保^页留嫩卜的视频处作带宽。一个信息交流504被发送来确定控审孵性能力用于一个指定的视频处理操作。在一个从视频再现器视频再现器410发到图形设备驱动器422的一个请求504A中,视频再现t^见频再现H410指定了一个分配在响应502B中的特别的视频处理操作。请彩04A也可以包括一个质询,为了使图形设备驱动^422t,行关刊寺别的视频处理操作的什么能力或者哪一种特性能九在响应504B中,图形设备驱动器通知视频再现器视频再现^410对于这种特别的视频处理操作可用的特鹏旨力。例如,如颗辨别的视频处理操作没有多个控制特性能力,信息交^504可以被忽略。一个信息交流506被发送来确定其他分配的视频处理操作中的哪一个可以与指定的特别视频处理操作同日她行。在请彩06A中,如果需要,视频再现器视频再现^410向图形设备驱动f!422发出一个査询来确定明卜种视频处理操作可以与特定的视频处理操作同时执行。图形设备驱动^422在响应506B中告知视频再现^M频再现駒10对于图形设备驱动^422来说可能与特定的视频处理操作同时执行的视频处理操作。作为例子但不仅限于此,它应该注意(i)传送504A与506A和/或(ii)传您04B与506B可以分别地被结合到单一的査询和响应传送中。一个信息交流508被发送来确定用于特别的视频处理操作的指定的控制特性的数值。在请彩08A中,视频再现豁见频再现miO在一个质询中对f待别的视频处理操作指定了一个控制特性。指定的控制特性可以从响应504B中掛共的可用的控制特性中选择。图形设备驱动駒22向视频再现辦见频再现駒10提供一个与用于特别的视频处理操作的指定控制特性有关的数值。这雖可以是数字的设置点、范围等等,H/频再现flM频再现奢l410可以在命令图形设备驱动器422执行特别的视频处理操作的时候利用它作为一个帧网络。对于在响应504B中指出的每一个可用的控制特性,信息交流508可以ltt复。可淑也,一个这样的信息交流508可以被魏到可用的控制特性的多4t包括所雜制特性。一个信息交流510被发送来初始一个视频处理、W^。在指令510A中,视频再现^M频再现^410发出一^令到视频设备驱动^422来打开一个视频处理流对象。这*令可以被,,它代表设法在显示设^436上显示视频图像的一个应用禾將或者其他的软件部分。在响应510B中,图形设备驱动駒22向请求的视频再现fll见频再Wl410返回用于视频处理iWm的一个处理。在传递512A中,视频再现l^魁贞再现^410命令图形设备驱动^422执行特别的或者其它的被分配的视频处理操作。执行视频处理操作的命^括可以选择将要设置的数值和/或改顿辨别的视频处理操作的一个赫更多的控制特性的数值。在响应中,图形设备驱动f!422正像在传递512A中请求一样执行了一个视频处理操作512B。典型地,至少一个视频再现翻现^410被分配到将要显示视频的每一个应用,旨。无论何时这样一个发起的应用,歸都斜青求一个视频处理操作,例如可选地在重新格式化、转换等等之后,视频再现翻现駒IO发微样的请求到图形设备驱动駒22作为一个视频处理操作指令。当视频处理流对象还存在的时候,执行视频处理操作命令512A和得到的视频处a^作512B可以,需要S^OTo当现働皮^^t相关的软件终ib^,一个关闭视频处理iW^指令514会l^人视频再现,现奢!410传送到图形设备驱动駒22。例如,图4,5和6的方法在被分为多个结构和/或多次传递的图表中作了描述。但是,这些方法被描述和/戯示的Jii^和/棘局并不意赠被认为是一个限制,为了优化视频再现翻现器和图形设备驱动器之间的^S作用,可以组合禾口/或重新安排任何的结构/传递在倒刚来实现一个或更多系统、方法、媒体、协议、配置等等。此外,虽然这里的描述包括对于例如像图4(还有節中的典型系统环境)的特别实施例和典MAPI的参考,但是这些方法可以在倒可适合的硬件,软件,固件或者其中的组合中实现和4顿任何适合的编程语言、编码机制,协议范例,图形设置等等。典型的通用API实施例图6是一个流程图600,它執列说明一个简化视频再现翻现器和一个图形设备驱动器之间的交互作用的一个典型的方法。虽然像图6所反映的描述的实施例被发送至lJProcAmp调节操作,但是不是这样限制的。代替的是,至少这个典型的通用API实施例的每一个方面可以和一个或者更多其它视频(或者一般的图像)处理操作一起舰。在流程图600中,视频再现駒10与9个方框602—618有关,图形设备驱动器422与6个方框620—630有关。方框602—618和620—630中的每一个都分别iW"应由视频再现t^见频再W!410和图形设备驱动tl422执行或者代表它们的至少一个操作。流程图600在下面的典型通用API的上下文中描述。这里描述的这些通用的API被分为两种方法、设备逻辑等等的功能组。第一个组可以被用来确定图形设备的视频处理能力。第二个组可以l細棘犍和i顿视频处鹏作iW^。这些典型的通用API可以对应的被描述为设备驱动器接口414的一部分的API416(图4),它支持图形接口412,而皿接图形设备驱动#|422。API416被描述为在用户模式部分418下的设备驱动器接口414的一部分。可是,这样的API416可以更改地被定位于设备驱动器接口414的和/或作用于设备驱动器接口414之外的其^il辑。仅仅作为例子,这种其它的逻辑包括视频再现駒IO,图形接口412,核心模式部分420的1分等等。在这段中下面描述的通用的API可以,細来扩膨增微等等。例如,MicrosoftDirectX现働腿器(VA)是为了支將多禾_5作(例如,ProcAmp调节,帧速率转换等等)中的任何一个,这些操作用于与图形设备驱动器一起f皮显示的视频内容中。额外的相关信息可以妇001年1月23日的MicrosoftWindows平台设计记录中被题名为"DirectXVA:VideoAccelerationAPI/DDI"的书中找到。因此"DirectXVA:VideoAccelerationAPI/DDI"M:参考被包括在这里的总体中。虽然这里按照API描述的流程图600的动作被特别的应用到个人电脑的MicrosoftWindows操作系统的目前的进展中,但是应该懂得其中的方框和这里描述的其它实施例,用于其它的操作系统和减其它的电子设备。在TM的例子中,柳MM作的输出^lf細一个RGB織目标將式中,例如一个目标xDirectDraw表面。这样做可以排除传统的硬4權盖技术的需要。额外地,在一个显示设备上可以看到的齡屏幕,包括ftf可视频图像,存在5JS一步显示在一个内存位置以至于它可以被一个打印屏幕命令捕获到。这个打印屏幕的捕获然后可以被粘贴到一个文档中,添加到一个文件中,直接打印等等。在流程图600中,依下列各项,视频再现器再现II410可能已经被图形设备驱动^422通知相关硬件能够执行ProcAmp调节视频处理操作或者视频再现器视频再现奢!410可以确定ProcAmp能力的存在或者缺乏。在方框602中,视频再现豁见频再现^410衝共一个要MM示的视频的描述,请求关于ProcAmp控制属性的图形处理能力。视频再现器视频再现器410进行视频描述的准备和/或到图形设备驱动器422的控帝臓性请求,舰在方框602和方框620之间的传递箭头指出的一个或者多个传递。视频描述使得图形设备驱动器来改^^可用河齢等等。视频处理能力基于视频的类型。例如,可以对于几个不同类型视频中的每一个设立一个预定装置。在方框620中,视频设备驱动駒22向视频再现^i频再现駒10跑共一个可用的ProcAmp控制属性列表。这个列表可以包括零或一个或者多个明亮度,对比度,饱和度和色调。在方框604中,视频再现^H频再现駒10从图形设备驱动駒22接收到可用的ProcAmp控制属性。可以执行方框620和622的动作来响应方框602的通信。可选地,视频再现^4见频再现^410可以执行一个个别的査询来引起方框622的操作。在方框622,图形设备驱动駒22向视频再5I^见频再现駒10跑共那些可能与ProcAmp调节操作同时/并行执行的视频处理操作。这样的视频处理操作可以包括零或一个或者多个YUV2RGB,拉tX,拉宽Y,子矩形和AlphaBlend。其他这样的操作可以包括去隔行,帧速TO换等等。在,606,视频再现l^见频再现駒10从图形设备驱动駒22接收可能的同步视频处理操作。一种用于实现框602、604、606、620的至少部分操作的典型通用APT依下列各项提供ProcAmpCon加lQueryCap这个API允许视频再现^ll见频再现fl410询问图形设备驱动^422来确定关于一个ProcAmp控制设备和任何可能在同一时间正在执行的ProcAmp调节操作所支持的客妙卜的处鹏作信息。HRESULTProcAmpControlQueiyCaps([in]DXVA—VideoDesdpVideoDescription,[out]DXVA—ProcAmpControlCaps*lpProcAmpCaps);图形设备驱动器报告用于这种模式的它的能力,即用于lpPmcAmpC邵s的一^hf俞出DXVA—ProcAmpControlCaps中的能力。typedefstruct_DXVA_ProcAmpControlCaps{DWORDSize;DWORDInputPool;D3DFORMATOutputFrameFormat;DWORDProcAmpControlProps;DWORDVideoProcessingCaps;}DXVA—ProcAmpControlCaps;Size区域指出数据结构的大小,在其他情况中如果不同的版本具有不同的数据结构,它还可以被作为一个版本指示器。InputPool区域指出一个内存池,视频源表面将从这里被分配。例如内存池可以位于图形卡上的本地视频内存中,在特殊标记的系统内存中(例如,加速的图形端口(AGP)内存),一般的系统内存中等等。D3D禾PDirectDraw文件也劍共一个可用内存池位置的描述。OutputFrameFormat区域指出一个输出帧的Direct3D表面格式。ProcAmp设备可以以匹配输A^面格式的表面格式来输出帧。这个区域确保视频再现t^见频再现駒10将會^lf共至lJProcAmp控制硬件的输出帧表面的正确格式。注意到如果在VideoProcessingCaps区域中返回DXVA—VideoProcess—YUV2RGBiH己(下面可以看到),视频再现豁见频再现駒10可以假定可用的输出格式和一个RGB格式例如RGB32MJlS个区Jl^皮指定。RGB32是一种RGB格式,它具有用于每一个Red,Green禾阳lue通虔的8位的精确度和8位没有使用的,。ProcAmpControlProp区域识别硬件能够执行的ProcAmp操作。图形设备驱动駒22返回它支持的ProcAmp操作的组,辑。*DXVA—ProcAmp—None。硬件不支持ProcAmp控制操作。*DXVA—ProcAmp—Brightness。ProcAmp控制硬件可以执行^/频图像的明亮度调节。*DXVA—ProcAmp—Contrast。ProcAmp控制硬件可以执行视频图像的对比度调节。*DXVA—ProcAmp_Hue。ProcAmp控制硬件可以执行视频图像的饱和度调节。*DXVA一ProcAmp一Saturation。ProcAmp控制硬件可以执行视频图像的色调调节。VideoProcessingCaps区域识别其他可以与一个请求的ProcAmp调节同步执行的操作。下面的标己识另何能的操作DXVA—VideoProcess一YUV2RGB。ProcAmp控制硬件可以从YUV颜色空间至廿RGB颜色空间的转换视频。f顿的RGB格式对于每一个颜色成分可以有8位或者更高的精确度。如果这是可能的,可以避免视频再现^^见频再现^410内部的一个缓存复制。注意到关于这个^H己,没有MRGB颜色空间转换到YUV颜色空间的需要。DXVA—VideoProcess一StretchX。如^ProcAmp控制硬件會辦水平地拉宽皿縮,在柳频在进行ProcAmp调节的同时可以执行屏幕高宽比校正。DXVA—VideoProcess—StretchY。有时屏幕高宽比调节与一个通用图片重定制操作组合来按比例地将视频图像固定到一个应用程序定义的构图空间内。这是一个有点少见的特性。执行用于重新定制视频,合应用禾,窗口的缩放可股口用于procAmp调节的^&夂同时进行。同w^m^tsa^了m^只wf,。DXVA—VideoProcess—SubRects。这个标记指出硬件能够在图像一个矩形(子)区殿Q整个图像上操作。矩形区域可以iMffl)XVA—PracAmpControlBlt结构中的一个源矩形来识别。DXVA—VideoProcess—AlphaBlend。Alpha混合可以控制其它的图形信息怎样被显示,例如通过體透明度和/或不透明度的级另iJ。因而,一个alpha数值可以指出一个颜色的透明度或这个颜色与招可背景颜色的混合程度。这样的alpha数值可以从一个完,明的颜色到一个完全不透明的颜色。在操作中,alpha混合可以j顿一个源和背景颜色,的像素至臓素的混合来完成。一个给出的源颜色的三个颜色成分(红,纟蘇n蓝)的每一个都可以与背景颜色的相应部分混合来执行一个alpha混合操作。在一个典型实施例中,颜色可以一般由一个32位的值显示,每84OT于alpha、红、绿和蓝。而且4顿这愤性可以避免视频再现^t频再现駒10的缓存复制。但是,这也是一个很少4顿的特性,因为应用禾辨很少改变与它们的视频流相关的常数alpha数值。在流程图600的方框608中,视频再现^M频再现^410从在方框604中接收的那些之中选择一个ProcAmp控制属性。在方框610中,视频再现ME频再现器410从图形设备驱动fl422请求用于选择的ProcAmp控制属性的一个或者多个数值。在方框624中,对于请求的ProcAmp控制属性,图形设备驱动駒22向视频再现親见频再现駒10发送数值。这样的数值可能关于一个默认数值、一个增量数值、一个最小数值、一个最大数值等等之中的一个或者多个。在方框612中,视频再现1频再现^410从图形设备驱动^422接收|知用于选择的ProcAmp控制属性的一个或者多个数值。正如从方框612到方框608的流程箭头所指出的,对于多于一个包括所有的可用的ProcAmp控制属性,方框608、610、612和624的操作可以重复。可选地,在一个具有两个或更多的传递的简单通信中,视频再现^I见频再现奢I410可以询问图形设备驱动器关于多于一个也包括所有的可用的ProcAmp控制属性。一个用于实现方框608、610、612和624的至少部分操作的典型的通用API依下列各项ilf共ProcAmpControlQueryRange对于每一个Ptx)cAmp属性(明亮度、对比度、饱和度、色调),视频再现器视频再现暑糾0向图形设备驱动^422询问来确定最小值、最大值、步骤大小(增量)、默认值等等。如果硬件不支持一W寺别的PmcAmp控审嘱性,图形设备驱动器可能响/SProcAmpControlQueiyRange功能而返回"E_NOHMPL"虽然对于不同^ProcAmp^制属性,图形设备驱动駒22可以返回倒可数值,但是作为例子ilf共下面的设置数值(所有列表中的数值都是浮点数值)-属性最小值最大值默认增量明亮度-100.0F100.0F0.0F0.1F对比度0.0F脂F1.0F0.01F饱和度0.0F10,0F1.0F0.01F色调-180.0F180.0F0.0F0.1F如果默认值导致一个视频流的空转换,视频再lr^见频再现ll410被允许绕过在它的视频流程图上的ProcAmp调节阶段如果策划程序没有改变任何ProcAmp控制属性。HRESULTProcAmpControlQueryRange([in]DWORDVideoProperty,[in]DXVA一VideoDesc"pVideoDescription,[out]DXVA—VideoPropertyRange*lpPropRange);VKieoProperty识别图形设备驱动器422已经被请求返回信息用于的ProcAmp控制属性。在描述的实施例中,这个区域可能的参纖腿DXVA_ProcAmp_Brightness;DXVA—ProcAmp—Contrast;DXVA_ProcAmp_Hue;DXVA—ProcAmp_Saturation。lpVideoDescription向图形设备驱动^422^f共一个ProcAmp调节,l^用的视频的描述。对于特别的视频流描述类型,图形设备驱动^422可以调节它的ProcAmp特性支持。lpPropRange识别由VideoProperty参激区嫩旨定的ProcAmp控制属性的范围(最小值和最大值),步骤大小和默认值。typedefstruct_DXVA_VideoPropertyRange{FLOATMinValue;FLOATMaxValue;FLOATDefaultValue;FLOATStepsize;JDXVA—VideoPropertyRange,承LPDXVA—VideoPropertyRange;在流程图600的方框614中,柳频再现^见频再现奢I410向图形设备驱动器发送一个打开ProcAmpiMm命令。作为响应,图形设备驱动tl422打开了在方框626中的ProcAmp^X^。在方框616中,视频再现f^见频再现^410命令图形设备驱动^422执行一个ProcAmp调节操作,作为响应,图形设备驱动駒22在方框628执行了请求的ProcAmp调节操作。正如被滩616的弯曲流程箭头所指出的,在需要的时候(例如,无论何时被一个显示视频流的戯诉歸要求)视频再现^M频再现fl410可以继续向图形设备驱动^422发送执行ProcAmp调节操作指令。在方框618中,视频再现II4见频再现^410命令图形设备驱动fl422结^ProcAmpiW^。一个用于实现方框614、616、618、626、628和630的至少部分操作的典型的通用API依下列各项ilf共ProcAmpStreamObject在视频再现^^频再现駒10已经确定了ProcAmp控制硬件的能力后,可以创建一个ProcAmpStream)^。一个ProcAmpStream^的创建允许图形设备驱动駒22保留需要用于执m胄求的ProcAmp调节操作的招可硬件资源。ProcAmpOpenStreamProcAmpOpenStream方激健一个ProcAmpStream)^0HRESULTProcAmpOpenStream([in]LPDXVA—VideoDesclpVideoDescription5[out]HDXVA—ProcAmpStream"phCcStrm);HDXVA-ProcAmpStream输出参数;lProcAmpStream^的一个处理,用来识别在将来的通话中被发送的流。ProcAmpBltProcAmpBlt方法通过在一个比特段的传iM作中将输出写到目标表面来执行ProcAmp调节操作。HRESULTProcAmpBlt(HDXVA_ProcAmpStreamhCcStrm[in]LPDDSURFACEElpDDSDstSurface,[in]LPDDSURFACEElpDDSSrcSurface,[in]DXVA—ProcAmpBlt*ccBlt);源和目标矩^!皮用于子矩形ProcAmp调节或者拉宽。对于拉宽的支持是可选的(通过Caps禾斜己l射艮告)。同样地,对于子矩形的支持也不是强制的。目标表面可以是一个关闭屏幕的无格式、一个D3D渲染目标、一个D3D纹理、一个也是渲染目标的D3D纹理等等。例如,目的表面可以被分配在本地视频内存中。目标表面的像素格式是toXVA—ProcAmpCaps结构中指出的,除非一个YUV至ljRGB的颜色空间转化正在与ProcAmp调节操作一起执行。在这种情况下,目标表面格凝一,GB格5W讳一1^fe^分有8^m更高的繊度。ProcAmpCbseStreamProcAmpCloseStream方法结束ProcAmpStream对象,命令图形设备驱动器422释放倒可与识另啲流有关的硬件资源。HRESULTProcAmpCloseStream(HDXVA_ProcAmpStreamhCcStrm);典型的特,I实施例在这一段下面描述的特殊情况和典型API特别适合现有的用于个人电脑的MicrosoftWindows操作系统的子集。但是,仍然应该理解为下面显示的原理和伪代码的某个方面可以结合其它的操作系统和/,境而利用(不作修改皿行修改)。一个ProcAmp接口的DDI鹏对于一^M见有的MicrosoftWindows操作系统的子集的DDI下部结构的兼容性,在前一段上面描述的API可以被"鹏寸"到现有的DDI,用于DirectDmw和DirectX。这一段描述了一个,到现有的DirectDraw禾nDX-VADDI的ProcAmp接口。DX-VADDI自己分为两个功能组"DX-VA容器"和"DX-VA设备"。DX誦VA容器DDI组的目的是确定显示硬件包括的不同的DX-VA设备的数量和能力。因此,一个DX-VA驱动器只能有一个单一的容器,但是它可以支持多个DX-VA设备。将ProcAmpQueiyCaps通话映射到在DX-VA容器组中的任何DDI进入点是不可行的,因为不像其余的DX-VA,容器方、封顿打字参数。但是,DX-VA设备DD逝不j顿打字参数,因此将ProcAmp控审艘口,到设备组中的方法是可行的。这一段描述一个ProcAmp接口怎^l皮舰至ljDX-VA设备DDI的特殊例子。De-interlaceContainerDeviceDX-VA设备方法不^ffl打字参数,因皿些方法可以对于许多不同的目的重复4OT。但是,DX-VA设备方法只育巨在一个DX-VA设备的范围内^ffl,因此首要的任务是定义和创建一W寺殊的"容器设备"。U.S.Non-provisionalApplicationforLettersPatentSerialNo.l0/273,505,它被标题为"MethodsAndApparatusesForFacilitatingProcessingOfInterlacedVideoImagesForProgressiveVideoDisplays",它3MJl面的参考文jl^t行合并,包括一个去隔行容器设备的描述。那个应用,,的描述的去隔行容器设备在这里被重复^^用于ProcAmpQueiyCaps功能。DX-VA去隔行容器设备只是一个软件结构,因此它不代表倒可在一賴理设备上包含的功能硬件。下面的ProcAmp控制样品(设备)驱动器的伪代码指出容器设备可以怎稱皮一个驱动器实现。从一个用户模式部件调用DDI从一个用户模式部件例如一个(视频)再现制OTDDI的一个8个任务的典型,是下面这样的1.调用GetMoCompGuids来得到驱动器支持的DX-VA设备列表。2.如果"去隔行容器设备"GUID是目前存在的,调用CreateMoComp来创建一个DX-VA设备的实例。这个容器设^GUID被定义成下面这样DEFINE一GUIDpXVA一DeinteiiaceContainerDevice,0x0e5cb93,0x3046,0x4節,0xae,0xcc,0xd5,緣,0xb5,0xf0,0x35,0xfc);3.调用具用一个dwFunction参数的RenderMocomp,该参数识别一个ProAmpControlQueiyModeCaps操作。再一次,1pInputData参数被用来传递输入参数到驱动器,驱动器MlpOutputData参l^返回它的输出。4.对于每一个硬件支持的ProcAmp调节特性,再现器调用具用一个dwFunction参数的RenderMocomp,该参数识别一个ProAmpControlQueiyModeCaps操作。lpInputData参数被用来传递输入参数到驱动器,驱动器iMlpOutputData参絲返回它的输出。5.在再现器已经确定了硬件的ProcAmp调节能力后,它调用CreateMocomp来创建一个ProcAmp控制设备的实例。ProcAmp控制设别GUID被定义为下面这样DEFINE—GUID(DXVA_ProcAmpControlDevice,0x9細913,0x2ffd,0x4056,0x9f,0xle,0xel,0xb5,0x08,0xf2,0x2d^0xcf);6.再现器然后调用用于每一个ProcAmp调节操作的ProcAmp控制设备的具WDXVA—ProcAmpControlBltFnCodede功能参数的RenderMocomp。7.当再现器不再需要执行任何更多的ProcAmp操作时,它调用DsstroyMocompo8.驱动器释方J!ProcAmp控制设制吏用的樹可资源。ProcAmpControlQueiyCaps这个方法直接映射一个调用到去隔行容器设备的RenderMoComp方法。DD—RENDERMOCOMPDATA结构像下面一样完成參dwNumBuffers为OlpBufferlnfo为NULL參dwFunction被定义为DXVA—ProcAmpControlQueryCapsFnCodelpInputData指向一个DXVA—VideoDesc结构lpOutputData指向一个DXVA一ProcAmpCaps结构注意到DX-VA容器设备的RenderMoComp方法可以丰tt接调用,而不用先调用BeginMoCompFrame或者EndMoCompFrame。ProcAmpControlQueryRange这个方法直接映射一个调用到去隔行容器设备的RenderMoComp方法。DD—RENDERMOCOMPDATA结构像下面一样完成參dwNumBuffers为OlpBufferlnfo为NULLdwFunction被定义为DXVA—ProcAmpControlQueiyCapsFnCodelpInputData指向一个DXVA—ProcAmpControlQueiyRange结构typedefstruct—DXVA—ProcAmpQueryRange{DWORDSize;DWORDVideoProperty;DXVA—VideoDescVideoDesc;}DXVA一ProcAmpControlQueryRange,*LPDXVA—ProcAmpControlQueiyRange;lpOutputData将指向一个DXVA一VideoPropertyRange结构注意至ljDX-VA容器设备的RenderMoComp方法可以被直接调用,而不用先调用BeginMoCompFrame或者EndMoCompFrame。ProcAmpControlOpenStream这个方法直接映射到DD—MOTIONCOMPCALLBACKS结构的一个CreateMoComp方法,这里GUID为ProcAmp设站UID,pUncompData指向一个包含非数据(全零)的结构,pData指向一个DXVA—VideoDesc结构。如果一个驱动器支持压縮视频的力口M码,再现器可以调用驱动器来创建两个DX-VA设备~^^N执行由DirectXVA掛,码规范定义的实际视频解码工作,另一个^格^ffl^ProcAmp调节中。**例子i^tCreateMoComp至lJProcAmpControlOpenStream**下面的典型伪代码表示一个驱动器可以怎样,CreateMoCompDDI调用至lJProcAmpControlOpenStream的调用。伪代码^CreateMoComp功能怎丰科OT于ProcAmp。如果一个驱动器支持其它的DX-VA功能例如解码MPEG-2视频流,下面執列的代码可以被扩展至抱括客桫卜的DX-VAGUID的处理。DWORDAP正NTRYCreateMoComp(LPDDHAL_CREATEMOCOMPDATAlpData)/顺定它是一个我们希望的guid。If(!ValidDXVAGuid(lpData->lpGuid)){DbgLog((LOG一ERRORJ,TEXT("NoformatssupportedforthisGUID"》)LpData->ddRVal=E—雨ALEDARG;ReturnDDHAL_DRTVER_HANDLED;}〃寻找去隔行容器设^GU!Doif(*lpData->lpGuid=DXVA—DeinterlaceContainerDevice){DXVA—DeinterlaceContainerDeviceClass*lpDev=NewDXVA—DeinterlaceContainerDeviceClass(*lpData->lpGuid,DXVA—DeviceContainer);即pDev)(LpData->ddRVal=DD—OK;}else{lpData->ddRVal=E—OUTOFMEMORY;}lpData-〉lpMoComp~>lpDriverReservedl=(LPVOIDXDXVA一DeviceBaseaass"lpDev;returnDDHAL—DRIVER—HANDLED;}〃寻微ocAmp控制设^GUIDif(*lpData->lpGuid=DXVA—ProcAmpControlDevice){DXVA_ProcAmpControlDeviceClass*lpDev=NewDXVA—ProcAmpControlDeviceClass("pData-〉lpGui4DXVA—DeviceProcAmpCon加l);卿Dev)(LPDXVA—VideoDesclpVideoDescription=(LPDXVA—VideoDesc)lpData-〉lpData;lpData->ddRVal=lpDev-〉ProcAmpControlOpenStream(lpVideoDescription);即pData-〉ddRW卜DD一OKMdeletelpDev;lpDev=NULL;else{lpData->ddRVal=E—OUTOFMEMORY;}lpData->lpMoComp->lpDriverReserverdl=(LPVOID)(DXVA—DeviceBaseClass"lpDev;returnDDHAL_DRIVER—HANDLED5}lpData->ddRVal=DDERR—CURRENTLYNOTAVAIL;returnDDHAL—DRTVER_HANDLED;**例子实现GetMoCompGuid^除了CreateMoCompDDI功能之外,一个驱动器也能够实现DD—MOTIONCOMPCALLBACKS结构的GetMoCompGuids方法。下面的典型的伪代码表示在一个驱动器中实现这个功能的一个方法。〃这是一个驱动器支持的DV-VA设^GUID的列表,这个列表包,码器,//ProcAmp和去隔行容器设备。歹U表中的GUID的顺序没有意义。DWORDLdwDXVANumSupportedGUIDs=2;ConstGUID*g_dwDXVASupportedGUIDs[2]={&DXVA—DeinterlaceContainerDevice,&DXVA—ProcAmpControlDevice};DWORDAP正NTRYGetMoCompGuids(PDD—GETMOCOMPGUIDSDATAIpData)DWORDdwNumToCopy;〃检査来魏是否是一4i3UID请棘者一付数要求if(lpData-〉lpGuids;KdwNumToCopy=min(g_dwDXVANumSupportedGUIDs,lpData->dwNumGuids);for(DWORDi=0;i<dwNumToCopy;i++){lpData->lpGuids[i]=*a_DXVASupportdGUIDs[i];else{dwNumToCopy=g—dwDXVANumSupportedGUIDs;}lpData->dwNumGuids=dwNumToCopy;lpData->ddRVal=DD_OK;returnDDHAL一DRIVER一HANDLED;}ProcAmpControlBlt这个方法直接映射到DD一MOTtONCOMPCALLBACKS结构的一个CreateMoComp方法,这里參dwNumBuffers为2*lpBufferlnfo指向一个两賴面的排列。这个排歹啲第一个元素是目标表面,这个元素的第二部分是源表面。*dwFunction被定义为DXVA一ProcAmpContro氾liFnCode*lpInputData指向下面结构typedefstruct—DXVA_ProcAmpControlBlt{DWORDSize;RECTDstRect;RECTSreRect;FLOATAlpha;FLOATBrightness;FLOATContrast;FLOATHue;FLOATSaturation;}DXVAProcAmpControlBlt;參lpOutputData为空。注意到用于DX-VA容器设备的ProcAmp、RenderMoComp方法可以被直接调用,而不用先调用BeginMoCompFrame或者EndMoCompFrame。**例子WtRenderMoComp至iJProcAmpControlBlt**下面的典型的伪代码表示一个驱动器可以怎样自CreateMoCompDDI的调用至UProcAmpBlt的调用。这个^j列的代码表玩reateMoComp功能怎^l細于ProcAmp调节。如果一个驱^l^^其它^DX-VA功會,洳i^^IPEG-2丰魁舰,下面剩列的代码可以被扩展到包括^卜的DX-VAGUID的处理。DWORDAP正NTRYRenderMoComp(LPDDHAL_RENDERMOCOMPDATAlpData)if(lpData->dwFunction=DXVA—ProcAmpControlBltFnCode){DXVA—ProcAmpControlDeviceClass*pDXVADev=(DXVA—ProcAmpControlDeviceGlass承)pDXVABase;DXVA—PrcoAmpControlBlt*lpBltF=(DXVA—ProcAmpContro腿"lpData-〉lpInputData;LPDDMCBUFFERINF01pBuffinfo=lpData->lpBufferMo;lpData->ddRVal=pDXVADev->ProcAmpControlBlt(lpBufflnfo[O].lpCompSurface,lpBufflnfo[1].lpCompSurface,lpBlt);returnDDHAL—DRIVER—HANDLED;}IpData->ddRVal=E—匿ALIDARG;returnDDHAL一DRIVER一HANDLED;ProcAmpCon加lCloseStream这个方法直接映射到DD_MOTIONCOMPCALLBACKS的一个CreateMoComp方法。**例子i^itDestroyMoComp至yProcAmpControlCloseStream**下面的典型的伪代码表示一个驱动器可以怎样,CreateMoCompDDI调用至IJProcAmpControlCloseStream的调用。这个,iJ的代码^CreateMoComp功能怎样被用于ProcAmp控制。如果一个驱动器支持其它的DX-VA功能例如解码MPEG-2鹏流,顶糊附邻马可以樹广顧包括辦舰-VAGUID的处理。DWORDAP正NTRYDestroyMoComp(LPDDHAL—DESTROYMOCOMPDATAlpData)DXVA_DeviceBaseClass*pDXVABase=30(DXVA_DeviceBaseClass*)lpData->lpMoComp->lpDrvierReservedl;if(pDXVABase=NULL){lpData->ddRVal=E—POINTER;returnDDHAL_DRTVER—HANDLED;}switeh(pDXVABase->m—Devic6Type){caseDXVA一DeviceContainer;lpData->ddRVal=S—OK;deletepDXVABase;break;cassDXVA—DeviceProcAmpControl:{DXVA—ProcAmpControlDeviceClass*pDXVADev=pXVA—ProcAmpControlDeviceClass*)pDXVABase;lpData->ddRVal=pDXVADev->ProcAmpControlCloseStreamO;deletepDXVADev;}break;returnDDHAL—DRIVER_HANDLED;用于计^t几或者其它电子设备的典型操作环境图7剩列说明一个典型计算(或者一般的电子设备)操作环敏OO,它會辦在至少一个系统、设备、成分、装置、协议、途径、方法、处理、一些其中的组合,中实l^简4t^ffl^辦贴l^K^图形设^^j器之间W^i:作用。可以在n鹏的ii^t朋口网络环^t在一个對;w镇中禾佣ii^r働00。典型的电子设,作环^700只是一个环境的例子,并不意对使用的范围或可适用的电子结构(包括计算机、游戏控制台、电视等等)的功能提出任何限制。电子设备环^700也不应该|释为具有任何关于图7中描述的部件的任何一个或者倒可组合的^^和需要。客砂卜地,简化视频再现器与图形设备驱动器之间的妊作用可以舰许多其它的一般目的或者特殊目的的电子设备(包lgi十對几系统)环境或者配置来实现。适合使用的已知的电子(设备)系统、环境和/或配置包括个人计^m、服务器计算机、瘦客户端、胖客户端等等,但是并不仅限于此。系统总线708表示几种有线或者无线总线结构中的一个或者多个,包括一个内存总线或者内存控制器,一个外设总线,一个加速的图形端口和一个处理器或者使用任何一种总线结构的本地总线。作为例子,这样的结构可以包括一个工业标准结构(ISA)总线,一个Wit结构(MCA)总线,一个增働SA(EISA)总线,一个视频电子标准电子标准助会(VESA)本地总线,一个周边元{抖广展接口(PCI)总线也被叫做夹层总线,一些它们的组合等等。计算机702典型地包括一种电子可访问媒体。这种媒体可以是{對可可被计算机或者其它电子设备访问的可用媒体,它包括易失性和非易失性媒体,可移动和固定媒体和存储和传递媒体。系统内存706在易失性内存的形态下包括电子可访问媒体,例如随机访问存储器(RAM)710,和/或非易失性内存,例如只读存储器(ROM)。例如在启动期间,一个基^ilA/lj出系统(BIOS)714被典型地存储^ROM702中,包含有助于在计^t几702内的元件中传递信息的基本稳字。RAM7IO典型地包括可以被立即访问的和/或目前正在被处理单元704操作的i^和/或禾M^模纷指令。计^#1702也可以包括其它的可移动/固定和/或易失掛非易失性存储媒体。作为例子,图7举例说明了一个用于从一个(典型的)固定的非易失性的M媒体(没有分别表示)读取或者写入的硬盘驱动器或者盘片驱动器阵列716;—个用于从一个(典型的)可移动的非易失性的M媒術20(例如鄉)读取或者写入的M:驱动器718;—个可选的用于从一个(典型的)可移动的非易失性的光盘724例如"^hCD"ROM、DVD或者其它的光媒体读取和/或者写入的光盘驱动器722。硬盘驱动器716,磁盘驱动器718和光盘驱动器722分别通过一个或者多个存储媒体接口726连接到系统总线708。可iMk,石皿驱动器716,tt驱动器718和光盘驱动器722可以fflil—个或者多个分开的或者组合的接口(没有表示)连接到系统总线708。纖驱动器和它们的相关电子可访问媒iWJ共一个电子可执行的固定存储器,例如用于计穀几702的娜结构,禾M^模块和其它娜。虽然典型的计^m702举例说明了硬盘716、可移动磁盘720、可移动光激24,但是应该意识到电子可访问媒体的其它类型也能存储可以被电子设备访问的指令,例如磁带或者其它的磁存储设备、闪存、CD-ROM、数字化视频她(DVD)或者其它光存储、RAM、ROM、电子可擦可编程只读存储器(EEPROM)等等。这样的媒体也可以包括所谓的特殊目的或者硬件集成电路(IC)芯片。换句话说,可以禾胸倒可电子可访问媒体来实现典型的电子系统和环敏OO的存储媒体。倒可ffi的编禾對势央(^#其它单^#指令集)可以被存储在石716、磁激20、M724、ROM712和/^RAM710,包括作为通用的例子一个操作系统728,一个或者多个应用禾旨730,其它的程序模块732和程,据734。作为特殊的例子但不仅限于此,视频再现^^见频再现駒10、图形接口412和设备驱动駒14(图4中的所有)可以是操作系统728的一部分。图形设备驱动^422可以是禾將模块732的一部分,可选地与操作系统728具有紧密联接和/或雖的关系。而且,一个戯诉im列如WindowsMedia9是一个应用禾將730的例子。目前在系统内存中的图像控制和/或图形数据可以是禾M)m据734的一部分。例如,一个改^ProcAmp或者其它视频设置的用户可以通过输入设劄列如一^^736和一个指示设备738(例如一个鼠标)来输入命令和/或信息到计算机702。其它的输入设备740(没有特别的g)可以包括一,,、操纵杆、游戏垫、圆盘式卫星电视,、串口、扫描仪和/或其它类似设备。这些和其它的输入设备ffi31与系统总线708^^的输A/lf出接口742连接到处理单元704。但是,它们和/或输出设备可以代替地被其它接口和总线结构连接,例如并口、游戏端口、通用串行总线(USB)端口、一个正EE1394("火线")接口,一个正EE802.11无线接口,一个Bluetooth无线接口等等。一个监,必观看屏幕744(图4的显示设备436的一个例子)或者其它类型的显示设备也可以通过一个接口连接到系统总线708,例如一个视频适配器746。视步腿配器746域者其它元件)可以是或者可以包括一个用于处理密集图形的计算和处理要求显示需要的一个图形卡(图形设^424的一个例子)。典型地,一个图形卡包括一^hGPU(例如GPU426)、视,!^RAM(VRAM)(视频内稱32的例子)等^M;化图形操作的fflil性能。除了监视器744之外,其它的输出外围设备可以包括例如扬声器(没有表示)和打印机748等元件,它们可以S31输A/if出接口742连接到计^m702。计算机702可以在一个使用逻辑连接到一个或者多^程计算机的网络化的环境中操作,例如一4^程计算机设备750。作为例子,远程计^m设备750可以是一个个人计算机、一个便携式计^M(例如,膝上型电脑,tablet电脑、PDA,^i^式电台辫),掌上型^^小型繊,一个W^备,一个服务器,一个路由器,一个网络计算机,一个对等设备,其它普通的网络节点,或者像上面列出的另一种计^m类型等等。可是,^f呈计t^几设备750被執列描述为是一个便携式计^m,它可以包括本文描述的关于计嶽几702的元件和特性中的许多或者條在it^t几702禾P^I呈ii^m750之间的逻^^^S述为一个局域网(LAN)752和一个通用的广域网(WAN)754。这种网络环境普遍用在在办公室、企业级计算机网络、企业内部互联网、固定和移动电话网、其它无线网络、游戏网络、其中的一些组合等等之中。当在一个LAN网络环境中实现时,计^m702通常JIil一个网雜口或者适配器756连接到LAN752。当在一个WAN网络环境中实现时,计^^几702典型地包括一个调制解调器758或者其它用于^WAN754上^1信的體。调制解调器758对于计算机702可以是内置的或者外置的,它可以通过输A/输出接口742或者任何其它的适当机制3l6i接到系统总线708。应该意识到,描述的网络连接是典型的,可以在计^m702和750之间使用其它M^i信连接的装置。在一个网络环境中,例如电子设备环^700所描述的,描述的与计算机702相关的程序模块或者其它指令可以被完全地或者部分地存储在一^程内存存储设备中。作为例子,远禾,用禾ii^760驻留在远程计皿750的一个内存元件中,但是可以M计^m702被4顿或者另外被访问。并且出于说明的目的,应用程序730和其它电子可执行指令例如操作系统728在本文中被描述为分离的方框,但是这种在不同时间驻留在计^m设备702(和/或;^|呈计##1750)的不同存储元件中的程序、元件和其它指令,和被计^m702(和/#程计#|几750)的处理器704所执行的程序、元件和其它指令是已知的。虽然系统、媒体、方法、协议、途径、处理、,和其它的实施例已经由具体到结构的语言、逻辑、算法、功會游性和/或图表中作了描述,但,该知道在随后权禾腰求中定义的发明没有必要限制到描述的特定特性或者图表中。进而,特殊的特性禾晒表被公开为实现权利要求中的发明的典型形态。权利要求1.一种用于简化一个或者多个视频再现器与至少一个图形设备驱动器之间的交互的方法,这个方法包括步骤将一查询从视频再现器传送到图形设备驱动器,其中所述查询被指向所述图形设备驱动器能够提供给所述视频再现器的图像处理操作;并且包括要显示的视频的描述;以及在所述视频再现器接收来自所述图形设备驱动器的响应,所述响应指示了所述图形设备驱动器能够提供给所述视频再现器的至少一个图像处理操作。2.如权利要求l所述的方法,其特征在于,所述图形设备驱动器育嫩M3!相关的图形硬件向戶舰视频再现器樹共戶舰至少一个图像处鹏作。3.如权利要求i所述的方法,其特征在于,戶;M视频再现器将另一查询传送到所述图形设备驱动器,所述另一査询请求所述至少一个图像处理操作,其相关参数为最小值;最大值;增量步骤大小值;以及默认值。4.如权利要求l戶脱的方法,其特征在于,戶腿视频再现器向戶腿图形设备驱动器进一步査询该图形设备驱动器所支持的设备的歹接。5.如权利要求l戶脱的方法,其特征在于,进一步包括在戶脱图形设备驱动器处基于戶皿要显示的视频的描述修B^f述图像处理操作。6.如权利要求5戶脱的方法,其特征在于,戶脱修改步戶脱图像处理操作进行调节以支持与所述要显示的视频的描述相关联的特殊类型的视频流。7.如权禾腰求l戶脱的方法,其特征在于,进一步包括MJM年I频再现器向所述图形设备驱动^[专送另一査询,戶皿另一査询被指向所述图形设备驱动器能够掛共给所述视频再现器的所述至少一个图像处理操作的属性能力;以及在戶皿视频再现器接自戶M图形设备驱动器的另一响应,戶,另一响应指示了所述图形设备驱动器會嫩,给戶,视频再现器的所述至少一个图像处理操作的至少一个歸性能力。8.如权禾腰求l戶舰的方法,其特征在于,进一步包括^^M柳频再现器向戶皿图形设备驱动劉专送另一査询,戶,另一查询被指向所述图形设备驱动器能够提供给所述视频再现器的所述至少一个图像处理操作相关的同时视频处理操作能力;以及在戶腿视频再现繊iK自戶服图形设备驱动器的另一响应,戶腿另一响应指示了所述图形设备驱动器能够提供给戶;M视频再现器的所述至少一个图像处理操作相关的至少一个同时视频处理操作能力。9.如权利要求l戶皿的方法,其特征在于,进一步包括/A^M柳频再现器向戶腿图形设备驱动制专送另一査询,戶,另一^i旬被指向所述图形设备驱动器能够掛共给所述视频再现器的所述至少一个图像处理操作的属性值;以及在戶腐视频再现離自F脱图形设备驱动器的另一响应,戶脱另一响应指示了戶脱图形设备驱动器育辦提供给所述视频再现器的戶腿至少一个图像处理操作的至少一个属性值。10.—种被配置为与一个^ffl—个助、议的视频再现器通信的图形设备驱动器,其中的协议包括一个或多个从图形设备驱动器传送到视频再现器的格式,所述一个或多个格式包括用ProcAmp控制特性填充的至少一个字段,所述ProcAmp控制特性M:图形设备驱动器对于视频再现器可用的,以及用视频处理操作填充的至少一个字段,图形设备驱动器可以导,个视频处理操作与一个ProcAmp调节操作同日m行。11.一种被配置为与一个使用一个协议的图形设备驱动器通信的视频再现器,其中的协议包括一个或多个从视频再现l^f专送到图形设备驱动器的格式,所述一个或多个格式包括用视频描述填充的至少一个字段,视频再现器将和一个戯U应用禾骄一起显^S个视频描述,以及用选择的ProcAmp控制特性填充的至少一个字段,戶;im择的ProcAmp控帝勝性指出一个到图形设备驱动器的关于操作选择的ProcAmp控制特性的值的请求。全文摘要简化交互作用可以通过通信协议和/或API来完成,该协议和APIs允许与相关图形硬件的图形处理能力有关的将要在图形设备驱动器和视频显示之间交换的信息。在第一个典型的媒体实施例中,其中用于视频再现器的电子可执行指令促成操作包括从一个视频显示产生一个指向图形设备驱动器的查询,这个查询请求关于处理放大(ProcAmp)能力的信息;在视频再现器上接收一个来自图形设备驱动器的响应,这个响应包括关于ProcAmp能力的被请求的信息。在第二个典型媒体实施例中,一个图形设备驱动器促成操作包括在图形设备驱动器上接收一个来自视频再现器的查询,这个查询请求关于ProcAmp能力的信息;从图形设备驱动器向视频再现器发送一个响应,这个响应包括关于ProcAmp能力的被请求的信息。文档编号G06FGK101552886SQ20091013716公开日2009年10月7日申请日期2003年4月15日优先权日2002年4月15日发明者S·J·埃斯特罗普申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1