CN104781845B - 处理视频内容 - Google Patents
处理视频内容 Download PDFInfo
- Publication number
- CN104781845B CN104781845B CN201280077163.9A CN201280077163A CN104781845B CN 104781845 B CN104781845 B CN 104781845B CN 201280077163 A CN201280077163 A CN 201280077163A CN 104781845 B CN104781845 B CN 104781845B
- Authority
- CN
- China
- Prior art keywords
- handle
- command buffer
- video content
- order
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000000872 buffer Substances 0.000 claims abstract description 220
- 238000012545 processing Methods 0.000 claims abstract description 132
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000003139 buffering effect Effects 0.000 claims description 31
- 238000013500 data storage Methods 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 27
- 238000006467 substitution reaction Methods 0.000 claims description 10
- 230000006399 behavior Effects 0.000 claims description 4
- 230000000694 effects Effects 0.000 claims description 3
- 238000003780 insertion Methods 0.000 claims description 2
- 230000037431 insertion Effects 0.000 claims description 2
- 239000003550 marker Substances 0.000 claims 2
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000000007 visual effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 210000003127 knee Anatomy 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 210000000707 wrist Anatomy 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000280 densification Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000005662 electromechanics Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- WABPQHHGFIMREM-UHFFFAOYSA-N lead(0) Chemical compound [Pb] WABPQHHGFIMREM-UHFFFAOYSA-N 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Image Input (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
本技术可以提供用于处理视频内容。可以在用户模式驱动器处接收处理视频内容的请求。作为响应,用户模式驱动器可以将与请求相关联的命令插入到命令缓冲区中。另外,用户模式驱动器可以将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。此外,命令提交进程可以将命令缓冲区移出队列,并调用内核模式驱动器。内核模式驱动器可以独立于用户模式驱动器接收系统调用,并将命令缓冲区提交给平台硬件以便处理视频内容。
Description
技术领域
一般来说,实施例涉及信号处理。更具体来说,实施例涉及:经由用户模式驱动器(UMD)将包括与处理视频内容的请求相关联的命令的命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求;经由进程(例如,线程)将命令缓冲区移出队列;和/或独立于用户模式驱动器经由内核模式驱动器(KMD)将命令缓冲区提交给平台硬件。
背景技术
在诸如视频流播应用的计算机应用中,吞吐量是可以用最大帧处理速率(例如,以每秒帧数(FPS)为单位)测量的重要的性能指标。用于处理视频内容的驱动器模型可以包括用户模式驱动器(UMD)和内核模式驱动器(KMD)。例如,UMD可以从上级组件接收处理视频帧的请求,定位硬件命令和命令缓冲区,并对KMD进行直接系统调用以便将命令缓冲区提交给平台硬件以处理视频帧。UMD一直等待而不返回到上级组件接收另外的请求,直到平台硬件完成执行为止。因此,UMD对KMD和/或对平台硬件执行的依赖性可以是吞吐量(例如,FPS)的性能障碍,例如当位速率相对较高(例如,大于约30 Mbps)时,并且可能导致资源(例如处理器利用、功率利用)的不必要浪费,和/或可能不利地影响用户体验。
附图说明
通过阅读以下说明书和随附权利要求书并参考附图,本发明的实施例的各种优点将对于本领域技术人员变得显而易见,图中:
图1是根据一个实施例用于处理视频内容的设备的示例的框图;
图2是根据一个实施例用于响应于请求处理视频内容的方法的示例的流程图;
图3是根据一个实施例用于响应于请求和另外的请求处理视频内容的方法的示例的流程图;
图4是根据一个实施例的资源句柄阵列的框图的示例;
图5是根据一个实施例的逻辑体系结构的框图的示例;
图6是根据一个实施例其中通过用户模式驱动器(UMD)提交命令缓冲区并通过平台硬件(例如,GPU)处理视频帧的流程的示例的框图;
图7是根据一个实施例包括用户模式驱动器、内核模式驱动器和/或命令提交进程的系统的示例的框图;以及
图8是根据一个实施例具有小形状因子的系统的示例的框图。
具体实施方式
图1示出用于处理视频内容的设备12的示例的框图。在所示示例中,设备12包括操作系统14、存储器16、平台硬件18和显示器34。设备12可以包括任何平台,例如膝上型计算机、个人数字助理(PDA)、无线智能电话、媒体内容播放器、成像装置、移动互联网装置(MID)、任何智能装置(例如,智能电话、智能平板、智能TV)、电子书写板、投影仪等或其组合。
在所示示例中,操作系统14包括可接收处理视频内容的请求的用户模式驱动器(UMD)20。视频内容可包括一个或多个视频图像、帧、流、其部分等或其组合。视频内容还可包括一种或多种格式,例如联合图像专家组(JPEG)格式、图形互换格式(GIF)、标签图像文件格式(TIFF)、原始图像文件格式(RAW)、运动图像专家组格式(MPEG)、视窗媒体视频格式(WMV)格式等或其组合。另外,视频内容可源自任何平台上或平台外内容源,例如媒体服务器、存储设备、存储器等或其组合。
处理视频内容的请求可包括任何信号处理请求,例如编码视频内容、解码视频内容、压缩视频内容、解压缩视频内容、过滤视频内容、转换视频内容、显示视频内容、发送/接收视频内容等或其组合的请求。UMD 20可以从一个或多个上级组件接收处理视频内容的请求。例如,UMD 20可以从中间件接收处理视频内容的请求。UMD 20还可从诸如DirectX视频加速(DXVA)接口、库视频加速(libVA)接口等或其组合的视频加速(VA)接口接收处理视频内容的请求。在所示示例中,UMD 20可以通过例如应用编程接口(API)从应用26、28接收处理视频内容的请求。
响应于处理视频内容的请求,UMD 20可以定位和/或准备与请求相关联的命令。如下文中将更详细地论述,命令可以包括硬件命令、数据存储命令等或其组合。UMD 20还可定位和/或准备一个或多个资源以用于答复请求。例如,UMD 20可以定位存储器16以用于输入和/或输出视频编解码,由此可以使得能够压缩或解压缩数字视频内容。另外,UMD 20可以定位可用和/或空闲的命令缓冲区。在所示示例中,UMD 20搜索存储在存储器16中的资源表30以便定位可用和/或空闲的命令缓冲区和/或视频内容的其它必需资源。如下文中将更详细地论述,资源表30可包括具有与可用和/或空闲的命令缓冲区相关联的有效句柄的句柄阵列以及处理视频内容所需的任何其它资源。
UMD 20可以响应于处理视频内容的请求将与请求相关联的命令插入到可用和/或空闲的命令缓冲区中。另外,UMD 20可以将命令缓冲区加入队列,以便独立于任何平台硬件(例如,图形处理单元(GPU)、可视处理单元(VPU)等或其组合)执行该命令(和/或独立于命令缓冲区的处理)而接收处理另外的视频内容的另外的请求。在所示示例中,UMD 20将包含所插入的命令的命令缓冲区加入到存储在存储器16中的队列32。队列32可以包括任何类型的缓冲区,例如先进先出(FIFO)缓冲区。缓冲区可以在任何配置中实现,例如硬件中的固定存储器位置、指向物理存储器中的某个位置的软件中的虚拟数据缓冲区等或其组合。因此,UMD 20不等待,而是自由地立即返回到上级组件(例如,返回到应用26、28、返回到中间件等),以便接收处理另外的视频内容的任何另外的请求。由于UMD 20不依赖于KMD 22、不依赖于命令缓冲区处理和/或不依赖于平台硬件18执行命令,所以资源利用(例如,CPU利用、GPU利用等)得以最大化,节省了功率,和/或通过相对较高的吞吐量(例如,相对较高的FPS)使用户体验最大化。
在所示示例中,操作系统14包括命令提交进程(CSP)24。CSP 24可以包括:进程,它可包括编程指令的序列;守护进程(daemon),它可包括作为后台进程运行的编程指令的序列;线程,它可包括可通过操作系统(OS)调度器进行管理的编程指令的最小序列;等等;或其组合。CSP 24可以通过例如从队列32和/或存储器16检索和/或移除命令缓冲区来将命令缓冲区移出队列。在一个示例中,CSP 24在先进先出操作中将由UMD 20加入队列的第一命令缓冲区移出队列。
另外,CSP 24可以直接对KMD 22进行系统调用,例如输入/输出控制(IOCTL)。响应于系统调用,KMD 22可以接收包含与处理视频内容的请求相关联的命令的移出队列的命令缓冲区,并将命令缓冲区提交给平台硬件18(例如,GPU)以便处理命令缓冲区(例如,执行命令)。由于KMD 22通过例如来自CSP 24的直接系统调用独立于UMD 20接收系统调用,所以资源利用(例如,CPU利用、GPU利用等)得以最大化,节省了功率,和/或通过相对较高的吞吐量使用户体验最大化。
通过UMD定位和/或准备的命令可以包括硬件命令,例如编码/解码命令、显示命令等或其组合。平台硬件18(例如,GPU)可以接收命令缓冲区并执行硬件命令以便处理视频内容。因此,当视频内容是视频帧时,平台硬件18(例如,GPU)执行显示硬件命令以便在显示器34上呈现视频帧。另外,如下文中将更详细地论述,命令可以包括数据存储命令。平台硬件18(例如,GPU)可以接收命令缓冲区并执行数据存储命令以便用句柄阵列中与新可用和/或空闲的命令缓冲区相关联的有效句柄、和/或与视频内容有关的其它资源取代句柄阵列中的无效句柄。因此,平台硬件18(例如,GPU)可以立即用与所有可用和/或空闲的命令缓冲区相关联的所有有效句柄、和/或视频内容的其它资源更新资源表30。
现在转到图2,示出响应于处理视频内容的请求处理视频内容的方法102的示例的流程图。方法102可以作为逻辑指令和/或固件的集合来实现,所述逻辑指令和/或固件存储在机器或计算机可读存储介质中,例如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、闪速存储器等;存储在可配置逻辑中,例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD);存储在利用诸如专用集成电路(ASIC)、CMOS或晶体管-晶体管逻辑(TTL)技术的电路技术或其任意组合的的固定功能性逻辑硬件中。例如,用于进行方法102中所示的操作的计算机程序代码可以用一个或多个编程语言的任意组合来编写,包括面向对象编程语言(例如,C++等)和常规过程编程语言(例如,“C”编程语言或类似编程语言)。另外,方法102可以利用本文中所提及的电路技术中的任意电路技术来实现。
所示处理框134提供在UMD处接收处理视频内容的请求。例如,可以从诸如VA接口的上级组件接收请求以便编码/解码诸如视频帧的视频内容。响应于请求,处理框136提供经由UMD将与请求相关联的命令插入到命令缓冲区中。例如,UMD可以准备诸如编码/解码命令的硬件命令和诸如MI_STORE_DATA_IMM命令的数据存储命令和/或将这些命令插入到命令缓冲区中。数据存储命令可以引用与命令缓冲区相关联的有效句柄(例如,物理地址)。
所示处理框138提供经由UMD将命令缓冲区加入队列。例如,UMD可以将包含硬件命令和数据存储命令的命令缓冲区加入队列,例如存储器中的FIFO队列。因此,UMD不依赖于将命令缓冲区提交给KMD、将命令缓冲区提交给平台硬件和/或通过平台硬件执行命令。UMD不等待,而是自由地立即返回到上级组件(例如,VA接口),以便接收和/或接受处理另外的视频内容的另外的请求。
所示处理框140提供将命令缓冲区移出队列。例如,诸如线程的CSP可以从队列检索和/或移除加入队列的命令缓冲区。所示处理框142提供在KMD处独立于UMD接收系统调用。例如,CSP(例如,线程)可以对KMD进行直接系统调用(例如,IOCTL)。所示处理框144提供响应于系统调用经由KMD将命令缓冲区提交给平台硬件以便处理视频内容。例如,KMD可以响应于CSP的系统调用独立于UMD接收命令缓冲区并将命令缓冲区提交给平台硬件以便处理视频内容。因此,KMD不依赖于UMD,因为KMD直接从CSP接收系统调用。
图3示出响应于处理视频内容的请求和处理另外的视频内容的另外的请求处理视频内容的方法202的示例的流程图。方法202可以利用本文中所提及的任何技术来实现。所示处理框246提供在UMD处接收处理视频内容的请求。例如,可以从诸如VA接口的上级组件接收请求以便编码/解码诸如第一视频帧的视频内容。
在框248,做出是否存在与命令缓冲区相关联的有效句柄的判定。例如,UMD可以搜索句柄阵列以便标识是否存在与可用和/或空闲的命令缓冲区相关联的有效句柄和/或视频内容的其它必需资源。如果不存在有效句柄,那么可以迫使UMD等待,直到有效句柄变成可用为止。另一方面,如果存在有效句柄,那么在所示处理框250,UMD将与请求相关联的命令插入到与有效句柄相关联的命令缓冲区中,并用句柄阵列中的无效句柄取代有效句柄。例如,UMD可以将诸如编码/解码命令的硬件命令和诸如MI_STORE_DATA_IMM命令的数据存储命令插入到与有效句柄相关联的命令缓冲区中,并用句柄阵列中的无效句柄取代有效句柄。所示处理框252提供加入队列操作。例如,在所示处理框252,可以将命令缓冲区加入队列。
所示处理框254提供在UMD处接收处理诸如(相同或不同视频流的)第二视频帧的另外的视频内容的另外的编码/解码请求的另外的请求。在处理框256,做出句柄阵列中是否存在无效句柄的判定。如果不存在无效句柄,那么过程可以继续进行至处理框248以便确定在句柄阵列中是否存在与命令缓冲区相关联的有效句柄,例如命令缓冲区用过并且变成新可用时。但是,显然,是否存在有效句柄和是否存在无效句柄的判定可以同时进行。如果存在无效句柄,那么所示处理框258提供绕过句柄阵列中的无效句柄。
在框260,做出是否存在与另外的命令缓冲区相关联的另外的有效句柄的判定。如果否,那么可以迫使UMD等待,直到有效句柄和/或另外的有效句柄(例如,下一个有效句柄)变成可用为止。另一方面,如果有另外的有效句柄可用,那么在所示处理框262,UMD将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中,并用句柄阵列中的另外的无效句柄取代另外的有效句柄。例如,UMD可以将诸如另外的编码/解码命令的另外的硬件命令和诸如另外的MI_STORE_DATA_IMM命令的另外的数据存储命令插入到与另外的有效句柄相关联的另外的命令缓冲区中,并用句柄阵列中的另外的无效句柄取代另外的有效句柄。
所示处理框252提供加入队列操作。例如,如前所述,可以通过UMD将包含与编码/解码第一视频帧的请求相关联的命令的命令缓冲区加入到(例如,提交到)队列。因此,UMD不等待,而是自由地立即返回到上级组件(例如,VA接口),以便接收和/或接受处理另外的视频内容的另外的请求。因此,作为将命令缓冲区提交到队列(例如,加入队列)的结果,独立于执行处理第一帧的命令,UMD可用于从上级组件(例如,VA接口)接收编码/解码第二帧的另外的请求。另外,可以通过UMD将包含与编码/解码第二视频帧的另外的请求相关联的命令的另外的命令缓冲区加入到(例如,提交到)队列,以使得UMD能够立即返回到上级组件以便接收和/或接受处理另外的视频内容的任何另外的请求(例如,编码/解码第三视频帧的另一请求等)。
所示处理框264提供移出队列操作。例如,诸如线程的CSP可以从队列检索和/或移除加入队列的命令缓冲区和/或加入队列的另外的命令缓冲区。当队列包括FIFO缓冲区时,CSP可以在另外的命令缓冲区之前检索和/或移除命令缓冲区。所示处理框266提供独立于UMD对KMD进行系统调用。例如,CSP(例如,线程)可以直接对KMD进行系统调用(例如,IOCTL)。所示处理框268提供响应于系统调用经由KMD将命令缓冲区和/或另外的命令缓冲区提交给平台硬件以便处理视频内容。例如,响应于CSP的相应的系统调用,KMD可以接收命令缓冲区和/或另外的命令缓冲区,并将它们提交给平台硬件以便处理视频内容(例如,第一视频帧、第二视频帧等)。
所示处理框270提供用于处理视频内容。例如,当命令缓冲区和/或另外的命令缓冲区包括诸如解码命令的硬件命令时,平台硬件(例如,GPU)从KMD接收相应的命令缓冲区,并执行它们的相应命令以便处理相应的视频内容。因此,平台硬件(例如,GPU)从KMD接收命令缓冲区并执行硬件命令以便解码第一视频帧,从KMD接收另外的命令缓冲区并执行另外的硬件命令以便解码第二视频帧,等等或其组合。
在框272,做出命令缓冲区中的命令和/或另外的命令是否包含诸如MI_STORE_DATA_IMM命令的数据存储命令和/或诸如另外的MI_STORE_DATA_IMM命令的另外的数据存储命令的判定。如果是,那么所示处理框274提供执行相应的数据存储命令并用句柄阵列中的它们的相应的有效句柄取代相应的无效句柄。
现在转到图4,示出资源表476的框图的示例。资源表476可以位于平台的任何组件和/或阶段处,例如位于存储设备、存储器、处理器、操作系统等或其组合。资源表476可包括与可用和/或空闲的命令缓冲区相关联的一个或多个有效句柄以及处理视频内容所需的任何其它资源。资源表476可包括句柄阵列,例如矩阵(例如,2D矩阵)。例如,当创建视频装置时,可以在资源池(RP)句柄阵列中分配和/或存储资源。最大资源数可以在RP句柄阵列中预先设置。另外,可以作为RP句柄阵列的复本生成诸如使用中资源(RiU)句柄阵列的另外的句柄阵列。
在所示示例中,资源表476包括与可用资源(例如,可用命令缓冲区)相关联的有效句柄(例如,资源句柄),它具有由X表示的标识符。标识符可以包括物理地址、32位ID、通用唯一标识符(UUID)、全局唯一标识符(GUID)等或其组合。例如,X可以是可用命令缓冲区的物理地址。另外,资源表476包括由1、2、…n表示的索引位置,以便提供有效句柄(例如,索引位置1处的资源句柄)在资源表476中的位置。因此,资源表476包括上述多个有效句柄中的每个有效句柄的标识符X、X’等和索引位置1、2、…n。
UMD可以接收处理视频内容的请求,并且响应于请求,将与请求相关联的命令插入到命令缓冲区中。例如,UMD搜索资源表476以便标识与空闲和/或可用命令缓冲区相关联的第一有效句柄(例如,具有标识符X的索引位置1处的资源句柄)、和/或视频内容的其它必需资源。UMD用无效句柄(例如,索引位置1处的哑(dumb)句柄)取代资源表476中的对应索引位置1处的具有标识符X的有效句柄。无效句柄包括标识符Y,并用信号通知UMD资源不可用。标识符Y、Y’等可以包括物理地址、32位ID、通用唯一标识符(UUID)、全局唯一标识符(GUID)等或其组合。例如,标识符Y可以预先定义,例如全为“0”、全为“1”、32位ID的ffffffff十六进制格式等或其组合。因此,可以利用UMD通过在资源表476中具有除了预先定义的无效句柄标识符以外的任何标识符来识别有效句柄。
UMD将与请求相关联的命令插入到与有效句柄(例如,具有标识符X的资源句柄1)相关联的命令缓冲区中。另外,UMD将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。例如,响应于另外的请求,UMD如之前那样搜索资源表476,并且可能遇到无效句柄(例如,哑句柄1),这是因为加入队列的命令缓冲区可能是不空闲和/或不可用的(例如,平台硬件没有处理完与资源句柄1相关联的命令缓冲区)。因此,UMD绕过无效句柄(例如,哑句柄1),并遇到下一个可用和/或空闲的有效句柄(例如,在索引位置2处具有标识符X’的资源句柄)。UMD用索引位置2处具有标识符Y’的无效句柄(例如,哑句柄2)取代具有标识符X’的有效句柄。
UMD将与另外的请求相关联的另外的命令插入到与另外的有效句柄(例如,资源句柄2)相关联的另外的命令缓冲区中。另外,UMD将另外的命令缓冲区加入队列以便接收处理再另外的视频内容的再另外的请求。响应于另外的请求(例如,第三请求),UMD搜索资源表476,并且可能遇到无效句柄(例如,哑句柄1、哑句柄2等),直到到达下一个可用和/或空闲的有效句柄。但是,在任何时间,UMD也可能遇到资源表476中新可用和/或空闲的有效句柄。例如,当平台硬件执行完插入到与具有标识符X的有效句柄相关联的命令缓冲区中的命令时,可以命令平台硬件用与该命令缓冲区相关联的有效句柄(例如,标识符X)覆写资源表476中的无效句柄(例如,标识符Y)。因此,命令缓冲区对于UMD新可用(例如,具有标识符X的资源句柄1),并且可用于处理视频内容的任何另外的请求。
图5是包括处理视频内容的逻辑体系结构578的系统502的框图的示例。逻辑体系结构578一般可以并入到诸如膝上型计算机、PDA、无线智能电话、媒体播放器、成像装置、移动互联网装置(MID)、任何智能装置(例如,智能电话、智能平板、智能TV)、电子书写板、投影仪等或其组合的平台中。逻辑体系结构578可以在应用、操作系统、媒体框架、硬件组件、或其组合中实现。逻辑体系结构578可以在诸如网络接口组件、存储器、处理器、硬盘驱动器、操作系统、应用等或其组合的任何系统组件中实现。例如,逻辑体系结构578可以在诸如中央处理单元(CPU)、图形处理单元(GPU)、可视处理单元(VPU)、传感器、操作系统、应用等或其组合的处理器中实现。
在所示示例中,系统502包括存储设备590、应用592、存储器594、显示器596和GPU598。但是,显然,系统502可以包括诸如电源(例如,电池、电源连接器等)、通信接口(例如,网络接口卡)等或其组合的任何其它组件。
在所示示例中,逻辑体系结构578包括用于接收处理视频内容的请求的UMD模块580。UMD模块580可以响应于请求将与请求相关联的命令插入到命令缓冲区中。另外,UMD模块580可以将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。UMD模块580可以在收到正在清空队列、队列被清空、队列被清空预定阈值、队列不满等或其组合的通知时将命令缓冲区加入队列。例如,UMD模块580可以提供以下操作:
{
Prepare CMD…
Get_CMD_Resource;
Add_CMD_to_Buf;
EnQueue for CMD Submission;
}
UMD模块580可以标识句柄阵列中与命令缓冲区相关联的有效句柄,并用句柄阵列中的无效句柄取代有效句柄。例如,UMD模块580可以提供以下操作:
Get_CMD_Resource{
Search with spin wait the first valid handle X in RiU(自旋搜索等待RiU中的第一有效句柄X);
Replace the X with a Dumb handle(用哑句柄取代X);
}
UMD模块580可以插入将通过硬件平台执行以便处理视频内容的硬件命令。另外,UMD模块580可以插入将通过硬件平台执行以便用句柄阵列中与命令缓冲区相关联的有效句柄取代句柄阵列中的无效句柄的数据存储命令。例如,UMD模块580可以提供以下操作:
Add_CMD_to_Buf {
Insert prepared commands to command buffer with handle X(将准备好的命令插入到具有句柄X的命令缓冲区);
MiStoreDataImmCmdParam.GfxAddreee = Riu中的X位置;
MiStoreDataImmCmdParam.DataLowPart = X;
Insert MI_STORE_DATA_IMM to command buffer with handle X(将MI_STORE_DATA_IMM插入到具有句柄X的命令缓冲区);
}
在所示示例中,逻辑体系结构578包括CSP模块582。CSP模块582可以将命令缓冲区移出队列。例如,CSP模块582可以在收到正在填充队列、队列被填满、队列被填满预定阈值、队列不空等或其组合的通知时将命令缓冲区移出队列。CSP模块582可以包括进程、守护进程、线程等或其组合。另外,CSP模块582可以调用KMD模块584以便将命令缓冲区提交给平台硬件以执行命令。例如,CSP模块582可以提供以下操作:
{
DeQueue upon notification(在收到通知时移出队列);
Call KMD for CMD Submission(调用KMD用于CMD提交);
}
尽管示例示出独立模块,但是显然,逻辑体系结构578的一个或多个模块可以在一个或多个组合模块中实现。
现在转到图6,示出其中通过UMD提交命令缓冲区并通过平台硬件(例如,GPU)处理视频帧的流程的示例的框图。在非线程化示例中,通过UMD提交命令缓冲区Cn,并通过平台硬件(例如,GPU)按顺序方式处理视频帧。例如,UMD接收处理视频内容(例如,视频帧Fn)的请求。作为响应,UMD寻找与处理视频帧Fn的请求相关联的一个或多个硬件命令、命令缓冲区Cn,并将这些硬件命令插入到命令缓冲区Cn中。经由UMD对KMD的直接系统调用(例如,利用IOCTL)将命令缓冲区Cn提交给平台硬件(例如,GPU)以便处理视频帧Fn。UMD不能返回从上级组件(例如,中间件)接收处理另外的视频帧F(n+1)的另外的请求,直到平台硬件处理完视频帧Fn为止。
当处理完视频帧Fn时,GPU通知CPU,并且UMD能够返回从上级组件接收另外的请求,寻找与另外的请求相关联的另外的硬件命令,寻找另外的命令缓冲区C(n+1),并经由UMD对KMD的直接系统调用将另外的命令缓冲区C(n+1)提交给平台硬件(例如,GPU)以便处理视频帧F(n+1),依此类推。因此,造成两个相邻平台硬件活动(例如,GPU活动)之间的延迟/间隙,而这又会将平台的效率降至最低。此外,由于从UMD对KMD进行直接调用,所以无法根据偏好配置平台硬件(例如,GPU)的使用。
在线程化示例中,多个命令缓冲区对于UMD可用,UMD可以将所使用的命令缓冲区加入队列,可以独立于UMD的系统调用将命令缓冲区提交给平台硬件(例如,GPU)以处理视频帧,可以使所使用的命令缓冲区在平台硬件(例如,GPU)处理完命令缓冲区之后相对不久的时间对于UMD可用,等等或其组合。例如,UMD接收处理视频内容(例如,视频帧Fn)的请求。作为响应,UMD寻找与处理视频帧Fn的请求相关联的一个或多个硬件命令、数据存储命令、命令缓冲区Cn,并将这些命令插入到命令缓冲区Cn中。UMD将命令缓冲区Cn加入队列,并返回从上级组件接收处理另外的视频内容(例如,视频帧F(n+1) )的另外的请求。通过提交守护进程将命令缓冲区Cn移出队列,并经由提交守护进程对KMD的系统调用(例如,利用IOCTL)将它提交给平台硬件(例如,GPU)。
UMD接收处理另外的视频内容(例如,另外的帧F(n+1))的另外的请求,寻找与另外的请求相关联的另外的硬件命令、另外的命令缓冲区C(n+1)(或新可用的命令缓冲区),寻找另外的数据存储命令,将这些命令插入到命令缓冲区C(n+1)(或新可用的命令缓冲区)中,将命令缓冲区C(n+1)(或新可用的命令缓冲区)加入队列,并返回到上级组件。因此,UMD能够独立于命令缓冲区Cn的处理是否已经开始、是否在进行中和/或是否已完成从上级组件接收任何另外的请求。
另外,经由KMD通过从提交守护进程而不是从KMD直接进行的系统调用(例如,IOCTL)将另外的命令缓冲区C(n+1)(或用过且新可用的命令缓冲区)提交给平台硬件(例如,GPU)。因此,根据偏好配置平台硬件(例如,GPU)的使用是可能的,这是因为对KMD的系统调用不是通过UMD直接进行的,而是独立于UMD从提交守护进程进行的。在所示示例中,独立于命令缓冲区Cn的处理是否已经开始、是否在进行中和/或是否已完成将多个命令缓冲区提交给平台硬件。因此,延迟得以最小化,视频质量得以最大化,并且资源的使用得以最大化。例如,两个相邻平台硬件活动(例如,GPU活动)之间的任何延迟/间隙基本关闭,而这又会将平台的效率增至最大。
尽管没有示出,但是响应于另外的请求(例如,处理另外的视频帧F(n+1)的请求)通过UMD标识的另外的命令缓冲区可以是Cn,它已经用过并且通过平台硬件(例如,GPU)变成对于UMD新可用。例如,响应于来自上级组件的处理视频内容(例如,处理视频帧Fn)的请求,UMD可以在资源表(例如,RiU句柄阵列)中寻找与可用资源(例如,可用命令缓冲区Cn)相关联的有效句柄(例如,物理地址),并利用它来对请求作出应答。UMD可以用资源表中与命令缓冲区Cn相关联的有效句柄所在的索引位置(例如,1、2、…n)的无效句柄(例如,预先设置的物理地址)来取代有效句柄。无效句柄用信号通知UMD资源(例如,命令缓冲区)不可用。
如果UMD在平台硬件(例如,GPU)处理完命令缓冲区Cn之前(例如,在GPU执行命令缓冲区Cn中的命令之前)接收处理另外的视频内容(例如,处理另外的视频帧F(n+1))的另外的请求,那么UMD将遇到句柄阵列中的无效句柄。UMD将绕过(例如,略过和/或忽略)无效句柄,并寻找用于另外的请求的下一个有效句柄(例如,与命令缓冲区C(n+1)相关联的物理地址)。但是,如果平台硬件(例如,GPU)处理命令缓冲区Cn并执行对应的数据存储命令,那么平台硬件(例如,GPU)将通过用与命令缓冲区Cn相关联的有效句柄(例如,物理地址)取代无效句柄来与句柄阵列直接对接。因此,如果UMD在平台硬件(例如,GPU)处理命令缓冲区Cn之后接收另外的请求和/或对另外的请求作出应答,那么UMD可能遇到与用过且新可用的命令缓冲区Cn相关联的有效句柄。如上所述,UMD同样可以用句柄阵列中对应索引位置处的无效句柄取代与命令缓冲区Cn相关联的有效句柄。
图7示出可实现处理视频内容的逻辑的系统700的实施例。该逻辑可包括之前所论述的UMD 20(图1)、KMD 22(图1)、CSP 24(图1)和/或逻辑体系结构578(图5)。在实施例中,系统700可以是媒体系统,但是系统700不限于此上下文。例如,系统700可以并入到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能装置(例如,智能电话、智能平板或智能电视)、移动互联网装置(MID)、消息传递装置、数据通信装置等中。
在实施例中,系统700包括耦合到显示器720的平台702。平台702可以从诸如内容服务装置730或内容递送装置740或其它类似内容源的内容装置接收内容。包括一个或多个导航特征的导航控制器750可用于与例如平台702和/或显示器720交互。这些组件中的每个组件都将在下文更加详细地描述。
在实施例中,平台702可以包括芯片组705、处理器710、存储器712、存储设备714、图形子系统715、应用716和/或无线电718的任意组合。芯片组705可以在处理器710、存储器712、存储设备714、图形子系统715、应用716和/或无线电718中提供相互通信。例如,芯片组705可以包括能够提供与存储设备714的相互通信的存储设备适配器(未描绘)。
处理器710可以作为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它微处理器或中央处理单元(CPU)来实现。在实施例中,处理器710可以包括双核处理器、双核移动处理器等。
存储器712可以作为易失性存储器装置来实现,例如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。
存储设备714可以作为非易失性存储装置来实现,例如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储装置、附连存储装置、闪速存储器、电池备用SDRAM(同步DRAM)和/或网络可接入存储装置。在实施例中,存储设备714可以包括例如用于在包含多个硬盘驱动器时增加对有价值数字媒体的存储性能增强保护的技术。
图形子系统715可以对诸如静物或视频的图像执行处理以用于显示。图形子系统715可以是例如图形处理单元(GPU)或可视处理单元(VPU)。模拟或数字接口可用于在通信上耦合图形子系统715和显示器720。例如,该接口可以是高清多媒体接口、DisplayPort、无线HDMI和/或无线HD兼容技术中的任一种。图形子系统715可以集成到处理器710或芯片组705中。图形子系统715可以是在通信上耦合到芯片组705的独立卡。
本文中所描述的图形和/或视频处理技术可以在各种硬件体系结构中实现。例如,图形和/或视频功能性可以集成在芯片组内。备选地,可以使用离散图形和/或视频处理器。作为另一个实施例,图形和/或视频功能可以由包括多核处理器在内的通用处理器来实现。在另一个实施例中,可以在消费型电子装置中实现这些功能。
无线电718可以包括能够利用各种合适的无线通信技术传送和接收信号的一个或多个无线电。这些技术可以涉及跨越一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨越这些网络的通信中,无线电718可以根据任何版本的一个或多个适用的标准操作。
在实施例中,显示器720可以包括任何电视类型监视器或显示器。显示器720可以包括例如计算机显示屏、触摸屏显示器、视频监视器、电视类装置和/或电视。显示器720可以是数字和/或模拟显示器。在实施例中,显示器720可以是全息显示器。并且,显示器720可以是可接收可视投影的透明表面。这些投影可以传达各种形式的信息、图像和/或对象。例如,这些投影可以是移动增强实现(MAR)应用的可视叠加。在一个或多个软件应用716的控制下,平台702可以在显示器720上显示用户接口722。
在实施例中,内容服务装置730可以通过任何国家、国际和/或独立服务进行主控,并且因此对于平台702可经由例如互联网接入。内容服务装置730可以耦合到平台702和/或显示器720。平台702和/或内容服务装置730可以耦合到网络760以便向以及从网络760通信(例如,发送和/或接收)媒体信息。内容递送装置740也可以耦合到平台702和/或显示器720。
在实施例中,内容服务装置730可以包括能够递送数字信息和/或内容的有线电视盒、个人计算机、网络、电话、互联网启用装置或器具以及能够在内容供应商和平台702和/或显示器720之间经由网络760或直接单向或双向地通信内容的任何其它类似装置。将明白,可以经由网络760将内容单向和/或双向地通信到系统700和内容供应商中的任何一个组件以及从这任何一个组件单向和/或双向地通信内容。内容的示例可以包括任何媒体信息,包括例如视频、音乐、医疗和游戏信息等。
内容服务装置730接收诸如有线电视节目的内容,包括媒体信息、数字信息和/或其它内容。内容供应商的示例可以包括任何有线或卫星电视或无线电或互联网内容供应商。所提供的示例不是要限制本发明的实施例。
在实施例中,平台702可以从具有一个或多个导航特征的导航控制器750接收控制信号。控制器750的导航特征可用于例如与用户接口722交互。在实施例中,导航控制器750可以是指向装置,它可以是允许用户将空间(例如,连续且多维的)数据输入到计算机的计算机硬件组件(特别是人机接口装置)。诸如图形用户接口(GUI)以及电视和监视器的许多系统允许用户利用身体姿势来控制数据并将数据提供给计算机或电视。
可以通过在显示器(例如,显示器720)上所显示的指针、光标、聚焦环或其它可视指示符的移动来在显示器上效仿控制器750的导航特征的运动。例如,在软件应用716的控制下,位于导航控制器750上的导航特征可以映射到例如用户接口722上所显示的虚拟导航特征。在实施例中,控制器750可以不是独立组件,而是集成到平台702和/或显示器720中。但是,实施例不限于上下文中所示或在本文中所描述的元件。
在实施例中,驱动器(未示出)可以包括用于使得用户能够在初始启动之后通过触摸按钮(例如,在启用时)来立即打开和关闭像电视的平台702的技术。程序逻辑可以允许平台702在平台“关闭”时将内容流播到媒体适配器或其它内容服务装置730或内容递送装置740。另外,芯片组705可以包括例如支持5.1环绕立体声和/或高清7.1环绕立体声的硬件和/或软件。驱动器可以包括用于集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括外围组件互连(PCI)Express图形卡。
在各种实施例中,系统700中示出的任何一个或多个组件都可以集成。例如,平台702和内容服务装置730可以集成,或平台702和内容递送装置740可以集成,或平台702、内容服务装置730和内容递送装置740可以集成。在各种实施例中,平台702和显示器720可以是集成单元。例如,显示器720和内容服务装置730可以集成,或显示器720和内容递送装置740可以集成。这些示例不是要限制本发明。
在各种实施例中,系统700可以作为无线系统、有线系统或两者的组合来实现。当作为无线系统实现时,系统700可以包括适于通过无线共享介质通信的组件和接口,例如一个或多个天线、传送器、接收器、收发器、放大器、滤波器、控制逻辑等。无线共享介质的示例可以包括诸如RF频谱等的无线频谱的部分。当作为有线系统实现时,系统700可以包括适于通过有线共享介质通信的组件和接口,例如输入/输出(I/O)适配器、用于连接I/O适配器和对应的有线通信介质的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等。有线通信介质的示例可以包括导线、电缆、金属引线、印刷电路板(PCB)、背板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。
平台702可以建立一个或多个逻辑或物理通道以便通信信息。信息可以包括媒体信息和控制信息。媒体信息可以指代表打算给用户的内容的任何数据。内容的示例可以包括例如来自语音对话、视频会议、流播视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等的数据。来自语音对话的数据可以是例如语音信息、静默周期、背景噪声、舒适噪声、音调等。控制信息可以指代表打算给自动化系统的命令、指令或控制字的任何数据。例如,控制信息可用于通过系统路由媒体信息、或命令节点以预定方式处理媒体信息。但是,实施例不限于这些元件或图7中示出或描述的上下文。
如上所述,系统700可以在各种物理样式或形状因子中实施。图8示出可在其中实施系统700的小形状因子装置800的实施例。例如,在实施例中,装置800可以作为具有无线能力的移动计算装置来实现。例如,移动计算装置可以指具有处理系统和移动电源(例如,一个或多个电池)的任何装置。
如上所述,移动计算装置的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能装置(例如,智能电话、智能平板或智能电视)、移动互联网装置(MID)、消息传递装置、数据通信装置等。
移动计算装置的示例还可包括布置成由人穿戴的计算机,例如手腕式计算机、手指式计算机、戒指计算机、眼镜计算机、带扣式计算机、臂戴式计算机、鞋式计算机、服装计算机和其它可穿戴计算机。例如,在实施例中,移动计算装置可以作为能够执行计算机应用以及语音通信和/或数据通信的智能电话来实现。尽管可以举例说明用作为智能电话实现的移动计算装置描述一些实施例,但是可明白,也可以利用其它无线移动计算装置来实现其它实施例。实施例在这方面不受限制。
如图8所示,装置800可以包括外壳802、显示器804、输入/输出(I/O)装置806和天线808。装置800还可包括导航特征812。显示器804可以包括用于显示适合移动计算装置的信息的任何合适的显示单元。I/O装置806可以包括用于将信息输入到移动计算装置的任何合适的I/O装置。I/O装置806的示例可以包括字母数字键盘、数字小键盘、触摸板、输入按键、按钮、开关、摇杆式开关、麦克风、扬声器、语音识别装置和软件等。也可以通过麦克风将信息输入到装置800。这些信息可以通过语音识别装置数字化。实施例在这方面不受限制。
实施例可以包括用于处理视频内容的设备。该设备可以包括用于接收处理视频内容的请求的用户模式驱动器。用户模式驱动器可以响应于请求将与请求相关联的命令插入到命令缓冲区中。用户模式驱动器可以将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。
另外,用户模式驱动器可以在句柄阵列中标识与命令缓冲区相关联的有效句柄和/或处理视频内容所需的任何其它资源,并在句柄阵列中用无效句柄取代有效句柄。此外,如果例如命令的执行没有完成和/或命令缓冲区不可用,那么用户模式驱动器可以响应于另外的请求绕过无效句柄。
另外,用户模式驱动器可以将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,用户模式驱动器可以绕过句柄阵列中的无效句柄,并在句柄阵列中标识与另外的命令缓冲区相关联的另外的有效句柄和/或处理视频内容所需的任何其它资源,以便将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,如果例如命令的执行没有完成和/或命令缓冲区不可用,那么用户模式驱动器可以绕过无效句柄和/或标识另外的有效句柄以便将另外的命令插入到另外的命令缓冲区中。
另外,例如如果数据存储命令的执行没有完成和/或命令缓冲区不可用,那么用户模式驱动器可以将与另外的请求相关联的另外的命令插入到命令缓冲区中。
另外,命令和/或另外的命令可以包括将由平台硬件执行以便处理视频内容的硬件命令。此外,命令和/或另外的命令可以包括将由平台硬件执行以便在句柄阵列中用与命令缓冲区相关联的有效句柄或处理视频内容所需的任何其它资源取代句柄阵列中的无效句柄的数据存储命令。
另外,该设备可以包括用于存储一个或多个命令缓冲区、另外的命令缓冲区等或其组合的存储器。此外,该设备可以包括用于将命令缓冲区从例如存储器移出队列的命令提交进程。此外,命令提交进程可以调用内核模式驱动器模块以便将命令缓冲区提交给平台硬件以执行命令。此外,命令提交守护进程可以包括进程、守护进程和线程中的一个或多个。
另外,该设备可以包括内核模式驱动器,它用于独立于用户模式驱动器接收系统调用并响应于系统调用将命令缓冲区提交给平台硬件以处理视频内容。
实施例还可包括用于处理视频内容的计算机实现的方法。该方法可包括在在用户模式驱动器处接收处理视频内容的请求。此外,该方法可以包括响应于请求经由用户模式驱动器将与请求相关联的命令插入到命令缓冲区中。此外,该方法可以包括经由用户模式驱动器将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。
另外,该方法可以包括:标识句柄阵列中与命令缓冲区相关联的有效句柄和/或处理视频内容所需的任何其它资源;以及用句柄阵列中的无效句柄取代有效句柄。此外,该方法可以包括:例如如果命令的执行没有完成和/或命令缓冲区不可用,那么响应于另外的请求绕过无效句柄。
另外,该方法可以包括将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,该方法可以包括通过以下步骤将另外的命令插入到另外的命令缓冲区中:绕过句柄阵列中的无效句柄;以及标识与另外的命令缓冲区相关联的另外的有效句柄和/或处理视频内容所需的任何其它资源。此外,该方法可以包括:如果例如命令的执行没有完成和/或命令缓冲区不可用,那么绕过无效句柄和/或标识另外的有效句柄以便插入另外的命令。
另外,该方法可以包括:如果例如数据存储命令的执行没有完成和/或命令缓冲区不可用,那么将与另外的请求相关联的另外的命令插入到命令缓冲区中。
另外,该方法可以包括插入将由平台硬件执行以便处理视频内容的硬件命令。此外,该方法可以包括插入将由平台硬件执行以便在句柄阵列中用与命令缓冲区相关联的有效句柄和/或处理视频内容所需的任何其它资源取代句柄阵列中的无效句柄的数据存储命令。
另外,该方法可以包括通过从存储器检索和移除命令缓冲区中的一个或多个动作来将命令缓冲区移出队列。此外,可以实现进程、守护进程和线程中的一个或多个以便完成移出队列。
另外,该方法可以包括在内核模式驱动器处独立于用户模式驱动器接收系统调用。此外,该方法可以包括响应于系统调用经由内核模式驱动器将命令缓冲区提交给平台硬件以便处理视频内容。
实施例还可包括一种具有指令集的计算机可读介质,指令在由处理器执行时可使处理器处理视频内容。此外,指令在执行时可使处理器在用户模式驱动器处接收处理视频内容的请求。此外,指令在执行时可使处理器响应于请求经由用户模式驱动器将与请求相关联的命令插入到命令缓冲区中。此外,指令在执行时可使处理器经由用户模式驱动器将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。
另外,指令在执行时可使处理器标识句柄阵列中与命令缓冲区相关联的有效句柄和/或处理视频内容所需的任何其它资源,并用句柄阵列中的无效句柄取代有效句柄。此外,指令在执行时可使处理器在例如命令的执行没有完成和/或命令缓冲区不可用时使得用户模式驱动器能够响应于另外的请求绕过无效句柄。
另外,指令在执行时可使处理器将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,指令在执行时可使处理器绕过句柄阵列中的无效句柄,并标识与另外的命令缓冲区相关联的另外的有效句柄和/或处理视频内容所需的任何其它资源,以便将另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,指令在执行时可使处理器在例如命令的执行没有完成和/或命令缓冲区不可用时绕过无效句柄和/或标识另外的有效句柄以便插入另外的命令。
另外,指令在执行时可使处理器在例如数据存储命令的执行没有完成和/或命令缓冲区不可用时将与另外的请求相关联的另外的命令插入到命令缓冲区中。
另外,指令在执行时可使处理器插入将由平台硬件执行以便处理视频内容的硬件命令。此外,指令在执行时可使处理器插入将由平台硬件执行以便用句柄阵列中与命令缓冲区相关联的有效句柄或处理视频内容所需的任何其它资源取代句柄阵列中的无效句柄的数据存储命令。
另外,指令在执行时可使处理器将命令缓冲区从例如存储器移出队列。此外,指令在执行时可使处理器执行从存储器检索和移除命令缓冲区的操作中的一个或多个操作。此外,指令在执行时可使处理器实现进程、守护进程和线程中的一个或多个以便将命令缓冲区移出队列。
另外,指令在执行时可使处理器在内核模式驱动器处独立于用户模式驱动器接收系统调用。此外,指令在执行时可使处理器响应于系统调用经由内核模式驱动器将命令缓冲区提交给平台硬件以便处理视频内容。
实施例还可以包括一种系统,它具有用于处理视频内容的逻辑以及一个或多个系统组件,例如电源、用户接口、图像捕获系统、存储器、网络接口组件、投影仪、应用、中间件、操作系统等或其组合。此外,该系统可以包括用于呈现视频内容的显示器。此外,该系统可以包括平台硬件(例如,图形处理单元(GPU)、可视处理单元(VPU))、显示器、存储器、电源等或其组合。
另外,该系统可以包括用于接收处理视频内容的请求的用户模式驱动器模块。用户模式模块可以响应于请求将与请求相关联的命令插入到命令缓冲区中。用户模式驱动器模块可以将命令缓冲区加入队列以便独立于平台硬件执行命令而接收处理另外的视频内容的另外的请求。
另外,用户模式驱动器模块可以在句柄阵列中标识与命令缓冲区相关联的有效句柄和/或处理视频内容所需的任何其它资源,并用句柄阵列中的无效句柄取代有效句柄。此外,如果例如命令的执行没有完成和/或命令缓冲区不可用,那么用户模式驱动器模块可以响应于另外的请求绕过无效句柄。
另外,用户模式驱动器模块可以将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,用户模式驱动器模块可以绕过句柄阵列中的无效句柄,并在句柄阵列中标识与另外的命令缓冲区相关联的另外的有效句柄和/或处理视频内容所需的任何其它资源以便将与另外的请求相关联的另外的命令插入到另外的命令缓冲区中。此外,如果例如命令的执行没有完成和/或命令缓冲区不可用,那么用户模式驱动器模块可以绕过无效句柄和/或标识另外的有效句柄以便插入另外的命令。
另外,如果例如数据存储命令的执行没有完成和/或命令缓冲区不可用,那么用户模式驱动器模块可以将与另外的请求相关联的另外的命令插入到命令缓冲区中。
另外,命令和/或另外的命令可以包括将由平台硬件执行以便处理视频内容的硬件命令。此外,命令和/或另外的命令可以包括将由平台硬件执行以便用句柄阵列中与命令缓冲区相关联的有效句柄和/或处理视频内容所需的任何其它资源取代句柄阵列中的无效句柄的数据存储命令。
另外,该系统可以包括用于存储一个或多个命令缓冲区、另外的命令缓冲区等或其组合的存储器。此外,该系统可以包括用于将命令缓冲区从例如存储器移出队列的命令提交进程模块。命令提交进程模块可以调用内核模式驱动器模块以便将命令缓冲区提交给平台硬件以执行命令。此外,命令提交进程模块可以包括进程、守护进程和线程中的一个或多个。
另外,该系统可以包括内核模式驱动器模块,它用于独立于用户模式驱动器接收系统调用,并响应于系统调用将命令缓冲区提交给平台硬件以便处理视频内容。
各种实施例可以利用硬件元件、软件元件或两者的组合来实现。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑装置(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体装置、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。确定是否利用硬件元件和/或软件元件实现实施例可以根据任意数量的因素改变,例如期望的计算速率、功率等级、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
至少一个实施例的一个或多个方面可以通过存储在表示处理器内的各种逻辑的机器可读介质上的代表性指令来实现,这些指令在由机器读取时使得机器制造执行本文中所描述的技术的逻辑。这些表示称为“IP核”,它们可以存储在有形机器可读介质上并提供给各种客户或制造设施以便加载到实际构成该逻辑或处理器的制造机器中。
本发明的实施例适合与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等。此外,在一些图中,用线条表示信号导体线。一些可以不同以便指示更多成分信号路径,一些可以具有数字标记以便指示多个成分信号路径,和/或一些可以在一个或多个端点处具有箭头以便指示主要信息流方向。但是,这不应按限制方式来理解。而是,可以结合一个或多个示例性实施例使用这些增加的细节以便于更加容易地理解电路。不管是否具有额外信息,所表示的任何信号线实际上可以包括可以按多个方向行进并且可以用任何合适类型的信号方案来实现的一个或多个信号,例如用差分对实现的数字或模拟线、光纤线和/或单端线。
可能给出了示例尺寸/模型/值/范围,但是本发明的实施例不限于此。随着制造技术(例如,光刻术)随时间日益成熟,预期可以制造更小尺寸的装置。此外,为了说明和论述的简单,并且为了避免混淆本发明的实施例的某些方面,图中可能或者可能没有示出到IC芯片和其它组件的公知电源/接地连接。此外,可以用框图形式示出布置,这是为了避免混淆本发明的实施例,并且也是鉴于关于这些框图布置的实现的细节高度取决于将要实现这些实施例的平台的事实,即这些细节应当在本领域技术人员的认知内。在阐述特定细节(例如,电路)以便描述本发明的示例实施例的情况下,本领域技术人员应明白,可以在没有这些特定细节或者对这些特定细节做一些变化的情况下实践本发明的实施例。因此,本描述视为是说明性而不是限制性的。
一些实施例可以利用例如可以存储指令或指令集的机器或有形计算机可读介质或物品来实现,指令或指令集在由机器执行时可以使机器执行根据这些实施例的方法和/或操作。这样的机器可以包括例如任何合适的处理平台、计算平台、计算装置、处理装置、计算系统、处理系统、计算机、处理器等,并且可以利用硬件和/或软件的任何合适的组合来实现。机器可读介质或物品可以包括例如任何合适类型的存储器单元、存储器装置、存储器物品、存储器介质、存储装置、存储物品、存储介质和/或存储单元,例如存储器、可移动或不可移动介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、致密盘只读存储器(CD-ROM)、可刻录致密盘(CD-R)、可重写致密盘(CD-RW)、光盘、磁介质、磁光介质、可移动存储卡或盘、各种类型的数字通用盘(DVD)、磁带、卡带等。指令可以包括利用任何合适的高级、低级、面向对象、可视、编译和/或解释编程语言实现的任何合适类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、加密代码等。
除非另外特别指出,否则可明白,诸如“处理”、“计算”、“演算”、“确定”等术语是指操纵表示为计算系统的寄存器和/或存储器内的物理(如电子)量的数据和/或将这些数据变换为类似地表示为计算系统的存储器、寄存器或其它这样的信息存储、传输或显示装置内的物理量的其它数据的计算机、计算系统或类似电子计算装置的动作和/或过程。实施例在此上下文中不受限制。
本文中可以使用术语“耦合”来表示讨论中的组件之间的任何类型的直接或间接关系,并且可以适用于电、机械、流体、光、电磁、机电或其它连接。此外,本文中可以使用术语“第一”、“第二”等,除非另外指出,否则这只是为了便于论述,而不带任何特定的时间或时序含义。另外,将了解,不定冠词“一”带有“一个或多个”或“至少一个”的含义。
从以上描述本领域技术人员将明白,本发明的实施例的广泛技术可以用各种形式来实现。因此,尽管结合其特定示例描述了本发明的实施例,但是本发明的实施例的真实范围不应受限于此,因为在研究附图、说明书和随附权利要求书之后,其它修改将对于本领域技术人员而言变得显而易见。
Claims (35)
1.一种视频内容处理系统,包括:
平台硬件,用于处理视频内容;
用户模式驱动器,用于接收处理所述视频内容的请求,响应于所述请求将与所述请求相关联的命令插入到命令缓冲区中,将所述命令缓冲区加入队列,并在通过用户模式驱动器的所述加入队列之后返回到上级组件以便接收处理另外的视频内容的另外的请求,其中所述返回独立于将所述命令缓冲区提交给所述平台硬件的内核模式驱动器的任何操作,并且在不等待所述内核模式驱动器处理命令的情况下实现,该处理命令包括将所述命令缓冲区提交到所述平台硬件以执行所述命令;以及
存储器,用于存储所述命令缓冲区。
2.如权利要求1所述的视频内容处理系统,其中所述用户模式驱动器将在句柄阵列中标识至少与所述命令缓冲区相关联的有效句柄,并用所述句柄阵列中的无效句柄取代所述有效句柄以便响应于所述另外的请求绕过所述无效句柄。
3.如权利要求1所述的视频内容处理系统,其中所述用户模式驱动器模块将绕过句柄阵列中的无效句柄,并在所述句柄阵列中标识至少与另外的命令缓冲区相关联的另外的有效句柄以便将与所述另外的请求相关联的另外的命令插入到所述另外的命令缓冲区中。
4.如权利要求1所述的视频内容处理系统,其中所述用户模式驱动器将插入以下命令中的一个或多个命令:将由所述平台硬件执行以便处理所述视频内容的硬件命令;以及将由所述平台硬件执行以便用句柄阵列中至少与所述命令缓冲区相关联的有效句柄取代所述句柄阵列中的无效句柄的数据存储命令。
5.如权利要求1所述的视频内容处理系统,还包括命令提交进程,所述命令提交进程将所述命令缓冲区从所述存储器移出队列,并调用内核模式驱动器以便将所述命令缓冲区提交给所述平台硬件以执行所述命令。
6.如权利要求5所述的视频内容处理系统,其中所述命令提交进程将包括进程、守护进程和线程中的一个或多个。
7.如权利要求1-6中任一权利要求所述的视频内容处理系统,还包括内核模式驱动器,所述内核模式驱动器独立于所述用户模式驱动器接收系统调用,并响应于所述系统调用将所述命令缓冲区提交给所述平台硬件以便处理所述视频内容。
8.一种处理视频内容的方法,包括:
在用户模式驱动器处接收处理视频内容的请求;
响应于所述请求经由所述用户模式驱动器将与所述请求相关联的命令插入到命令缓冲区中;
经由所述用户模式驱动器将所述命令缓冲区加入队列;以及
在通过用户模式驱动器的所述加入队列之后返回到上级组件以便接收处理另外的视频内容的另外的请求,
其中,所述返回独立于将所述命令缓冲区提交给平台硬件的内核模式驱动器的任何操作,并且在不等待所述内核模式驱动器处理命令的情况下实现,该处理命令包括将所述命令缓冲区提交到所述平台硬件以执行所述命令。
9.如权利要求8所述的处理视频内容的方法,还包括:
标识句柄阵列中至少与所述命令缓冲区相关联的有效句柄;以及
用所述句柄阵列中的无效句柄取代所述有效句柄以使得所述用户模式驱动器能够响应于所述另外的请求绕过所述无效句柄。
10.如权利要求8所述的处理视频内容的方法,还包括通过以下步骤将与所述另外的请求相关联的另外的命令插入到另外的命令缓冲区中:
绕过句柄阵列中的无效句柄;以及
标识至少与所述另外的命令缓冲区相关联的另外的有效句柄。
11.如权利要求8所述的处理视频内容的方法,其中插入所述命令包括以下中的一个或多个:
插入将由所述平台硬件执行以便处理所述视频内容的硬件命令;以及
插入将由所述平台硬件执行以便用句柄阵列中至少与所述命令缓冲区相关联的有效句柄取代所述句柄阵列中的无效句柄的数据存储命令。
12.如权利要求11所述的处理视频内容的方法,还包括:如果所述数据存储命令的执行完成,那么将与所述另外的请求相关联的另外的命令插入到所述命令缓冲区中。
13.如权利要求8-12中任一权利要求所述的处理视频内容的方法,还包括通过从存储器检索和移除所述命令缓冲区的操作中的一个或多个操作来将所述命令缓冲区移出队列,其中实现进程、守护进程和线程中的一个或多个以便实现所述移出队列。
14.如权利要求8所述的处理视频内容的方法,还包括:
在内核模式驱动器处独立于所述用户模式驱动器接收系统调用;以及
响应于所述系统调用经由所述内核模式驱动器将所述命令缓冲区提交给所述平台硬件以便处理所述视频内容。
15.一种视频内容处理设备,包括:
用于在用户模式驱动器处接收处理视频内容的请求的部件;
用于响应于所述请求经由所述用户模式驱动器将与所述请求相关联的命令插入到命令缓冲区中的部件;
用于经由所述用户模式驱动器将所述命令缓冲区加入队列的部件;以及
用于在通过用户模式驱动器的所述加入队列之后返回到上级组件以便接收处理另外的视频内容的另外的请求的部件,
其中所述返回独立于将所述命令缓冲区提交给平台硬件的内核模式驱动器的任何操作,并且在不等待所述内核模式驱动器处理命令的情况下实现,该处理命令包括将所述命令缓冲区提交到所述平台硬件以执行所述命令。
16.如权利要求15所述的视频内容处理设备,还包括用于执行以下操作的部件:标识句柄阵列中至少与所述命令缓冲区相关联的有效句柄,并用所述句柄阵列中的无效句柄取代所述有效句柄以使得所述用户模式驱动器能够响应于所述另外的请求绕过所述无效句柄。
17.如权利要求15所述的视频内容处理设备,还包括用于执行以下操作的部件:绕过句柄阵列中的无效句柄,并标识至少与另外的命令缓冲区相关联的另外的有效句柄以便将与所述另外的请求相关联的另外的命令插入到所述另外的命令缓冲区中。
18.如权利要求15所述的视频内容处理设备,还包括用于插入以下命令中的一个或多个命令的部件:将由所述平台硬件执行以便处理所述视频内容的硬件命令;以及将由所述平台硬件执行以便用句柄阵列中至少与所述命令缓冲区相关联的有效句柄取代所述句柄阵列中的无效句柄的数据存储命令。
19.如权利要求15所述的视频内容处理设备,还包括用于将所述命令缓冲区移出队列的部件,其中所述移出队列将包括从存储器检索和移除所述命令缓冲区的操作中的一个或多个操作。
20.如权利要求19所述的视频内容处理设备,还包括用于实现进程、守护进程和线程中的一个或多个以便将所述命令缓冲区移出队列的部件。
21.如权利要求15-20中任一权利要求所述的视频内容处理设备,还包括用于执行以下操作的部件:在内核模式驱动器处独立于所述用户模式驱动器接收系统调用,并响应于所述系统调用经由所述内核模式驱动器将所述命令缓冲区提交给所述平台硬件以便处理所述视频内容。
22.一种视频内容处理设备,包括:
用户模式驱动器模块,用于接收处理视频内容的请求,响应于所述请求将与所述请求相关联的命令插入到命令缓冲区中,将所述命令缓冲区加入队列,并在通过用户模式驱动器的所述加入队列之后返回到上级组件以便接收处理另外的视频内容的另外的请求,其中所述返回独立于将所述命令缓冲区提交给平台硬件的内核模式驱动器的任何操作,并且在不等待所述内核模式驱动器处理命令的情况下实现,该处理命令包括将所述命令缓冲区提交到所述平台硬件以执行所述命令;以及
存储器,用于存储所述命令缓冲区。
23.如权利要求22所述的视频内容处理设备,其中所述用户模式驱动器模块将标识句柄阵列中至少与所述命令缓冲区相关联的有效句柄,并用所述句柄阵列中的无效句柄取代所述有效句柄以便响应于所述另外的请求绕过所述无效句柄。
24.如权利要求22所述的视频内容处理设备,其中所述用户模式驱动器模块将绕过句柄阵列中的无效句柄,并标识所述句柄阵列中至少与另外的命令缓冲区相关联的另外的有效句柄以便将与所述另外的请求相关联的另外的命令插入到所述另外的命令缓冲区中。
25.如权利要求22所述的视频内容处理设备,其中所述用户模式驱动器模块将插入以下命令中的一个或多个命令:将由所述平台硬件执行以便处理所述视频内容的硬件命令;以及将由所述平台硬件执行以便用句柄阵列中至少与所述命令缓冲区相关联的有效句柄取代所述句柄阵列中的无效句柄的数据存储命令。
26.如权利要求22所述的视频内容处理设备,还包括命令提交进程模块,所述命令提交进程模块将所述命令缓冲区从所述存储器移出队列,并调用内核模式驱动器模块以便将所述命令缓冲区提交给所述平台硬件以执行所述命令。
27.如权利要求26所述的视频内容处理设备,其中所述命令提交进程模块将包括进程、守护进程和线程中的一个或多个。
28.如权利要求22-27中任一权利要求所述的视频内容处理设备,还包括内核模式驱动器模块,所述内核模式驱动器模块独立于所述用户模式驱动器接收系统调用,并响应于所述系统调用将所述命令缓冲区提交给所述平台硬件以便处理所述视频内容。
29.一种包括一个或多个指令的计算机可读介质,所述一个或多个指令在处理器上执行时使所述处理器:
在用户模式驱动器处接收处理视频内容的请求;
响应于所述请求经由所述用户模式驱动器将与所述请求相关联的命令插入到命令缓冲区中;
经由所述用户模式驱动器将所述命令缓冲区加入队列;以及
在通过用户模式驱动器的所述加入队列之后返回到上级组件以便接收处理另外的视频内容的另外的请求,
其中所述返回独立于将所述命令缓冲区提交给平台硬件的内核模式驱动器的任何操作,并且在不等待所述内核模式驱动器处理命令的情况下实现,该处理命令包括将所述命令缓冲区提交到所述平台硬件以执行所述命令。
30.如权利要求29所述的计算机可读介质,其中所述一个或多个指令在执行时使处理器标识句柄阵列中至少与所述命令缓冲区相关联的有效句柄,并用所述句柄阵列中的无效句柄取代所述有效句柄以使得所述用户模式驱动器能够响应于所述另外的请求绕过所述无效句柄。
31.如权利要求29所述的计算机可读介质,其中所述一个或多个指令在执行时使处理器绕过句柄阵列中的无效句柄,并标识至少与另外的命令缓冲区相关联的另外的有效句柄以便将与所述另外的请求相关联的另外的命令插入到所述另外的命令缓冲区中。
32.如权利要求29所述的计算机可读介质,其中所述一个或多个指令在执行时使处理器插入以下命令中的一个或多个命令:将由所述平台硬件执行以便处理所述视频内容的硬件命令;以及将由所述平台硬件执行以便用句柄阵列中至少与所述命令缓冲区相关联的有效句柄取代所述句柄阵列中的无效句柄的数据存储命令。
33.如权利要求29所述的计算机可读介质,其中所述一个或多个指令在执行时使处理器将所述命令缓冲区移出队列,其中所述移出队列将包括从存储器检索和移除所述命令缓冲区的操作中的一个或多个操作。
34.如权利要求33所述的计算机可读介质,其中所述一个或多个指令在执行时使处理器实现进程、守护进程和线程中的一个或多个以便将所述命令缓冲区移出队列。
35.如权利要求29-34中任一权利要求所述的计算机可读介质,其中所述一个或多个指令在执行时使处理器在内核模式驱动器处独立于所述用户模式驱动器接收系统调用,并响应于所述系统调用经由所述内核模式驱动器将所述命令缓冲区提交给所述平台硬件以便处理所述视频内容。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/086916 WO2014094247A1 (en) | 2012-12-19 | 2012-12-19 | Processing video content |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104781845A CN104781845A (zh) | 2015-07-15 |
CN104781845B true CN104781845B (zh) | 2018-11-09 |
Family
ID=50977542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280077163.9A Expired - Fee Related CN104781845B (zh) | 2012-12-19 | 2012-12-19 | 处理视频内容 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9892482B2 (zh) |
CN (1) | CN104781845B (zh) |
DE (1) | DE112012007037T5 (zh) |
WO (1) | WO2014094247A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346941B2 (en) | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
US9740464B2 (en) | 2014-05-30 | 2017-08-22 | Apple Inc. | Unified intermediate representation |
US10430169B2 (en) | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
US10560373B2 (en) * | 2017-04-06 | 2020-02-11 | Gvbb Holdings S.A.R.L. | System and method for timely and uniform distribution for real-time packet transmission |
CN110162398B (zh) * | 2019-04-11 | 2024-05-03 | 平安科技(深圳)有限公司 | 一种疾病分析模型的调度方法、装置及终端设备 |
CN112422933A (zh) * | 2019-08-21 | 2021-02-26 | 台达电子工业股份有限公司 | 投影装置、投影系统以及运行方法 |
US20210200695A1 (en) * | 2019-12-27 | 2021-07-01 | Advanced Micro Devices, Inc. | Staging memory access requests |
CN112217739B (zh) * | 2020-09-30 | 2023-05-12 | 北京淳中科技股份有限公司 | 码流发送设备、码流发送方法及码流发送系统 |
CN115547367A (zh) * | 2022-09-23 | 2022-12-30 | 天翼数字生活科技有限公司 | 一种音视频缓冲区读取处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226699A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 高性能的推测性字符串/多重操作 |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
CN101025821A (zh) * | 2006-02-21 | 2007-08-29 | 辉达公司 | 不对称多gpu处理 |
CN101218562A (zh) * | 2005-05-27 | 2008-07-09 | Ati技术公司 | 向多个视频处理单元(vpu)应用非均匀属性 |
US8056093B1 (en) * | 2006-12-07 | 2011-11-08 | Nvidia Corporation | Asynchronous kernel processing for a graphics processing system |
CN102707986A (zh) * | 2010-09-30 | 2012-10-03 | 微软公司 | 子分区与父分区之间的共享存储器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7444637B2 (en) * | 2003-02-18 | 2008-10-28 | Microsoft Corporation | Systems and methods for scheduling coprocessor resources in a computing system |
US7565609B2 (en) * | 2004-07-16 | 2009-07-21 | National Instruments Corporation | Synchronizing execution of graphical programs executing on different computer systems |
US20060041895A1 (en) * | 2004-08-04 | 2006-02-23 | Microsoft Corporation | Systems and methods for interfacing with codecs across an architecture optimized for audio |
US7362905B2 (en) * | 2004-08-31 | 2008-04-22 | Mediatek Inc. | Methods and systems for DV encoding and decoding |
US20120229481A1 (en) * | 2010-12-13 | 2012-09-13 | Ati Technologies Ulc | Accessibility of graphics processing compute resources |
US20130162661A1 (en) * | 2011-12-21 | 2013-06-27 | Nvidia Corporation | System and method for long running compute using buffers as timeslices |
-
2012
- 2012-12-19 WO PCT/CN2012/086916 patent/WO2014094247A1/en active Application Filing
- 2012-12-19 CN CN201280077163.9A patent/CN104781845B/zh not_active Expired - Fee Related
- 2012-12-19 US US13/976,072 patent/US9892482B2/en active Active
- 2012-12-19 DE DE112012007037.2T patent/DE112012007037T5/de active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
CN1226699A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 高性能的推测性字符串/多重操作 |
CN101218562A (zh) * | 2005-05-27 | 2008-07-09 | Ati技术公司 | 向多个视频处理单元(vpu)应用非均匀属性 |
CN101025821A (zh) * | 2006-02-21 | 2007-08-29 | 辉达公司 | 不对称多gpu处理 |
US8056093B1 (en) * | 2006-12-07 | 2011-11-08 | Nvidia Corporation | Asynchronous kernel processing for a graphics processing system |
CN102707986A (zh) * | 2010-09-30 | 2012-10-03 | 微软公司 | 子分区与父分区之间的共享存储器 |
Also Published As
Publication number | Publication date |
---|---|
US20150310578A1 (en) | 2015-10-29 |
US9892482B2 (en) | 2018-02-13 |
WO2014094247A1 (en) | 2014-06-26 |
CN104781845A (zh) | 2015-07-15 |
DE112012007037T5 (de) | 2015-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104781845B (zh) | 处理视频内容 | |
CN104782136B (zh) | 在云中处理视频数据 | |
CN104951358B (zh) | 基于优先级的上下文抢占 | |
CN103959235B (zh) | 在操作系统初始化过程中显示多媒体数据的技术 | |
CN104471540B (zh) | 通过统一存储器架构的存储器共享 | |
CN104471554B (zh) | 共享虚拟存储器 | |
CN104952033B (zh) | 分布式图形处理器分级中的系统一致性 | |
CN104704469B (zh) | 动态地重新平衡图形处理器资源 | |
CN103999032A (zh) | 显示元素中所包括的感兴趣的区域的兴趣度分数 | |
JP6374038B2 (ja) | ドローコールにわたる共有リソースデータコヒーレンシを確実にするための効率的なハードウェアメカニズム | |
CN104904231A (zh) | 将缩略图信息嵌入视频流 | |
CN104756150B (zh) | 深度缓冲 | |
CN104025031B (zh) | 减少应用中对共享存储器单元执行的顺序操作的数量 | |
CN104881367B (zh) | 处理分布式缓存组织结构中的已压缩数据的方法、计算设备、计算系统和机器可读介质 | |
CN108174265A (zh) | 一种360度全景视频的播放方法、装置及系统 | |
CN104067318B (zh) | 使用三维光栅化的时间连续碰撞检测 | |
CN103997687A (zh) | 用于向视频增加交互特征的技术 | |
CN104090849B (zh) | 用于图形处理单元的存储器映射的系统、方法、装置、电子设备以及机器可读介质 | |
CN105321142A (zh) | 经由计算流水线进行的采样、错误管理和/或上下文切换 | |
CN104054049B (zh) | 用于复制源数据从而实现对源数据的并行处理的方法和系统 | |
CN105103512A (zh) | 分布式图形处理 | |
WO2016167876A1 (en) | Supporting multi-level nesting of command buffers in graphics command streams at computing devices | |
CN104754348B (zh) | 用于自适应深度偏移压缩的方法和设备 | |
JP6419856B2 (ja) | 非特権アプリケーションによるグラフィクスワークロード・サブミッション | |
CN104025035B (zh) | 当执行迭代处理连续数据的程序时减少对存储器io请求的数量 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181109 Termination date: 20211219 |