本申请是申请号为200980153781.5,申请日为2009年11月04日,发明名称为“以gpu加速的软件视频转码器”的中国专利申请的分案申请。
相关申请案的交互参照
本申请案为目前待审专利申请案第12/189,060号(其申请于2008年8月8日,标题为“以gpu加速的软件视频编码器”,为申请于2007年12月9日的美国专利申请案第11/960,640号的部分延续申请案)的部分延续申请案,而美国专利申请案第11/960,640号主张申请于2007年5月11日的美国临时专利申请案第60/928,799号的权益,以及与申请于2007年12月5日的美国专利申请案第11/951,222号有关,以上所有文献全部并入本文作为参考。
所揭示的具体实施例大体有关于视频显示技术,且更特别的是有关于数字视频数据的转码(transcode)。
背景技术:
转码是经数字编码的一格式至另一格式的直接数字至数字式的转换。转码在内容适配(contentadaptation)的许多领域中可发现而且常用来把不兼容或过时的数据转换成更合适的格式。它也用来存档或分散内容于不同类型的数字媒体供使用于不同的重放器件,例如把cd格式的歌曲转换成mp3格式用以在计算机及mp3播放器上重放。转码也常用于移动电话内容适配的领域。就此情形而言,由于移动器件及其性能有多样性,转码是必要的。此种多样性要求内容适配的中间状态以便确保来源内容将适当地在目标器件上重放。
利用转码的一种受欢迎的领域为多媒体信息服务(mms),其用于以媒体(影像、声音、文字及视频)收发信息于移动电话之间的技术。例如,当拍照手机用来取得数字相片时,常产生分辨率(resolution)至少有640x480的高质量影像。传送影像至另一手机可需要将此高分辨率影像转码成有较少色彩的分辨率较低影像以便更适合目标器件的屏幕大小及显示限制。家庭剧院软件也利用转码,例如以减少视频文件所使用的硬盘空间。本申请案中最常见的操作是mpeg-2文件至mpeg-4格式的转码。在有大量的在线多媒体内容及众多不同的可利用器件下,由任何输入格式实时转码至任何输出格式对于任何移动器件上的任何多媒体内容提供真正的搜寻性能正变成有必要。
现有转码方案通常只利用处理系统的cpu资源。因着视频数据的大小,这表示系统有实质的处理负担,尽管有额外的可用资源,然而例如gpu带宽在此类操作中常常没有加以充分利用。
因此,亟须一种转码程序(transcodingprocess)让gpu及cpu资源可用在执行在转码管线(transcodepipeline)的任务。
技术实现要素:
揭示于本文的具体实施例包括用于把视频流从第一数字格式转码成第二数字格式的设备,包括:解码器,其接收经编码成该第一数字格式的该视频流以及产生经解码的视频流,其中,该解码器利用图形处理单元(gpu)电路以及通过该gpu电路与gpu硬件解码器、gpu可编程解码器及中央处理单元(cpu)软件解码器中的至少一个的组合来实现;缩放器,其改变该经解码的视频流的图片大小以产生经解码及缩放的视频流,其中,该缩放器通过cpu缩放器或gpu缩放器中的一个来实现;以及,编码器,其接收该经解码及缩放的视频流以及产生经编码成该第二数字格式的输出流。
在具体实施例中,该视频流由包括含有至少一个gpu及一个cpu的处理器平台的转码管线系统接收。
在具体实施例中,该gpu硬件解码器包括硬件/可编程视频处理器,其中,解码操作的第一部分由gpu硬件执行而该解码操作的第二部分由在该gpu内的可编程gpu着色器执行。
在具体实施例中,该gpu可编程解码器包含允许通过卸载由该cpu执行的某些操作给该gpu执行来硬件加速该解码器的应用程序接口(api)。
在具体实施例中,呈该第一数字格式的该视频流包括多个视频位流以及该解码器组件包括多个解码器组件,其中,该多个视频位流中的每一视频位流输入至各自的解码器组件。
具体实施例进一步包括视频混色组件,其根据确定混色效果将该多个视频位流组合成经混色的输出流。
在具体实施例中,该多个视频位流包括mpeg视频数据,该设备进一步包括多个框架池,该框架池将mpeg框架的解码顺序重新排序成显示顺序。
在具体实施例中,该输出流传送至显示器件。
具体实施例进一步包括,框架率逻辑组件,其使该经混色的输出流的框架率与该显示器件的刷新速率匹配。
在具体实施例中,该经解码及缩放的视频流传送至耦合至该cpu的存储器器件。
在具体实施例中,该经解码及缩放的视频流的第一副本可用于该cpu,以及该经解码及缩放的视频流的第二副本可用于该gpu。
在具体实施例中,该视频流包含一音频信道,该设备进一步包括:去复用器,其于产生该经解码的视频流之前由包含该视频流的视频框架分离出该音频信道;以及,复用器(multiplexer),其将该音频信道加回到经编码成该第二数字格式的该输出流以及在该编码器中编码。
在具体实施例中,该音频信道在加回到该输出流之前把它从第一音频格式转码成第二音频格式。
描述于本文的具体实施例进一步包含一种把视频流从第一数字格式转码成第二数字格式的方法,其包括下列步骤:由数据储存所接收经编码成该第一数字格式的该视频流;解码收到的该视频流以产生经解码的视频流,其中,该解码方法通过图形处理单元(gpu)资源与中央处理单元(cpu)资源的组合来实现,该解码方法利用与gpu硬件解码器、gpu可编程解码器及cpu软件解码器中的至少一个结合的该gpu资源;缩放该经解码的视频流的图片大小以产生经解码及缩放的视频流,其中,该缩放器通过cpu缩放器或gpu缩放器中的一个来实现;以及,编码该经解码及缩放的视频流以产生经编码成该第二数字格式的输出流。
具体实施例进一步包括下列步骤:使用该gpu硬件解码器、该gpu可编程解码器或该cpu软件解码器中的一个来选择适当的解码方法。
在具体实施例中,该选择步骤由使用者选择、自动程序、或由该第一数字格式决定中的一种来完成。
具体实施例进一步包括下列步骤:传送该经解码及缩放的视频流传送至与在处理平台上的cpu耦合的存储器器件,该处理平台包含该cpu与gpu,使得该经解码及缩放的视频流的第一副本可用于该cpu而该经解码及缩放之视频流的第二副本可用于该gpu。
在具体实施例中,该gpu硬件解码器包括硬件/可编程视频处理器,其中,解码操作的第一部分由gpu硬件执行而该解码操作的第二部分由在该gpu内的可编程gpu着色器执行,以及,其中,该gpu可编程解码器包含允许通过卸载由该cpu执行的某些操作给该gpu执行来硬件加速该解码器的应用程序接口(api)。
在具体实施例中,呈该第一数字格式的该视频流包括多个视频位流以及该解码器组件包括多个解码器组件,其中,该多个视频位流中的每一视频位流输入至各自的解码器组件,该方法进一步包括下列步骤:根据确定混色效果,将该多个视频位流混合成经混色的输出流。
在具体实施例中,该多个视频位流包括mpeg视频数据,该方法进一步包括下列步骤:汇集该多个框架于框架池以将mpeg框架的解码顺序重新排序成显示顺序;以及,传送该输出流至显示器件。
具体实施例进一步包括使该经混色的输出流的框架率与该显示器件的刷新速率匹配。
描述于本文的具体实施例进一步包含一种视频处理系统,包括:中央处理单元(cpu);耦合至该cpu的图形处理单元(gpu);以及,把视频流从第一数字格式转码成第二数字格式的视频转码器管线,该转码器管线包括:解码器,其接收经编码成该第一数字格式的该视频流以及产生经解码的视频流,其中,该解码器利用图形处理单元(gpu)电路以及通过该gpu电路与gpu硬件解码器、gpu可编程解码器及中央处理单元(cpu)软件解码器中的至少一个的组合来实现;缩放器,其改变该经解码的视频流的图片大小以产生经解码及缩放的视频流,其中,该缩放器通过cpu缩放器或gpu缩放器中的一个来实现;以及,编码器,其接收该经解码及缩放的视频流以及产生经编码成该第二数字格式的输出流。
在具体实施例中,该gpu硬件解码器包括硬件/可编程视频处理器,其中,解码操作的第一部分由gpu硬件执行而该解码操作的第二部分由在该gpu内的可编程gpu着色器执行。
在具体实施例中,该gpu可编程解码器包含允许通过卸载由该cpu执行的某些操作给该gpu执行来硬件加速该解码器的应用程序接口(api)。
在具体实施例中,使用该gpu硬件解码器、该gpu可编程解码器或该cpu硬件解码器中的一个的适当解码方法通过使用者选择、自动程序或由该第一数字格式决定中的一种来选择。
附图说明
具体实施例为举例说明而不限于附图,其中,类似的组件用相同的组件符号表示,其中:
图1为根据具体实施例图示实现视频转码方法的视频转码管线的方块图;
图2为根据具体实施例图示实现视频转码器管线的处理系统的方块图;
图3为根据具体实施例图示有其它处理组件的视频转码管线;
图4为根据具体实施例图示实现视频解码程序的视频编辑管线(videoeditpipeline);
图5为根据具体实施例图示含有供视频数据解码用的框架汇集(framepooling)的视频编辑管线;
图6为根据具体实施例图示用于含有视频及音频内容的内容的完全转码管线(fulltranscodingpipeline);以及
图7为根据具体实施例图示利用多个解码程序来转码数字视频数据的整体方法的流程图。
具体实施方式
如本文所述的本发明具体实施例对于上述习知方法的问题提供解决方案。在以下的说明中,给出各种范例用来图解说明,而非旨在限制。具体实施例均针对一种利用多个中央处理单元(cpu)核心及/或一个或多个图形处理单元(gpu)来分担视频转码的工作量的转码系统,这包含利用gpu内的两种组件:用于解码步骤的专属硬件码(hardcode)或可编程视频解码器,以及用于缩放及编码的计算着色器(computeshader)。该系统结合工业标准微软dxva方法的用法以便用gpu以gpu编码方案及缩放视频的中间步骤来加速视频解码。
转码一般指的是将视频数据由第一格式变换成第二格式的程序。转码包含用经编码的视频开始以及在解码程序后再度予以编码。例如,将经编码成一格式及以数字方式储存的来源视频解码,然后编码成另一格式,甚至重新编码成相同的格式。对于转码后的视频,也可执行中间操作,例如缩放,与其它视频混色(blend),同样这也在编码成第二视频格式之前。图1为根据具体实施例图示实现视频转码方法的视频转码管线的方块图。如图1所示,系统100包含经编码成第一数据格式的视频位流102。该位流在视频解码程序104解码。然后,用视频缩放器(videoscaler)106缩放经解码的视频数据。然后,经缩放的视频数据在视频编码器108中编码以产生格式化成第二视频格式的位流110。
在一具体实施例中,图1的视频转码管线在处理系统中实现,其包括含有至少一个中央处理单元(cpu)及至少一个图形处理单元(gpu)的处理平台。图2为根据具体实施例图示实现视频转码器管线的处理系统的方块图。以图2的系统而言,视频数据以第一格式储存于数据储存所210以及根据第一视频格式211传送至处理器平台202。处理器平台202包含cpu204、gpu206、及存储器208。gpu206可为与cpu分开的图形处理单元,但是装在处理器平台202的同一个母板(motherboard)或卡上。它也可装设成透过总线或类似互连来耦合至cpu的独立单元。替换地,gpu206可为图形处理电路或紧密耦合于或装设成cpu204内的机能的机能。转码程序的实现通过由cpu204与gpu206中的一个或多个提供的功能的组合以产生呈第二格式213的视频数据,它可转移至资料储存所214及/或通过显示器件212显示,或透过接口链路或网络(例如,互联网)传送至其它的器件。
图3为根据具体实施例更详细地图示图1的视频转码管线。以图3的具体实施例而言,视频位流的编码是用熵编码法(entropycoding)。熵编码法为特殊形式的无损数据压缩,其涉及用连续长度编码(rle)算法把影像组件排列成“z字状(zigzag)”顺序,该算法聚集类似的频率,插入长度编码零(lengthcodingzeros),然后对于其余的部分使用霍夫曼编码法(huffmancoding)。霍夫曼编码法一般指的是用可变长度代码表来编码来源符号(例如,文件中的字母),在此已基于来源符号各个可能值的估计出现机率用特定的方式来导出该可变长度代码表。
在系统300中,经编码的位流302用熵解码器304解码。该解码程序涉及许多可变长度解码步骤,包含输出310的反转离散余弦转换(idct)306、反量化(dequantization)、再正规化(renormalization)等等。在一具体实施例中,对于由重建步骤310产生的参考框架(referenceframe)312执行动态估计程序(motionestimationprocess)308。然后,以视频缩放器程序316缩放经解码的视频框架314。然后,通过如区块320至324所示的编码程序,将经缩放的视频框架318编码成第二格式。首先,预处理320该视频框架,然后输入至动态预测引擎(motionestimationengine)322。然后,mb编码程序(mbcodingprocess)324产生第二格式的位流328,以及回馈给动态预测引擎322的参考框架326。在一具体实施例中,图3中以区块320至324图示的一个或多个编码程序用美国专利第12/189,060号所述的编码器程序实现,该文献全部并入本文作为参考。
如图3所示,转码管线中的第一步骤是解码已编码成特定数字格式的视频位流102。根据具体实施例,该解码程序利用由gpu206与cpu204提供的资源以优化处理产量以及其它步骤的执行,例如也可能使用cpu资源的缩放或混色。
根据具体实施例,用有cpu与gpu处理器两者的处理平台102,有三种不同的方法以解码视频位流102。取决于原始位流102的编码格式,及其它的相关转码程序,选择这三种解码方法中的一个用于特定的输入位流。
在第一方法中,单独使用cpu204来执行与解码功能104有关的所有步骤。通常这只用软件实现,其中,gpu206随后用来执行缩放106及编码功能。该cpu解码器方法也可被称为软件解码器。
在第二方法中,解码程序中有部分在cpu上执行,其余是在gpu上执行。这是软件加上图形芯片的解决方案,其包括gpu可编程解码器系统。在此方法中,在cpu上执行的解码包含到达熵解码步骤304的解码步骤。该熵解码步骤及视需要的缩放步骤316均在gpu上执行。
在第三方法中,用在gpu之中的专属硬件解码器电路(gpu硬件解码器)来解码。解码是用硬件/可编程视频处理器来执行以通过熵解码步骤304来解码位流。该gpu硬件解码器可实现于有具特定指令的专属硬件的可编程处理芯片,其经设计成实现一个或多个编解码器(codec)的某些技术规格。在一具体实施例中,该gpu硬件解码器经实现成为gpu硬件的uvd(通用视频解码器)部分,且经配置成支持h.264及vc-1视频编解码标准的硬件解码,或其它编解码器。一般而言,该uvd几乎全部在硬件中处理h.264/avc及vc-1视频编解码器的解码。该uvd对于vc-1与h.264几乎卸下需要最少主机(cpu)注意的所有的视频-解码器程序。除了处理vlc/cavlc/cabac、频率变换、像素预测及环内去块滤波(inloopdeblocking)的功能以外,该uvd也包含先进的视频处理后区块。来自uvd的各种处理后操作可包含去噪(denoising)、反交错(de-interlacing)、缩放/调整大小,及类似操作。通过用可编程gpu着色器执行逆熵(可变长度解码)以完成解码操作的其余部分的处理电路的任何适当组合,可实现该硬件/可编程视频处理器(例如,uvd)。
以本说明的目的而言,“h.264”指也被称作mpeg-4第10部(part10)或mpeg-4avc(先进视频编码)的视频压缩标准。h.264为由itu-t视频编码专家组(vceg)与iso/iec动画专家组(mpeg)一起开发的区块取向以动态估计为基础的编解码器中的一个。
在一具体实施例中,该uvd的解码阶段304-314经配置成允许由gpu206拷贝经解码的位流以及进入cpu204。这使得cpu在该cpu中执行编码步骤318至324。以此具体实施例而言,视频缩放器316的输出输出至cpu存储器208。这使得系统在gpu与cpu之间分担处理负荷,因为必须使数据的副本可被gpu与cpu取得。使用uvd硬件的编码程序使得可以高速做出副本供cpu使用。这允许gpu与cpu个别保持影像的副本。以此方式由gpu与cpu完成的任何分担式处理涉及共享某些信息,而不是在这两个单元之间传输完整的影像。这大幅减少cpu/gpu共享操作对于输入视频位流所要求的带宽负担。
图3的缩放器316实作成可取得输入影像及根据定义比例来调整大小的任何适当缩放器程序或电路。一般而言,影像缩放包括改变视频的图片大小(picturesize),这也被称为转换大小(transsizing)。该缩放步骤为视需要,在输出分辨率与媒体分辨率不同时也可使用。该缩放器可用来调整影像以便在不同类型的器件之间重放。例如,高清晰度(hd)电视传输通常有1280x720像素至1920x1080像素的大小。不过,数字电影(电影院的投影)及数字中间片(digitalintermediate,为好莱坞制作工作室内部所用的的格式)的清晰度可高达约3000x4000像素。可实现该缩放器程序成为cpu缩放器或gpu缩放器,它可为硬件缩放器或可编程像素着色器。
对于实现解码的第二方法的具体实施例,亦即,在cpu及gpu两者上执行解码的软件加图形芯片解决方案,通过使用由微软公司定义的directx视频加速(dxva)接口可实现两种可能的变体。dxva为api(应用程序接口)技术规格,其允许视频解码的硬件加速以及指定解码器如何存取在gpu上的部分。它允许解码器卸载一些(例如,最后两条或三条)解码管线阶级(decodepipelinestage)给gpu,然后资料在gpu上呈现以及备妥显示。该管线允许卸载某些cpu密集型操作(例如,idct、动态补偿、反交错及颜色修正)给gpu。
dxva的工作结合系统的视频卡所用的视频渲染模型(videorenderingmodel)。dxva被软件视频解码器用来定义编解码器专用管线用于编解码器的硬件加速式解码及渲染。该管线在用来剖析媒体流及转换成dxva兼容结构的cpu开始。dxva指定可硬件加速的一组操作以及图形驱动器可实现加速操作的器件驱动器接口(ddi)。如果编解码器需要任一受支持操作,它可使用该接口来存取该操作的硬件加速式实作。经解码的视频交给硬件视频渲染器,在此于渲染给器件之前做进一步的后处理。dxva指定动态补偿308ddi,其指定idct操作306、霍夫曼编码、颜色修正、动态补偿、半透明混色(alphablending)、逆向量化颜色空间转换及框架率转换操作等等的接口。
一般而言,dxvaapi用于与微软窗口兼容的处理平台。对于使用其它操作系统的处理平台,可使用类似dxva的接口。该接口可为卸载某些解码管线阶级给gpu的任何api。对于与linux兼容的处理平台,例如通过x-视频动态补偿(xvmc)api可实现该api。xvmc为x窗口系统的x视频扩展指令集(xv)的延伸,以及允许视频程序卸载一部分的视频解码程序给gpu。
对于cpu执行熵解码程序304而gpu向前执行idct306及动态补偿308步骤的具体实施例,该dxvaapi指示由解码器304传送至idct306与动态补偿308程序中的每一个的信息。有各种不同版本的dxva标准可用,例如dxva1.0及2.0。对于uvd向前执行熵解码程序304的步骤的具体实施例,可使用dxva2.0api的技术规格。
解码管线的具体实施例可应用于处理两条或更多条位流的视频转码及编辑应用系统。该解码程序有不同的选择可用,即只有cpu、cpu加gpu、uvd、或用dxva1.0或2.0api协助可使用多条位流(例如,每条可代表不同的场景)的视频编辑应用系统。
图4为根据具体实施例图示实现视频解码程序的视频编辑管线。以系统400而言,有两条位流402及408各自输入视频解码程序404及412。然后,经解码的串流各自在视频缩放器程序406及414中缩放。如果位流402及408为待混色的影像或场景,则经解码及缩放的数据输入到视频混色及效果程序(videoblendandeffectsprocess)416。然后,将经混色的影像数据送到显示器422,或者用视频编码器程序418编码成不同的格式以在位流420产生第二格式的数据。视需要的显示器允许预览编码之前的输出位流420。两个输入位流402及408可为待一起混色的两种视频场景,例如背景及前景影像,或者它们可为一场景(位流#1)过渡至另一场景(位流#2)的重迭的实例。
在图2的视频编辑管线中,视频解码程序404及412各自实现上述视频解码方法中的一种。该视频解码程序可实现相同的解码方法(例如,但使用uvd)或者它们可实现不同的解码方法。例如,其中一个解码程序(例如,视频解码404)可使用基于uvd的解码程序,而另一个解码程序利用只用cpu的解码程序或利用基于cpu与gpu的解码程序。这可确保uvd或其它解码程序不会因一次有太多输入位流而过载。
虽然图4图示两条位流,应注意,取决于系统的要求及限制,任意多条位流是有可能的。一般而言,输入视频位流的格式会指示那一种编码程序404或416用于输入位流的解码程序。在整体的视频编辑应用系统中,视频编辑器可基于输入位流格式或格式来重新配置管线400,甚至在可将单一位流编码成不只一种格式的情形下。
混色程序416可使用可用于gpu的任何内建混色性能。例如,该gpu可包含允许使用常驻程序(residentprocess)来混合纹理的纹理处理性能。视频混色及效果程序416内所提供的视频效果可包含由习知视频编辑器提供的一些商用效果,例如由左至右、由上到下或其它过渡效果的混色。
视频解码方法的具体实施例可应用于标准预测mpeg方案(standardpredictivempegscheme)。在处理视频流时,mpeg编码器产生三种类型的码化框架。第一种框架称作“i”框架或框内码化框架(intra-codedframe)。这为最简单的框架且为静止影像的码化表示法。通常对于i框架不做处理;其目的是要提供解码器用以解码下一组框架的起点。第二种框架称作“p”框架或预测框架(predictedframe)。解码时,p框架由内含于前几个p框架或i框架的信息产生。最常见的第三种框架为“b”框架或双向框架(bi-directionalframe)。b框架向前及向后预测而且由由最后及下一个p或i框架构成。p框架与b框架为框架间码化框架(inter-codedframe)。编解码器的编码器可编码有以下序列的串流:ipbb…等。在数字视频传输中,常常不使用b框架。就此情形而言,该序列可只由i框架其次是一些p框架组成。对于此具体实施例,初始i框架的编码没有损失,以及将所有后续的p框架编码成有些片段是无损压缩而有些片段没有变化。
在mpeg及类似系统中,解码框架以解码顺序产生框架,这不同于它们的显示顺序。就此情形而言,图4的视频编辑器管线可包含一个或多个框架池(framepool)以利在解码程序之后正确地排序框架,图5为根据一具体实施例图示包含供视频数据解码用的框架汇集的视频编辑管线。如系统500所示,视频缩放器502及506的输出是输入各自的框架池504及508。该框架池储备框架以及以正确的显示顺序产生输出流。因此,如图5所示,框架会以解码顺序输入框架池504及508,以及以正确的显示顺序输出给任何进一步的混色及效果处理510。替换地,这两个串流可以解码顺序混色,但是只有这两个串流有完全相同的解码顺序和正确的同步时,这往往并非如此。因此,在汇集框架后混色往往比较有利。
随后,通过框架率逻辑程序512可编码输出流或送到视需要的显示器514。框架率逻辑程序512使框架处理性能适应显示速率性能,亦即,显示器的刷新速率,以优化系统的处理及显示功能。
图6为根据具体实施例图示用于包含视频及音频内容的内容的完全转码管线。图6的具体实施例图示单一管线,然而取决于有多少位流及解码器程序可用,有可能为多条信道。在系统600中,输入音频/视频位流602输入至分开音频内容与视频内容的去复用器电路(demultiplexercircuit)604。视频内容送到视频解码程序606,然后在视频缩放器608中缩放。然后,用视频编码器610以第二格式编码经编码及缩放的视频数据。然后,复用(multiplex)612经编码的视频数据与音频数据以产生输出位流614。类似于视频数据,通过去复用器604由原始位流602分离出来的音频数据616本身可被转码,或可越过以便在没有任何改变下与转码后的视频数据重新组合。数字音频转码可用来减少数据的取样,改变编码方案(例如,杜比格式),使有效储存或传输的质量降级,及其它效果。对于转码视频数据的视频解码功能606,可使用上述解码方法中的任一个。
转码程序的具体实施例允许使用硬件及软件结构的许多组合来选择解码。图7为根据一具体实施例图示使用多个解码程序来转码数字视频数据的整体方法的流程图。图7的方法在区块702开始,转码器管线接收已用第一编码方案格式化的输入位流。单信道转码器管线系接收及转码单一位流,不过,可提供任何实际的信道数以转码多条位流。在区块704,根据可能解码方案中的一个解码输入位流。在区块706a,第一解码方案使用uvdgpu硬件系统;在区块706b,第二解码方案通过使用api(例如,dxva,xvmc,或类似api)的gpu可编程解码器来使用gpu及cpu的资源;以及,在区块706c,第三解码方案只用一个或多个cpu核心而没有任何gpu支持。然后,在区块708,用视频缩放器缩放经解码的位流。然后,在区块710,将经解码及缩放的解码位流编码成第二格式。在区块712a,可用多个gpu核心,或在区块712b,可用多个cpu核心,来执行编码程序。
在一具体实施例中,解码方案706a至706c的选择可由使用者明确地选择,或自动由在处理系统中执行的程序选择。该自动程序可基于可利用的资源来选择解码程序。例如,如果uvd可利用,该自动程序可指示uvd单独用来解码。也可能有定义默认与一个或多个备用方法,例如在默认情形下用uvd来解码直到它没空,在这种情形下,只用cpu来解码,诸如此类。取决于解码方案,也可基于基于自动程序来选择缩放器程序。例如,如果uvd用来解码,它也应该用来缩放,以及如果cpu用来解码,它也应该用来缩放。
转码系统及方法的具体实施例结合gpu于编码的应用与gpu于解码及缩放的应用。对于mpeg-2,该系统使得gpu硬件的uvd部分可用来解码以h.2,64或vc-1编码的视频数据,以及致能基于硬件的idct与动态补偿功能。它也使得现有标准微软api(dxva1.0与2.0)可用来辅助解码操作。缩放视频(例如,由一分辨率调整大小至另一分辨率)的中间及视需要步骤也使用gpu的机能。转码管线也增加解码多条串流及执行混色或特效操作的性能,给例如视频编辑。该操作也可使用gpu资源。
具体实作转码管线的图2的处理平台实现于能够产生、重放或以其它方式处理数字视频数据的任何类型计算器件。此类计算器件可为计算机或移动计算或通讯器件,例如笔记计算机、个人数字助理(pda)、移动电话、游戏机、或任何种类相似、有充分处理、通讯、及控制或av(视听)重放性能的行动计算器件。该计算器件可直接或间接通过可包含互联网、广域网(wan)、局域网(lan)、或彼等之任何组合的一个或多个网络耦合至其它的计算器件、资源或数据储存所。
具体实施例均可应用于所有的转码,在此将输入格式解码成原始像素,然后以不同的分辨率或相同的分辨率及不同的位率(bitrate)或相同的位率或质量设定,在不同或相同的编解码器重新编码。该转码操作可为压缩域转码(compresseddomaintranscoding),此为压缩dvd视频的程序(例如,dvd备用程序)所用的方法。
尽管描述于本文的具体实施例是针对转码应用,应注意,该等具体实施例也可应用于其它的应用,例如码率转换(transrating)。例如,较低位率码率转换为与转码类似的程序,其中,将文件码化成较低的位率而不改变视频格式;这可包含取样率转换,然而可使用相同的取样率但是较高的压缩。码率转换用来把给定的媒体装进较小的储存空间,例如安装dvd内容于视频cd上,或透过带宽较低的信道来传送内容。
尽管已参考包含gpu器件或视觉处理单元(vpu)(其处理系统的专属或整合图形渲染器件)的图形系统来说明具体实施例,应注意,该等具体实施例也可用于许多其它类型以并列方式运用的视频生产引擎。可以离散视频产生器的方式实现此类视频生产引擎,例如数字投影机,或可为以个别ic(集成电路)器件的形式提供的电子电路或是基于视频的计算机系统的附加卡。
在一具体实施例中,系统的gpu/cpu处理平台包含由下列各物组成的群选出的计算器件:个人计算机、工作站、手持计算器件、数字电视、媒体重放器件、智能通讯器件、及游戏机、或任何其它类似的处理器件。
揭示于本文的具体实施例包括用于把视频流从第一数字格式转码成第二数字格式的设备,包括:解码器,其接收经编码成该第一数字格式的该视频流以及产生经解码的视频流,其中,该解码器利用图形处理单元(gpu)电路以及通过该gpu电路与gpu硬件解码器、gpu可编程解码器及中央处理单元(cpu)软件解码器中的至少一个的组合来实现;缩放器,其改变该经解码的视频流的图片大小以产生经解码及缩放的视频流,其中,该缩放器通过cpu缩放器或gpu缩放器中的一个来实现;以及,编码器,其接收该经解码及缩放的视频流以及产生经编码成该第二数字格式的输出流。
在具体实施例中,该视频流由包括含有至少一个gpu及一个cpu的处理器平台的转码管线系统接收。
在具体实施例中,该gpu硬件解码器包括硬件/可编程视频处理器,其中,解码操作的第一部分由gpu硬件执行而该解码操作的第二部分由在该gpu内的可编程gpu着色器执行。
在具体实施例中,该gpu可编程解码器包含允许通过卸载由该cpu执行的某些操作给该gpu执行来硬件加速该解码器的应用程序接口(api)。
在具体实施例中,呈该第一数字格式的该视频流包括多个视频位流以及该解码器组件包括多个解码器组件,其中,该多个视频位流中的每一视频位流输入至各自的解码器组件。
具体实施例进一步包括视频混色组件,其根据确定混色效果将该多个视频位流组合成经混色的输出流。
在具体实施例中,该多个视频位流包括mpeg视频数据,该设备进一步包括多个框架池,该框架池将mpeg框架的解码顺序重新排序成显示顺序。
在具体实施例中,该输出流传送至显示器件。
具体实施例进一步包括,框架率逻辑组件,其使该经混色的输出流的框架率与该显示器件的刷新速率匹配。
在具体实施例中,该经解码及缩放的视频流传送至耦合至该cpu的存储器器件。
在具体实施例中,该经解码及缩放的视频流的第一副本可用于该cpu,以及该经解码及缩放的视频流的第二副本可用于该gpu。
在具体实施例中,该视频流包含一音频信道,该设备进一步包括:去复用器,其于产生该经解码的视频流之前由包含该视频流的视频框架分离出该音频信道;以及,复用器(multiplexer),其将该音频信道加回到经编码成该第二数字格式的该输出流以及在该编码器中编码。
在具体实施例中,该音频信道在加回到该输出流之前把它从第一音频格式转码成第二音频格式。
描述于本文的具体实施例进一步包含一种把视频流从第一数字格式转码成第二数字格式的方法,其包括下列步骤:由数据储存所接收经编码成该第一数字格式的该视频流;解码收到的该视频流以产生经解码的视频流,其中,该解码方法通过图形处理单元(gpu)资源与中央处理单元(cpu)资源的组合来实现,该解码方法利用与gpu硬件解码器、gpu可编程解码器及cpu软件解码器中的至少一个结合的该gpu资源;缩放该经解码的视频流的图片大小以产生经解码及缩放的视频流,其中,该缩放器通过cpu缩放器或gpu缩放器中的一个来实现;以及,编码该经解码及缩放的视频流以产生经编码成该第二数字格式的输出流。
具体实施例进一步包括下列步骤:使用该gpu硬件解码器、该gpu可编程解码器或该cpu软件解码器中的一个来选择适当的解码方法。
在具体实施例中,该选择步骤由使用者选择、自动程序、或由该第一数字格式决定中的一种来完成。
具体实施例进一步包括下列步骤:传送该经解码及缩放的视频流传送至与在处理平台上的cpu耦合的存储器器件,该处理平台包含该cpu与gpu,使得该经解码及缩放的视频流的第一副本可用于该cpu而该经解码及缩放之视频流的第二副本可用于该gpu。
在具体实施例中,该gpu硬件解码器包括硬件/可编程视频处理器,其中,解码操作的第一部分由gpu硬件执行而该解码操作的第二部分由在该gpu内的可编程gpu着色器执行,以及,其中,该gpu可编程解码器包含允许通过卸载由该cpu执行的某些操作给该gpu执行来硬件加速该解码器的应用程序接口(api)。
在具体实施例中,呈该第一数字格式的该视频流包括多个视频位流以及该解码器组件包括多个解码器组件,其中,该多个视频位流中的每一视频位流输入至各自的解码器组件,该方法进一步包括下列步骤:根据确定混色效果,将该多个视频位流混合成经混色的输出流。
在具体实施例中,该多个视频位流包括mpeg视频数据,该方法进一步包括下列步骤:汇集该多个框架于框架池以将mpeg框架的解码顺序重新排序成显示顺序;以及,传送该输出流至显示器件。
具体实施例进一步包括使该经混色的输出流的框架率与该显示器件的刷新速率匹配。
描述于本文的具体实施例进一步包含一种视频处理系统,包括:中央处理单元(cpu);耦合至该cpu的图形处理单元(gpu);以及,把视频流从第一数字格式转码成第二数字格式的视频转码器管线,该转码器管线包括:解码器,其接收经编码成该第一数字格式的该视频流以及产生经解码的视频流,其中,该解码器利用图形处理单元(gpu)电路以及通过该gpu电路与gpu硬件解码器、gpu可编程解码器及中央处理单元(cpu)软件解码器中的至少一个的组合来实现;缩放器,其改变该经解码的视频流的图片大小以产生经解码及缩放的视频流,其中,该缩放器通过cpu缩放器或gpu缩放器中的一个来实现;以及,编码器,其接收该经解码及缩放的视频流以及产生经编码成该第二数字格式的输出流。
在具体实施例中,该gpu硬件解码器包括硬件/可编程视频处理器,其中,解码操作的第一部分由gpu硬件执行而该解码操作的第二部分由在该gpu内的可编程gpu着色器执行。
在具体实施例中,该gpu可编程解码器包含允许通过卸载由该cpu执行的某些操作给该gpu执行来硬件加速该解码器的应用程序接口(api)。
在具体实施例中,使用该gpu硬件解码器、该gpu可编程解码器或该cpu硬件解码器中的一个的适当解码方法通过使用者选择、自动程序或由该第一数字格式决定中的一种来选择。
可将描述于本文的系统的方面实现为程序化成种种电路中的任一种的机能,包括可编程逻辑器件(“pld”),例如场效可编程栅极阵列(“fpga”)、可编程阵列逻辑(“pal”)器件、电气可编程逻辑及存储器器件、标准单元型器件(standardcell-baseddevice),以及特殊应用集成电路。其它可实现方面则包含:存储器器件、有存储器(例如,eeprom)的微控制器,嵌入微处理器、固件、软件等等。此外,可实作视频转码系统的方面于有基于软件的电路仿真的微处理器、(时序与组合式)离散逻辑、客制器件、模糊(神经)逻辑、量子器件、及上述器件种类的任何混合物。有种种的组件类型可提供下层的器件技术,例如,诸如互补金属氧化物半导体(“cmos”)之类的金属氧化物半导体场效应晶体管(“mosfet”)技术,诸如射极耦合逻辑(“ecl”)之类的双极技术,聚合物技术(例如,硅共轭聚合物与金属共轭聚合物-金属结构),混合模拟及数字等等。
也应注意,可用以下各物的任意多种组合来描述揭示于本文的各种功能:硬件、固件及/或基于它们的行为、缓存器传送、逻辑组件及/或其它特性来实作于各种机器可读取或计算机可读取媒体的数据及/或指令。可实作格式化数据及/或指令于其中的计算机可读取媒体包含但不受限于:各种形式的非易失性储存媒体(例如,光学、磁性或半导体储存媒体),以及通过无线、光学或有线信令媒体或彼等的任何组合可用来传输格式化数据及/或指令的载波。由载波传送格式数据及/或指令的实施例包含但不受限于:透过互联网及/或其它计算机网络经由一个或多个数据传送协议(例如,http、ftp、smtp等等)的传送(上传、下载、电子邮件、等等)。
除非上下文另有要求,在所有的说明和权利要求方面,字词“包括”以及其类似者应理解为内含的意思,而不是唯一或穷尽的意思;亦即,“包含,但是不受限于”的意思。使用单数或复数的字词也各自包含多数或单数。另外,字词“此处”、“在下”、“在上面”、“在下面”及意思相似的字词意指本申请案的全部而不是本申请案的任何特定部分。当字词“或”用来参考两个或更多个项目的列表时,该字词涵盖以下所有字词的诠释:列表中的任何项目、列表中的所有项目以及列表中的任何项目组合。
以上视频转码系统的图示具体实施例的说明并非欲穷尽说明或局限具体实施例为所揭示的精确形式或指令。所属领域的技术人员明白,尽管为求图解说明而在此举例描述图形处理单元或asic的程序的特定具体实施例,然而在所揭示的方法及结构的范畴内仍可能有许多等价的修改。
可组合上述各种具体实施例的组件及动作以提供其它的具体实施例。鉴于以上详细说明,对于所揭示的系统可做出以上及其它的改变。
一般而言,以下权利要求所用的术语不应被解释成要限制所揭示的方法为揭示于本专利说明书及权利要求的特定具体实施例,而应被解释成要涵盖在该权利要求下操作的所有操作或程序。因此,所揭示的结构及方法不受限于本揭示内容,反而提及方法的范畴应该全部由该权利要求决定。
尽管下文以一些专利申请项的形式提出揭示具体实施例的一些方面,本发明人预期方法的各方面仍有任意多个的专利申请项形式。例如,尽管只叙述一个方面被实作成机器可读取媒体,然而其它的方面同样可实作成机器可读取媒体。因此,本发明人保留在提出本申请案后追加附加权利要求的权利,以追求其它方面的附加权利要求。