具有提前渲染队列的gpu时间线的制作方法

文档序号:6776679阅读:139来源:国知局
专利名称:具有提前渲染队列的gpu时间线的制作方法
技术领域
本发明的实施例涉及视频渲染以及视频和音频文件的回放这一领域。本发明 的实施例尤其涉及利用图形队列来以视频时间线的帧速率渲染和平滑地显示视频 和音频文件的系统和方法。
背景
视频文件平滑回放的常用格式标准包括在视频时间线的每秒显示三十个视频 帧。在视频编辑过程中,由于必须在向屏幕显示视频文件以及向扬声器输出音频序 列之前对视频文件以及单个视频帧和音频序列进行处理,所以常常无法实现构成视 频和音频文件的视频帧和音频序列的平滑回放。
在视频编辑和回放中进行的诸多处理需要中央处理单元(CPU)资源。这些 处理中许多是"预巻逻辑(pre-roll logic)"的一部分,该逻辑包括寻找文件、打 开和解码第一视频文件、对文件的视频帧渲染效果、向屏幕显示这些帧以及关闭该 第一视频文件、打开和解码第二视频文件诸如此类。类似地,对音频文件的音频序 列的处理及其与视频帧的同步也需要CPU处理能力。CPU通常无法在所要显示的 一个视频帧所占的时间(三十分之一秒)内执行预巻逻辑的所有处理来平滑地回放 视频和音频文件。因此,当CPU以小于视频时间线的速率执行所要求的预巻逻辑 处理时,视频和音频回放出现波纹抖动(choppy)或间歇停顿(即毛刺(glitch))。
视频逆向回放也需要大量的CPU资源。除视频文件正向回放中的毛刺外, 大多数压縮视频文件格式(例如WMA)的逆向回放都无法实时地执行。作为实时 视频格式的常见形式的基于I帧的视频文件将视频帧存储为与前一帧的差异。因 而,为了回放视频帧X,必须首先确定帧X与视频时间线上紧靠其之前的帧(例 如,帧X-1)之间的差异。因此,视频的逆向回放可能对CPU处理是代价极高的 操作,因为需要CPU解码视频文件中到前一关键帧为止的所有先前帧。 一旦被解 码,则必须通过CPU来渲染视频效果,从而消耗了其更多的处理资源。这种处理 使CPU难以实时地进行解码、渲染、同步视频帧与音频序列、以及回放视频文件。
除预巻逻辑处理之外,由于在后台中发生的诸如接收电子邮件的排定或随机处理也会消耗CPU处理资源,这进一步限制了原本可供于执行预巻逻辑处理的 CPU资源。因而,由于排定或随机处理进一步要求CPU处理时间,所以在视频回 放中可能出现更多的毛刺。
因此,期望一种在正向和逆向时间线方向上平滑回放视频的系统和方法来解 决这些以及其它缺点的一个或多个。
概要
现有技术的不足之处通过提供在正向和逆向时间线方向上的平滑视频回放被 克服。视频文件被解码并且得到的视频时间线被直接保存到视频存储器中。本发明
的实施例利用图形处理单元(GPU)的资源,由图象处理单元在渲染过程中处理视 频帧的效果。经渲染的视频帧被存储在视频存储器中的提前渲染(render-ahead) 队列上。然后,这些帧被从提前渲染队列移除并被显示到屏幕。
在另一个方面中,本发明的实施例利用提前渲染队列和第二队列来以逆时间 线顺序平滑地回放视频。以正时间线顺序将视频帧解码到存储器中并且对它们渲染 效果。经渲染的帧被存储在第二队列上。然后,第二队列上的这些帧被按逆序从第 二队列移除,并被放置于提前渲染队列上。然后,这些帧被按逆时间线顺序从提前 渲染队列移除并被显示到屏幕。
替换地,本发明可包括各种其它方法和装置。 其它特征部分将是显而易见的,而部分将在在下文中指出。 提供本概要来以简化形式介绍将在以下详细描述中进一步描述的概念的 精选。本概要无意标识所要求保护的主题的关键特征或本质特征,也无意用于 帮助确定所要求保护的主题的范围。
附图简述
图l是可在其中实现本发明的显示视频的方法的示例性流程图。 图2是可在其中实现本发明的显示视频和输出音频的方法的示例性流程图。 图3是需要CPU资源的公共处理对处于提前渲染队列上的帧的数量的相对影 响的图示。
图4是在逆时间线方向上的帧回放的过程的图示。
图5是示出了可在其中实现本发明的合适的计算系统环境的一个示例的框图。 图6是其中视频1在视频时间线上过渡到视频2的视频时间线的示图。图7A是在视频1的帧1被显示之前以及在视频1的帧8被渲染并排列到提前 渲染队列之后的提前渲染队列的示例。
图7B是在视频1的帧1已被显示并己从队列移除、由此释放缓冲器C以供分
配给另 一视频帧之后的提前渲染队列的图示。
图7C是在视频1的视频帧9已被解码、渲染和分配到缓冲器C之后的提前渲 染队列的图示。
图7D是视频1的帧2已被显示并已从队列移除、由此释放缓冲器D以供分
配给另一视频帧之后的提前渲染队列的图示。
图7F是视频1的帧96已被显示并已从队列移除之后的提前渲染队列的图示。 图7G是当视频帧101刚已被解码、渲染和分配到缓冲器F时的提前渲染队列
的图示。
图7H在视频1的帧97被显示之后以及在视频2的帧104被渲染并排列到提 前渲染队列之后的提前渲染队列的图示。
相应的附图标记指示所有附图中的相应部分。
详细描述
首先参照

图1,它提供了可在其中实现本发明的一种显示视频的方法的示例性 流程图。当在102由中央处理单元(CPU)访问视频文件时,该方法被发起,并在 104将视频文件解码成视频帧的时间线序列。 一旦被解码,CPU就将视频帧的时间 线直接存储到视频存储器106中。 一旦被存储在视频存储器中,图形处理单元
(GPU)就在108访问视频帧并处理所需的任何效果,然后在110将经处理的视频 帧排列到提前渲染队列。然后,GPU在112以视频时间线的帧速率从提前渲染队 列移除经处理的视频帧,并且在114将这些视频帧显示到屏幕。
在另一个实施例中,CPU从提前渲染队列移除经处理的视频帧并在屏幕上显 示它们。
在另一个实施例中,本发明提供了一种在视频编辑期间回放音频和视频文件 的系统和方法。参看图2,它提供了可在其中实现本发明的一种显示视频和输出音 频的方法的示例性流程图。当在202由中央处理单元(CPU)访问视频文件时该方 法被发起,并在204将视频文件解码为视频帧的时间线序列。 一旦被解码,CPU 就将这些视频帧的时间线直接存储到视频存储器206中。 一旦被存储在视频存储器 中,图形处理单元(GPU)就在208访问视频帧并处理所需的任何效果,然后在210将经处理的视频帧排列到提前渲染队列。
该方法还提供了对音频文件的处理、排队、与视频文件的同步。音频文件在
214被中央处理单元(CPU)访问并在216被解码为一连串的音频序列。 一旦被解 码,CPU就将这些音频序列直接存储到存储器218中。 一旦被存储在存储器中, 音频序列就在220被排列在音频队列上。
CPU指示GPU在212以视频时间线的帧速率从提前渲染队列移除经处理的视 频帧。CPU发起处理,同时GPU作大量像素处理。在222, CPU从音频队列移除 音频序列。在224,将视频帧与音频序列同步,以及在226将该视频帧显示到屏幕 并将音频序列输出到扬声器。
在另一个实施例中,CPU从提前渲染队列移除经处理的视频帧、从音频队列 移除音频序列、将视频帧与音频序列同步、以及将该视频显示在屏幕上并将音频序 列输出到扬声器。
提前渲染队列
本发明通过利用提前渲染队列来克服了现有技术中导致在视频文件回放期间 出现毛刺的缺陷。提前渲染队列被创建在视频存储器中,并且包含己在其上渲染了 视频效果的视频帧。以视频时间线的帧速率从提前渲染队列获得视频帧并将它们显 示到屏幕。以超过视频时间线回放速率的速率将视频帧添加到提前渲染队列。也可 在视频时间线的回放处于暂停状态时将视频帧添加到队列,从而允许增加队列上视 频帧的数量。由于从暂停状态中开始视频回放,所以在回放一开始时,队列总是包 含视频帧。
因为将帧添加到队列的平均速率超过视频时间线的速率,所以在如果没有诸 如上述CPU的随机后台处理等其它输入(例如,如文件切换的内部事件、如使用 盘或CPU资源的其它处理的外部事件),则队列将保持满。因此,在视频回放期 间,可从提前渲染队列连续访问经渲染的视频帧,并以时间线的帧速率显示,从而 提供视频的平滑回放。
如果存在消耗CPU处理资源的处理,则提前渲染队列允许视频的平滑回放直 至该队列上的所有被排队的帧都己被显示。如果要求CPU处理资源的处理在提前 渲染队列上的所有视频帧都已被显示之前停止,则CPU可继续以超过视频时间线 的速率用视频帧补充提前渲染队列,由此允许连续平滑的视频回放。
提前渲染队列还允许在CPU资源被耗费在视频编辑处理上时视频的平滑回 放。例如,在需要显示视频帧时通常无法执行对时域压縮媒体格式文件的查找。因
9而,提前渲染队列允许视频编辑处理通过显示被保持在提前渲染队列上的视频帧来 同时地査找和向屏幕回放视频直至查找处理完成。 一旦査找处理结束,则再次将视 频帧添加到提前渲染队列。
图3是要求CPU处理资源的公共处理对处于提前渲染队列上的帧的数量的相 对影响。当存在诸如査找处理等需要很多CPU资源的处理时,由于为了查找而对
CPU资源的使用阻碍了 CPU向提前渲染队列添加帧,提前渲染队列上的帧的数量 开始下降。 一旦查找处理停止,CPU就可开始处理帧并将它们添加到提前渲染队 列,这表现为在一段时间上线条的逐步上升趋势。当随机处理引发CPU "打嗝
(hiccup)" —诸如当在短时间内需要CPU资源来处理诸如传入电子邮件的小处 理时一提前渲染队列上的样本数量在短时间内下降。 一旦CPU完成该随机处理, 其再次开始向提前渲染队列添加帧,这再次由随时间流逝而上移的线条来表现。只 要需要CPU资源的查找处理、随机处理或其它处理在提前渲染队列上的所有帧都 被显示之前停止,视频的回放都将是平滑的。然而,如果需要CPU资源的时间超 过了提前渲染队列中那些量的帧的回放时间,则将耗尽提前渲染队列并且将出现视 频毛刺,从而导致视频的回放呈现波纹抖动。
提前渲染队列的大小取决于用来编辑和回放视频的计算设备的硬件能力。在 一个实施例中,提前渲染队列包含高达三十个视频帧,这高达视频一秒的时间线。 在另一个实施例中,提前渲染队列包含高达六十个视频帧或高达两秒的时间线。在 另一个实施例中,提前渲染队列包含至少三个视频帧。在另一个实施例中,提前渲 染队列包含至少五个视频帧。
如果提前渲染队列上的帧的数量小于指定的数量(例如,三个帧),则可减 小缓冲器的大小以尝试继续视频的平滑回放(例如,将缓冲器尺寸从640X480减 小到320X280)。如果回放仍无法被平滑地显示,则可减小时间线速率以使回放 减速,从而以较缓慢但较平滑的量级显示帧。
音频队列
除提前渲染队列之外,本系统和方法可另外包括音频队列。与提前渲染队列 被用于创建视频帧的缓冲队列的的方式大致相同,音频队列包括被从音频文件解码 并放置在存储器中的音频序列。通过维护音频队列,可有音频序列用于与视频文件 时间线速率的视频帧同步从而不会在CPU资源被耗费在其它处理上时导致音频序 列的中断。音频也需要随视频提前渲染,以便源文件在同一位置进行读取。如果音 频和视频试图从文件中的不同位置进行读取,则可能导致程序无法响应(即,挂起),或者导致较差的盘性能。 图形处理单元
在一个实施例中,GPU用于执行先前由CPU执行的许多处理。在此配置中,
计算设备可起到多处理器的作用,其中在CPU向GPU提供经解码的视频和音频文
件以进一步将视频效果处理到视频帧上、对帧进行排队、以及将视频帧显示到屏幕 之间存在流水线效果。
通过利用GPU, CPU能够将处理资源用于诸如使视频帧与音频序列同步等其 它视频编辑处理以及向扬声器输出音频序列。另外,CPU资源能够执行后台处理、 对文件进行解码、以及诸如处理电子邮件的接收等随机处理而不会导致视频渲染、 排队和显示处理中断。
因而,GPU还确保视频提前渲染队列和音频队列包含用于视频和音频文件的 平滑回放的视频帧和音频序列。
GPU还使计算设备能够平滑地处理和显示复杂的回放过程,诸如否则将耗费 相当的CPU资源的基于I帧的视频文件的逆向回放。
逆向回放
本发明利用提前渲染队列和第二队列来操作视频帧,从而允许以逆序来平滑 回放视频文件。逆向回放可通过首先在短时间内将该视频文件正向播放到第二队列 并随后以逆序将它们从该第二队列移除且在将这些帧以逆序显示到屏幕之前将它 们放置在提前渲染队列上。该提前渲染队列允许计算设备以逆序平滑地显示来自提 前渲染队列的帧,同时执行获得其它帧、颠倒它们的顺序、以及将它们放置在提前 渲染队列以便逆向回放这一冗长的过程。重复这些过程直至逆向回放停止或者到达 该视频文件的开头。
大多数视频文件是不能单纯逆向回放的,而是首先需要在可进行回放之前关 于相邻帧来处理每一视频帧。如上所述的,作为实时视频格式的常见形式的基于I 帧的视频文件将视频帧存储为其间为中间帧的一系列基帧或关键帧,这些中间帧被 存储为基帧与中间帧的差值。因而,为了回放视频帧X,首先必须确定帧X与视 频时间线上紧邻帧X的前一帧(例如,帧X-1)之间的差异。因而,例如,如果关 键帧被定位在时刻10和时刻20,并且想要时刻15上的视频帧,则计算设备必须 退回到时刻10上的帧并且通过处理时刻上11的帧与时刻10上的关键帧之间的差 异来获取时刻11上的帧。时刻12上的帧通过添加其与时刻11上的帧的差异来获 取,以此类推直至根据与时刻14上的帧的差异获取时刻15上的帧。
11为了在帧X被显示之后得到用于显示的逆向时间线顺序的视频帧,视频时间 线上在视频帧X之前的视频帧被定位并被加载到视频存储器中。然后,效果被渲 染到这些帧上,并且这些经渲染的帧被添加到正时间线方向上的第二队列中。然后, 这些帧被以逆序从该第二队列移除,并被添加到提前渲染队列以在逆时间线方向上 紧跟在帧X之后。加载到队列中的帧的数量取决于可用的视频存储器以及将X帧 显示到屏幕所需的时间。在整个持续过程中重复将帧以逆时间线方向显示到屏幕的 该过程。
图4是在逆时间线方向上的帧回放过程的图示。当帧被显示时,提前渲染队 列中帧的数量稳定下降。在帧数量下降的同时,将紧靠提前渲染队列上的这些帧之 前的其它帧被定位并被加载到视频存储器中。然后,将效果渲染到这些帧,并且将 它们添加到第二队列中。 一旦已将指定数量的帧添加到该第二队列,样本就以逆时
间线顺序被移除并被添加到提前渲染队列,图4示出了在此时的向上尖峰。然后,
重复此过程直至该视频的逆向回放停止。
逆向帧步进
由于以上所述的大多数视频文件的I帧格式,在逆时间线方向上的帧步进通常 需要对正时间线方向上的所有视频帧进行解码直至到达作为逆时间线方向的起始 帧的那一帧。提前渲染队列通过如上所述地显示提前渲染队列上先前已经显示过的 帧同时查找和处理逆时间线方向上视频段的下一段并将其放置在提前渲染队列中 以供逆向回放来允许逆时间线方向上的平滑帧步进。
在一个实施例中,指定数量的视频帧在己被显示到屏幕之后被保持在提前渲 染队列中。然后,当想要一视频段进行逆时间线帧步进时,上述指定数量的帧已存
在于提前渲染队列中并可用于显示而无需从视频文件査找和解码帧。例如,如果Y 个帧在显示之后被保持在提前渲染队列中,则在以逆时间线方向显示了提前渲染队 列上的Z个帧(数量小于Y)之后,本发明的方法查找时间线上紧位于这Y个帧 之前的视频帧,并且以逆序将它们添加到提前渲染队列,从而使它们能以逆时间线 方向显示完最后一Y帧之后被显示。在此实施例中,提前渲染队列中总是具有Y 到Y-Z个之间的帧可用于以逆时间线方向进行显示。在此示例中,Y和Z是表示 视频帧的指定数量的变量,它们取决于可用的视频存储器的量和渲染时间线的当前 部分所需的视频存储器的量。 存储器管理器
视频存储器必须被编写以创建和管理提前渲染队列和用在本发明中的任何其它队列。在视频帧大小为640X480时,每个视频帧需要1.2Mb的存储器。在诸如 32Mb的较小的存储卡上,在考虑了系统对存储器的需求之后一诸如存储器需要后 置缓冲器、交换链等一则约有20Mb缓冲器可用于存储视频帧。在256Mb卡上, 约有超过200 Mb的缓冲器可用于存储视频帧。因为无法计算其它处理或驱动器实 现所需的存储量,所以可用于视频和音频回放的缓冲器的量直至它们被耗尽都无法 被确定。
为了避免视频存储器发生错误,定制存储器管理器被编写成创建本发明的视 频回放处理中所需的所有缓冲器。当缓冲器分配失败(例如,由于用完视频存储器 而无法将经渲染的视频帧添加到提前渲染队列)时,定制视频存储器管理器停止分 配经渲染的视频帧直至存在于提前渲染队列上的一帧被移除,而非生成"存储器不 足"的错误。当该帧被移除时,队列上用于其存储的存储器被返回给系统以进行重 新分配。然后,定制视频存储器管理器将该经渲染的视频帧存储在被返回给系统以 进行重新分配的缓冲器上。
通过使用该自校正算法,提前渲染序列可处理时间线上需要不同的存储量来 运行的各段的切换。当切换自使用减少视频存储器的段时,将增加队列的最大尺寸 以处理该新段。或者,当切换自使用较多视频存储器的段时,将减小队列的最大尺 寸以处理该新段。例如,如果系统上存在五个视频存储器单元,而当前视频段需要 四个单元,则剩余的一个单元可为该队列所使用。如果当前段需要一个存储器单元, 则队列将具有四个存储器单元可用。
在以下示例中更详细地描述定制存储器管理器的一个实施例。
图5示出了计算机130形式的通用计算设备的的一个示例。在本发明的实施 例中,诸如计算机130的计算机适合用在本文所示和所述的其它附图中。计算机 130具有一个或多个处理器或处理器单元132以及系统存储器134。在所示实施例 中,系统总线136将包括系统存储器134在内的各种系统元件耦合到处理器132。 总线136表示若干类型总线结构中的任意一种,包括存储器总线或存储器控制器、 外围总线、加速图形接口和处理器,以及使用各种总线架构中的任一种的处理器或 局部总线。作为示例而非限制,这些架构包括工业标准结构(ISA)总线、微通道 结构(MCA)总线、增强型ISA (EISA)总线、视频电子标准协会(VESA)局域 总线、以及也称为Mezzanine总线的外设部件互连(PCI)总线。
计算机130通常具有至少若干形式的计算机可读介质。包括易失性和非易失 性介质、可移动和不可移动介质的计算机可读介质可以是可由计算机130访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介 质。计算机存储介质包括以任意方法和技术实现以用于存储诸如计算机可读指令、 数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介
质。计算机存储介质包括但不限于RAM、 ROM、 EEPROM、闪存或其它存储技 术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘 存储或其它磁存储设备、或者可被用来存储所需信息并可由计算机130访问的任意 其它介质。通信介质通常以诸如载波或其它传送机制的己调制数据信号的方式体现 计算机可读指令、数据结构、程序模块或者其它数据,并且包括任意信息传输介质。 本领域技术人员应当熟悉已调制数据信号,它以在信号中编码信息的方式设置或改 变其特性中的一个或多个。通信介质的示例包括诸如有线网络或直接线连接的有线 介质、以及诸如声波、RF、红外线和其它无线介质的无线介质。以上介质的任意 组合也可被包括在计算机可读介质的范围内。
系统存储器134包括可移动和/或不可移动、易失性和/或非易失性存储器形式 的计算机存储介质。在所示实施例中,系统存储器134包括只读存储器(ROM) 138和随机存取存储器(RAM) 140。包含有助于诸如在启动期间在计算机130内 的元件之间传递信息的基本例程的基本输入/输出系统142 (BIOS)通常被存储在 ROM 138中。RAM140通常包含可由处理单元132立即访问和/或当前正由处理单 元132操作的数据和/或程序模块。作为示例而非限制,图5示出了操作系统144、 应用程序146、其它程序模块148和程序数据150。
计算机130也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。 例如,图5示出了对不可移动的非易失性磁性介质读写的硬盘驱动器154。图5还 示出了对可移动的非易失性磁盘158读写的磁盘驱动器156、以及对诸如CD-ROM 或其它光学介质的可移动的非易失性光盘162读写的光盘驱动器160。可被用在示 例性操作环境中的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但 不限于磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM 等。硬盘驱动器154以及磁盘驱动器156和光盘驱动器160通常经由诸如接口 166 的非易失性存储器接口连接到系统总线136。
上述以及在图5中示出的驱动器或其它大容量存储设备以及与它们相关联的 计算机存储介质为计算机130提供了对计算机可读指令、数据结构、程序模块和其 它数据的存储。例如,在图5中,硬盘驱动器154被示为存储操作系统170、应用 程序172、其它程序模块174以及程序数据176。注意这些组件可与操作系统144、
14应用程序146、其它程序模块148和程序数据150相同或不同。这里,操作系统170、 应用程序172、其它程序模块174和程序数据176被赋予不同附图标记,以便说明
至少它们是不同的副本。
用户可通过诸如键盘180和定点设备182 (例如,鼠标、跟踪球、笔或触摸板) 的输入设备或用户接口选择设备向计算机30输入命令和信息。其它输入设备(未 示出)可包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些或其 它输入设备通过耦合至系统总线136的用户输入接口 184连接到处理单元132,但 也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构 连接。监视器188或其它类型的显示设备也经由诸如视频接口 190的接口连接到系 统总线B6。除监视器188之外,计算机常常可包括诸如打印机和扬声器的其它外 围输出设备,它们可经由输出外围接口 (未示出)连接。
计算机130可工作在使用到诸如远程计算机194的一个或多个远程计算机的 逻辑连接的网络化环境中。远程计算机194可以是个人计算机、服务器、路由器、 网络PC、对等设备或其它公共网络节点,并且通常包括以上就计算机130所描述 的组件中的许多或所有组件。图5中所示逻辑连接包括局域网(LAN) 196和广域 网(WAN) 198,但也可包括其它网络。这些网络环境在办公室、企业范围计算机 网络、内联网和全球计算机网络(例如,因特网)中是普遍的。
当用在局域联网环境中时,计算机130经由网络接口或适配器186连接到LAN 196。当用在广域网络环境中时,计算机130通常包括调制解调器178或在诸如因 特网的WAN198上建立通信的其它装置。或为内置式或为外置式的调制解调器178 可经由用户输入接口 184或其它适当的机制连接到系统总线136。在网络化环境中, 关于计算机130所述的程序模块或其一部分可被存储在远程存储器存储设备(未示 出)中。作为示例而非限制,图5示出了驻留在存储器设备的远程应用程序192。 所示网络连接仅是示例性的,并且也可使用在计算机之间建立通信链接的其它装 置。
通常,130计算机的数据处理器通过在不同时间存储在计算机的计算机可读存 储介质中指令来编程。程序和操作系统通常分布在例如软盘或CD-ROM上。可将 它们从这些地方安装或加载到计算机的辅助存储器中。在执行时,可部分地将它们 健在到计算机的主电子存储器中。这里所述的本发明包括当这些介质包含用于实现
以下结合微处理器或其它数据处理器描述的步骤的指令或程序时的这些以及其它 各种类型的计算机可读介质。本发明还包括当根据本文所述的方法和技术编程的计算机本身。
为了示例的目的,这里将诸如操作系统的程序和其它可执行程序组件示为离 散块。然而应当认识到,这些程序和组件可在不同时间驻留在计算机的不同存储组 件中,并且可通过计算机的数据处理器来执行。
尽管结合包括计算机130的示例性计算系统环境进行描述,但是本发明可 与许多其它通用或专用计算系统环境或配置一起运行。该计算环境非旨在对本 发明的使用范围或功能提出任何限制。此外,该计算环境也不应当被解释为对 示例性操作环境中所示组件的任一个或组合具有依赖或要求。可适合用于本发 明的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机、 服务器计算机、手持型或膝上型设备、多处理机系统、基于微处理器的系统、 机顶盒、可编程消费者电子产品、移动电话、网络PC、小型机、大型计算机、 包括上述系统或设备的任意种类的分布式计算环境等。
可在由一个或多个计算机或其它设备执行的诸如程序模块的计算机可执 行指令的通用环境中描述本发明。通常,程序模块包括但不限于执行特定任务 或实现特定抽象数据类型的例程、程序、对象、组件、数据结构。也可在其中 通过经由通信网络链接的远程处理设备执行任务的分布式计算环境中实践本 发明。在分布式计算环境中,程序模块可位于包括存储器存储设备的本地或远 程计算机存储介质中。
软件体系结构的上下文中的接口包括软件模块、组件、代码部分或其它计算 机可执行指令序列。接口包括例如访问第二模块以代表其执行计算任务的第一模 块。在一个示例中,第一和第二模块包括诸如由操作系统提供的应用程序编程接口 (API)、组件对象模型(COM)接口 (例如,用于对等应用程序通信)以及可扩
展标记语言元数据交换格式(XMI)接口 (例如,用于web服务之间的通信)。 接口可以是紧耦合的同步实现,诸如Java2平台企业版(J2EE) 、 COM或分
布式COM (DCOM)示例中那样。作为替代或除此之外,接口可以是松耦合的异
步实现,诸如web服务(例如,使用简单对象访问协议)中那样。通常,接口包
括以下特性的任意组合紧耦合、松耦合、同步和异步。此外,接口可遵照标准协
议、专有协议或标准和专有协议的任意组合。
本文所述的接口可全部为单个接口的一部分,或者可被实现为单独的接口或
其任意组合。接口可本地或远程地执行以提供功能。此外,与这里所示或所述的相
比,接口可包括更多或更少的功能。以下示例进一步示出了本发明的方面。 示例一存储器管理
此示例示出了通过如上所述的定制视频存储器管理器来将视频帧分配到视频 存储器中的缓冲器。在此示例中,视频卡包含存储器的标记为A-J的十(10)个视 频缓冲器。该示例性视频编辑需要两个视频时间线以及插入在两个视频之间的一个 过渡。在视频编辑过程期间,每个视频需要两个工作缓冲器,而跃迁需要一个工作 缓冲器,它们被用于操作视频帧和编辑处理的过渡。
图6是其中视频1在视频时间线上从视频1过渡到视频2的视频时间线的示 图。时间线以下所标识的工作区表示操作视频帧和过渡所需的工作缓冲器的数量。
在时间线的起始处,需要两个工作缓冲器一缓冲器(Buffer) A和B来处理和显 示视频1的视频帧。因而,八个缓冲器可用于存储提前渲染队列上视频1的视频帧。
在视频1与视频2之间的过渡期间,总共需要五个工作缓冲器,两个工作缓 冲器用于处理和显示视频1、 一个工作缓冲器用于处理过渡、以及两个工作缓冲器 用于处理和显示视频2。这时,仅五个缓冲器可用于存储提前渲染队列上的视频帧。
一旦时间线继续进行到仅视频2被处理和显示的点上,则仅需要两个工作缓 冲器。因而,如前所述,八个缓冲器可用于存储提前渲染队列上视频2的视频帧。
图7A是在视频1的帧1被显示之前以及在视频1的帧8被渲染并排列到提前 渲染队列之后的提前渲染队列的图示。由于缓冲器A和B是用于视频1的工作缓 冲器且缓冲器C-J正存储视频帧1-8,所以所有缓冲器都已被分配,并且不能对缓 冲器进行额外分配直至从提前渲染队列移除一个帧而使得可用于存储一个视频帧。 字母表示正在存储视频帧的缓冲器,而数值是正存储在提前渲染队列上的视频帧 号。
图7B是在视频1的帧1已被显示并已从队列上移除、由此释放缓冲器C以存 储另 一个视频帧之后的提前渲染队列的图示。
图7C是在视频1的视频帧9已被解码、渲染和分配到缓冲器C之后的提前渲 染队列的图示。
图7D是视频1的帧2已被显示并已从队列移除、由此释放缓冲器D以分配 给另 一个视频帧之后的提前渲染队列的图示。
视频1包含100个视频帧。图7E是在视频帧100已被解码、渲染和分配到缓 冲器J之后的提前渲染队列的图示。如前所述,过渡需要一个工作缓冲器而视频2 需要两个工作缓冲器。因而,在视频1的帧100已被排列在提前渲染队列上之后,在可处理跃迁和视频2之前总共需要五个工作缓冲器。
图7F是视频1的帧96己被显示并已从队列移除之后的提前渲染队列的图示。 缓冲器C、 D、 E和F被释放以用作用于处理跃迁和视频2的工作缓冲器。
图7G是当视频帧101刚已被解码、渲染和分配到缓冲器F时的提前渲染队列 的图示。缓冲器A和B仍为用于视频1 (帧97-100)的工作缓冲器,缓冲器C是 用于过渡的工作缓冲器,而缓冲器D和E是用于视频2 (帧IOI)的工作缓冲器。 在视频2的帧101已被排列到提前渲染队列之后,缓冲器A、 B和C被归还给系 统,因为它们不再需要作为视频l和过渡的工作缓冲器。此后,处理视频2仅需要 两个工作缓冲器,由此允许由提前渲染队列使用所有八个缓冲器(例如,缓冲器A、 B、 C、 F、 G、 H、 I、 J)来对视频2的视频帧进行排队。
图7H在视频1的帧97被显示之前以及在视频2的帧104被渲染并排列到提 前渲染队列之后的提前渲染队列的图示。因而,在处理视频2期间有八个缓冲器用 于存储视频帧。
本文所示和所述的这些方法的执行或实施的次序并非是必需的,除非另外声 明。即,这些方法的要素可以按任意次序来执行,除非另外声明,并且方法可包括 比本文所公开的那些更多或更少的要素。例如,可以构想在另一要素之前、与其同 时或之后执行或实施特定要素是落在本发明的实施例的范围内的。
当介绍本发明的实施例的要素时,冠词"一(a)"、 "一(an)"、"该(the)"、 "所述(said)"旨在表示存在一个或多个要素。术语"包括"、"包含"和"具 有"旨在包括性的,并且表示可存在除所列要素之外的其它要素。
鉴于以上所述,应当认识到,可实现本发明的某些对象,并获得其它有益结果。
因为可在上述系统和方法中作出各种改变而不背离本发明的范围,所以其旨 在以上说明书中所包含以及附图中所示的所有主题应当被解释为示例性的而非限 制性的。
权利要求
1. 一种用于显示多个视频帧的计算机实现方法,所述方法包括将所述视频帧从视频文件解码;将经解码的视频帧存储到视频存储器中;渲染所存储的视频帧;将经渲染的视频帧排列到提前渲染队列;以及将经渲染的视频帧从提前视频队列显示到屏幕。
2. 如权利要求1所述的方法,其特征在于,图形处理单元对存储在视频存储 器的所述视频帧渲染效果,并将经处理的视频帧排列到所述提前渲染队列上。
3. 如权利要求1所述的方法,其特征在于,中央处理单元将所述视频帧解码, 而图形处理单元将经渲染的视频帧显示到所述屏幕。
4. 如权利要求1所述的方法,其特征在于,还包括在所述视频帧己被显示到 所述屏幕之后在所述提前渲染队列上保留一个或多个视频帧。
5. 如权利要求4所述的方法,其特征在于,还包括以逆序将所述提前渲染队 列上的至少一个视频帧显示到所述屏幕。
6. 如权利要求l所述的方法,其特征在于,还包括 渲染所存储的视频帧;将经渲染的视频帧以正序排列到第二队列中; 以逆序将经渲染的视频帧从所述第二队列移除; 以逆序将经渲染的视频帧排列到所述提前渲染队列;以及 以逆序将经渲染的视频帧从提前渲染队列显示到所述屏幕。
7. 如权利要求1所述的方法,其特征在于,视频帧被渲染及添加到所述提前 渲染队列的速率超过所述帧被显示到所述屏幕的速率。
8. 如权利要求1所述的方法,其特征在于,所述提前渲染队列包含至少三个 视频帧。
9. 如权利要求1所述的方法,其特征在于,所述队列由存储经渲染的视频帧 的存储缓冲器构成,所述方法还包括当所有可用存储缓冲器满时,暂停将额外的经渲染的视频帧分配到所述提前 渲染队列;在一经渲染的视频帧己被显示到所述屏幕之后,将其从所述提前渲染队列上 的存储缓冲器删除;使所述存储缓冲器可用于视频帧的分配;以及继续将额外的经渲染的视频帧分配到所述提前渲染队列上的所述可用缓冲器°
10. 如权利要求1所述的方法,其特征在于, 一个或多个计算机可读介质具有用于执行如权利要求1所述的计算机可执行方法的计算机可执行指令。
11. 一种用于显示视频并具有视频文件、视频存储器、屏幕、中央处理单元和图形处理单元的系统,所述系统包括包括经渲染的视频帧的提前渲染队列;所述中央处理单元,被配置成执行计算机可执行指令以用于将包括多个视频帧的视频文件解码到所述视频存储器中;所述图形处理单元,被配置成执行计算机可执行指令以用于渲染所述视频存储器中的所述视频帧; 将经渲染的视频帧排列到所述提前渲染队列上;以及 将经渲染的视频帧从提前渲染队列显示到屏幕。
12. 如权利要求ll述的系统,其特征在于,所述图形处理单元还被配置成执 行用于在所述视频帧已被显示到所述屏幕之后将其保留在所述提前渲染队列上的 计算机可执行指令。
13. 如权利要求ll述的系统,其特征在于,所述图形处理单元还被配置成执 行用于以逆序将所述提前渲染队列上的至少一个视频帧显示到所述屏幕的计算机 可执行指令。
14. 如权利要求ll述的系统,其特征在于,所述提前渲染队列包含至少三个 视频帧。
15. 如权利要求ll述的系统,其特征在于,所述图形处理单元还被配置成执 行计算机可执行指令用于渲染两个或多个视频帧; 以逆序将经渲染的视频帧排列到第二队列中; 以逆序将经渲染的视频帧从所述第二队列移除; 以逆序将经渲染的视频帧排列到所述提前渲染队列上;以及 以逆序将经渲染的视频帧从提前渲染队列显示到所述屏幕。
16. 如权利要求ll述的系统,其特征在于,视频帧被渲染并添加到所述提前 渲染队列的速率超过所述帧被显示到所述屏幕的速率。
17. 如权利要求ll述的系统,其特征在于,所述队列由存储经渲染的视频帧 的存储缓冲器构成,所述图形处理单元还被配置成执行计算机可执行指令以便当所有可用存储缓冲器满时,暂停将额外的经渲染的视频帧分配到所述提前 渲染队列;在一经渲染的视频帧己被显示到所述屏幕之后,将其从所述提前渲染队列上 的存储缓冲器删除;使所述存储缓冲器可用于视频帧的分配;以及继续将额外的经渲染的视频帧分配到所述提前渲染队列上的所述可用缓冲器°
18. —种具有用于将视频帧显示到屏幕的计算机可执行指令的计算机可读介 质,所述指令包括.-用于将多个视频帧从视频文件解码并将经解码的视频帧存储到视频存储器中 的指令;用于渲染所述视频帧的指令;用于将经渲染的视频帧排列到提前渲染队列的指令;以及 用于将经渲染的视频帧从所述提前渲染队列显示到屏幕的指令。
19. 如权利要求18所述的计算机可读介质,其特征在于,还包括 用于渲染两个或多个视频帧的指令;用于以正序将经渲染的视频帧排列到第二队列中的指令;用于以逆序将经渲染的视频帧从所述第二队列排列到所述提前渲染队列的指 令;以及用于以逆序将经渲染的视频帧从提前渲染队列显示到所述屏幕的指令。
20. 如权利要求18所述的计算机可读介质,其特征在于,所述队列由存储经 渲染的视频帧的存储缓冲器构成,所述介质还包括用于当所有可用存储缓冲器满时暂停将额外的经渲染的视频帧分配到所述提 前渲染队列的指令;用于在一经渲染的视频帧已被显示到所述屏幕之后将其从所述提前渲染队列 上的存储缓冲器删除的指令;用于使所述存储缓冲器可用于视频帧的分配的指令;以及用于继续将额外的经渲染的视频帧分配到所述提前渲染队列上的所述可用缓 冲器的指令。
全文摘要
利用提前渲染队列来存储经渲染的视频帧的视频编辑和视频回放。提前渲染队列有助于在正逆时间线方向上平滑回放视频,从而避免在以小于视频文件的时间线速率的速率渲染视频帧时发生的视频毛刺。本发明的实施例还包括结合提前渲染队列使用图形处理单元来进一步确保视频的平滑回放。
文档编号G11B27/00GK101512656SQ200680024224
公开日2009年8月19日 申请日期2006年4月26日 优先权日2005年6月30日
发明者B·J·沃克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1