处理视频内容的制作方法

文档序号:8460768阅读:388来源:国知局
处理视频内容的制作方法
【技术领域】
[0001]一般来说,实施例涉及信号处理。更具体来说,实施例涉及:经由用户模式驱动器(UMD)将包括与处理视频内容的请求相关联的命令的命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求;经由进程(例如,线程)将命令缓冲区移出队列;和/或独立于用户模式驱动器经由内核模式驱动器(KMD)将命令缓冲区提交给平台硬件。
【背景技术】
[0002]在诸如视频流播应用的计算机应用中,吞吐量是可以用最大帧处理速率(例如,以每秒帧数(FPS)为单位)测量的重要的性能指标。用于处理视频内容的驱动器模型可以包括用户模式驱动器(UMD)和内核模式驱动器(KMD)。例如,UMD可以从上级组件接收处理视频帧的请求,定位硬件命令和命令缓冲区,并对KMD进行直接系统调用以便将命令缓冲区提交给平台硬件以处理视频帧。UMD—直等待而不返回到上级组件接收另外的请求,直到平台硬件完成执行为止。因此,UMD对KMD和/或对平台硬件执行的依赖性可以是吞吐量(例如,FPS)的性能障碍,例如当位速率相对较高(例如,大于约30 Mbps)时,并且可能导致资源(例如处理器利用、功率利用)的不必要浪费,和/或可能不利地影响用户体验。
【附图说明】
[0003]通过阅读以下说明书和随附权利要求书并参考附图,本发明的实施例的各种优点将对于本领域技术人员变得显而易见,图中:
图1是根据一个实施例用于处理视频内容的设备的示例的框图;
图2是根据一个实施例用于响应于请求处理视频内容的方法的示例的流程图;
图3是根据一个实施例用于响应于请求和另外的请求处理视频内容的方法的示例的流程图;
图4是根据一个实施例的资源句柄阵列的框图的示例;
图5是根据一个实施例的逻辑体系结构的框图的示例;
图6是根据一个实施例其中通过用户模式驱动器(UMD)提交命令缓冲区并通过平台硬件(例如,GPU)处理视频帧的流程的示例的框图;
图7是根据一个实施例包括用户模式驱动器、内核模式驱动器和/或命令提交进程的系统的示例的框图;以及
图8是根据一个实施例具有小形状因子的系统的示例的框图。
【具体实施方式】
[0004]图1示出用于处理视频内容的设备12的示例的框图。在所示示例中,设备12包括操作系统14、存储器16、平台硬件18和显示器34。设备12可以包括任何平台,例如膝上型计算机、个人数字助理(PDA)、无线智能电话、媒体内容播放器、成像装置、移动互联网装置(MID)、任何智能装置(例如,智能电话、智能平板、智能TV)、电子书写板、投影仪等或其组合。
[0005]在所示示例中,操作系统14包括可接收处理视频内容的请求的用户模式驱动器(UMD)20o视频内容可包括一个或多个视频图像、帧、流、其部分等或其组合。视频内容还可包括一种或多种格式,例如联合图像专家组(JPEG)格式、图形互换格式(GIF)、标签图像文件格式(TIFF)、原始图像文件格式(RAW)、运动图像专家组格式(MPEG)、视窗媒体视频格式(WMV)格式等或其组合。另外,视频内容可源自任何平台上或平台外内容源,例如媒体服务器、存储设备、存储器等或其组合。
[0006]处理视频内容的请求可包括任何信号处理请求,例如编码视频内容、解码视频内容、压缩视频内容、解压缩视频内容、过滤视频内容、转换视频内容、显示视频内容、发送/接收视频内容等或其组合的请求。UMD 20可以从一个或多个上级组件接收处理视频内容的请求。例如,UMD 20可以从中间件接收处理视频内容的请求。UMD 20还可从诸如DirectX视频加速(DXVA)接口、库视频加速(IibVA)接口等或其组合的视频加速(VA)接口接收处理视频内容的请求。在所示示例中,UMD 20可以通过例如应用编程接口(API)从应用26、28接收处理视频内容的请求。
[0007]响应于处理视频内容的请求,UMD 20可以定位和/或准备与请求相关联的命令。如下文中将更详细地论述,命令可以包括硬件命令、数据存储命令等或其组合。UMD 20还可定位和/或准备一个或多个资源以用于答复请求。例如,UMD 20可以定位存储器16以用于输入和/或输出视频编解码,由此可以使得能够压缩或解压缩数字视频内容。另外,UMD 20可以定位可用和/或空闲的命令缓冲区。在所示示例中,UMD 20搜索存储在存储器16中的资源表30以便定位可用和/或空闲的命令缓冲区和/或视频内容的其它必需资源。如下文中将更详细地论述,资源表30可包括具有与可用和/或空闲的命令缓冲区相关联的有效句柄的句柄阵列以及处理视频内容所需的任何其它资源。
[0008]UMD 20可以响应于处理视频内容的请求将与请求相关联的命令插入到可用和/或空闲的命令缓冲区中。另外,UMD 20可以将命令缓冲区加入队列,以便独立于任何平台硬件(例如,图形处理单元(GPU)、可视处理单元(VPU)等或其组合)执行该命令(和/或独立于命令缓冲区的处理)而接收处理另外的视频内容的另外的请求。在所示示例中,UMD 20将包含所插入的命令的命令缓冲区加入到存储在存储器16中的队列32。队列32可以包括任何类型的缓冲区,例如先进先出(FIFO)缓冲区。缓冲区可以在任何配置中实现,例如硬件中的固定存储器位置、指向物理存储器中的某个位置的软件中的虚拟数据缓冲区等或其组合。因此,UMD 20不等待,而是自由地立即返回到上级组件(例如,返回到应用26、28、返回到中间件等),以便接收处理另外的视频内容的任何另外的请求。由于UMD 20不依赖于KMD22、不依赖于命令缓冲区处理和/或不依赖于平台硬件18执行命令,所以资源利用(例如,CPU利用、GPU利用等)得以最大化,节省了功率,和/或通过相对较高的吞吐量(例如,相对较高的FPS)使用户体验最大化。
[0009]在所示示例中,操作系统14包括命令提交进程(CSP)24。CSP 24可以包括:进程,它可包括编程指令的序列;守护进程(daemon),它可包括作为后台进程运行的编程指令的序列;线程,它可包括可通过操作系统(OS)调度器进行管理的编程指令的最小序列;等等;或其组合。CSP 24可以通过例如从队列32和/或存储器16检索和/或移除命令缓冲区来将命令缓冲区移出队列。在一个示例中,CSP 24在先进先出操作中将由UMD 20加入队列的第一命令缓冲区移出队列。
[0010]另外,CSP 24可以直接对KMD 22进行系统调用,例如输入/输出控制(1CTL)。响应于系统调用,KMD 22可以接收包含与处理视频内容的请求相关联的命令的移出队列的命令缓冲区,并将命令缓冲区提交给平台硬件18 (例如,GPU)以便处理命令缓冲区(例如,执行命令)。由于KMD 22通过例如来自CSP 24的直接系统调用独立于UMD 20接收系统调用,所以资源利用(例如,CPU利用、GPU利用等)得以最大化,节省了功率,和/或通过相对较高的吞吐量使用户体验最大化。
[0011]通过UMD定位和/或准备的命令可以包括硬件命令,例如编码/解码命令、显示命令等或其组合。平台硬件18 (例如,GPU)可以接收命令缓冲区并执行硬件命令以便处理视频内容。因此,当视频内容是视频帧时,平台硬件18 (例如,GPU)执行显示硬件命令以便在显示器34上呈现视频帧。另外,如下文中将更详细地论述,命令可以包括数据存储命令。平台硬件18 (例如,GPU)可以接收命令缓冲区并执行数据存储命令以便用句柄阵列中与新可用和/或空闲的命令缓冲区相关联的有效句柄、和/或与视频内容有关的其它资源取代句柄阵列中的无效句柄。因此,平台硬件18 (例如,GPU)可以立即用与所有可用和/或空闲的命令缓冲区相关联的所有有效句柄、和/或视频内容的其它资源更新资源表30。
[0012]现在转到图2,示出响应于处理视频内容的请求处理视频内容的方法102的示例的流程图。方法102可以作为逻辑指令和/或固件的集合来实现,所述逻辑指令和/或固件存储在机器或计算机可读存储介质中,例如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM (PR0M)、闪速存储器等;存储在可配置逻辑中,例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD);存储在利用诸如专用集成电路(ASIC)、CMOS或晶体管-晶体管逻辑(TTL)技术的电路技术或其任意组合的的固定功能性逻辑硬件中。例如,用于进行方法102中所示的操作的计算机程序代码可以用一个或多个编程语言的任意组合来编写,包括面向对象编程语言(例如,C++等)和常规过程编程语言(例如,“C”编程语言或类似编程语言)。另外,方法102可以利用本文中所提及的电路技术中的任意电路技术来实现。
[0013]所示处理框134提供在UMD处接收处理视频内容的请求。例如,可以从诸如VA接口的上级组件接收请求以便编码/解码诸如视频帧的视频内容。响应于请求,处理框136提供经由UMD将与请求相关联的命令插入到命令缓冲区中。例如,UMD可以准备诸如编码/解码命令的硬件命令和诸如MI_STORE_DATA_IMM命令的数据存储命令和/或将这些命令插入到命令缓冲区中。数据存储命令可以引用与命令缓冲区相关联的有效句柄(例如,物理地址)。
[0014]所示处理框138提供经由UMD将命令缓冲区加入队列。例如,UMD可以将包含硬件命令和数据存储命令的命令缓冲区加入队列,例如存储器中的FIFO队列。因此,UMD不依赖于将命令缓冲区提交给KMD、将命令缓冲区提交给平台硬件和/或通过平台硬件执行命令。UMD不等待,而是自由地立即返回到上级组件(例如,VA接口),以便接收和/或接受处理另外的视频内容的另外的请求。
[0015]所示处理框140提供将命令缓冲区移出队列。例如,诸如线程的CSP可以从队列检索和/或移除加入队列的命令缓冲区。所示处理框142提供在KMD处独立于UMD接收系统调用。例如,CSP (例如,线程)可以对KMD进行直接系统调用(例如,1CTL)。所示处理框144提供响应于系统调用经由KMD将命令缓冲区提交给平台硬件以便处理视频内容。例如,KMD可以响应于CSP的系统调用独立于UMD接收命令缓冲区并将命令缓冲区提交给平台硬件以便处理视频内容。因此,KMD不依赖于UMD’因为KMD直接从CSP接收系统调用。
[0016]图3示出响应于处理视频内容的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1