使用缓冲器和存储器的数据重排序的制作方法

文档序号:14203664阅读:321来源:国知局
使用缓冲器和存储器的数据重排序的制作方法

背景

传感器和其他电子组件产生作为可以使用中央处理单元(cpu)进一步处理的像素的数据。来自图像传感器的像素数据可以使用移动处理器行业接口格式以光栅次序发送到cpu。cpu可以对像素数据执行图像处理操作。这种基于像素的图像传感器可以被结合到各种消费产品中,例如相机、运动传感器、智能电话、汽车和平板。

概述

公开了用于对接收的数据流执行数据重排序操作的方法、装置和计算机可读存储介质。在一些示例中,使用多个fifo缓冲器和存储器来处理从图像传感器接收的非毗连像素数据以重排序为光栅次序。通过使用所公开的技术执行重排序操作,可以改善系统性能和/或减少能量使用,同时还允许系统中的通用处理资源被应用于执行其他操作。

在所公开的技术的一些示例中,一种具有重排序单元的装置被配置为将从数据流接收的数据重排序为毗连排序,所述装置包括多个输入缓冲器、存储器和多个输出fifo缓冲器,每个输入缓冲器被配置为以先进先出(fifo)次序输出数据。重排序单元被配置为控制缓冲器和存储器以便执行本文公开的重排序操作,并因此可以根据新的毗连排序来输出数据。

提供本概要从而以简要形式引入将在下面具体实施例中进一步描述的概念的选择。本概要不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来限制所要求保护的主题的范围。参考附图阅读以下详细描述,将更清楚所公开的实施例的前述和其他目标、特征和优点。

附图简述

图1是概述了如可在所公开的技术的某些示例中使用的示例性计算环境的框图。

图2是概述了如可在所公开的技术的某些示例中使用的包括重排序单元的示例硬件的框图。

图3是解说如可以在所公开的技术的某些示例中处理的非毗连和毗连的数据的图。

图4是概述可以在所公开的技术的某些示例中执行的对数据进行重排序的示例方法的流程图。

图5是描绘如可以在所公开的技术的某些示例中执行的数据的重排序的图。

图6是概述可以在所公开的技术的某些示例中执行的对从图像传感器接收的像素数据进行重排序的示例方法的流程图。

图7是概述了如根据所公开技术的某些示例可以处理的非毗连和毗连数据的另一示例的图。

图8是描绘如根据所公开的技术的某些示例可以执行的非毗连像素数据的处理的图。

图9是可用于实现所描述的一些实施例的示例计算系统的图示。

图10是可以结合本文所述的技术中的至少一些技术来使用的示例移动设备。

图11是可结合本文所述的技术中的至少一些技术来使用的示例云支持环境。

详细描述

一般考虑

本公开是在代表性实施例的上下文中阐述的,所述代表性实施例不旨在以任何方式进行限制。

如在本申请中使用的,单数形式“一”、“一个”和“该”包括复数形式,除非上下文清楚地另外指明。另外,术语“包括”意味着“开放性包含”。此外,术语“耦合”包含机械的、电气的、磁的、光学的、以及其它可行形式的将物体耦合或链接到一起,并且不排除耦合的物体之间的中间元件的存在。而且,如本文使用的术语“和/或”指短语中的项的任意一项或项组合。

本文所述的系统、方法和装置不应被解释为以任何方式进行限制。相反,本公开针对各种所公开实施例的所有新颖的和非显而易见的特征和方面,既可以单独也可以彼此进行各种组合和子组合。所公开的系统、方法和装置不限于任何具体方面或特征或它们的组合,所公开的事物和方法也不要求存在任一个或多个具体优点或者解决问题。而且,所公开的实施例的任何特征或方面可在与彼此的任何组合和子组合中使用。

尽管以特定的顺序次序描述所公开方法的一些的操作以便于方便呈现,但应当理解,这一描述方式包含重排,除非以下提出的具体语言要求特定的次序。例如,顺序描述的操作可以在一些情况下并行地重排或同时执行。此外,为简洁起见,附图可能不示出所公开的事物和方法可以结合其他事物和方法使用的各种方式。另外,本说明书有时使用像“产生”、“生成”、“显示”、“接收”、“发射”、“存储”、“重排序”、“执行”和“发起”等术语来描述所公开的方法。这些术语是所执行的实际操作的高等级描述。与这些术语相对应的实际操作将取决于特定实现而变化,且易于被本领域普通技术人员辨别。

为了更好理解的目的,已经提供了本文中参考本公开的装置或方法呈现的操作理论、科学原理或其它理论描述,并且其不旨在对范围进行限制。所附权利要求中的装置和方法不限于以这些操作理论描述的方式起作用的那些装置和方法。

所公开的方法中的任一个可被实现为存储在一个或多个计算机可读介质(例如,计算机可读介质,诸如一个或多个光学介质盘、易失性存储器组件(诸如dram或sram)或非易失性存储器组件(诸如硬驱动器))上并且在计算机(例如,任何可购买的计算机,包括智能电话或包含计算硬件的其它移动设备)上执行的计算机可执行指令。用于实现所公开的技术的计算机可执行指令中的任一个以及在所公开的实施例的实现期间创建和使用的任何数据可被存储在一个或多个计算机可读介质(例如,计算机可读存储介质)上。计算机可执行指令可以是例如专用软件应用或者经由web浏览器或其他软件应用(诸如远程计算应用)访问和下载的软件应用的一部分。这种软件可以例如在单个本地计算机(例如,在任何适当的商业可购买计算机上执行的线程)上或者使用一个或多个网络计算机在网络环境(例如,经由互联网、广域网、局域网、客户端-服务器网络(诸如云计算网络)、或者其他这样的网络)中执行。

为清楚起见,仅描述了基于软件的实现方式的特定所选方面。省略了本领域公知的其他细节。例如,应当理解,所公开的技术不限于任何具体的计算机语言或程序。例如,所公开的技术可以通过以c、c++、java或者任何其他适当的编程语言编写的软件来实现。同样,所公开的技术不限于任何特定的计算机或硬件类型。适当计算机和硬件的特定细节是公知的,并且不需要在本公开中详细提出。

而且,基于软件的实施例(包括例如用于使计算机执行所公开方法的任一种的计算机可执行指令)中的任一者可以通过适当的通信手段被上载、下载或远程地访问。这种适当的通信手段包括例如互联网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括rf、微波和红外通信)、电子通信或者其他这样的通信手段。

对所公开的技术的介绍

通常期望将从现实世界传感器接收的数据(例如从图像传感器接收的像素数据)对于传感器的每一行从传感器以非光栅次序发送。例如,以非毗连次序对像素排序可以降低功耗和/或改善这种传感器的性能。然而,应用于这种像素数据的图像处理技术通常是对以毗连(例如,光栅)次序排列的像素执行的。本文公开的某些装置和方法允许使用功率和/或空间高效的硬件将像素或其他这样的传感器数据排序为不同的次序。因此,在许多应用中期望通过支持将非光栅次序的信息传输和转换为光栅次序以供进一步下游处理来降低功耗。在一些示例中,装置和/或方法本质上是通用的,但是可以应用于可以呈现复杂但规则的模式的此类数据的不同的任意排序。

在所公开的技术的一些示例中,期望使用有限量的存储资源来执行数据重排序(例如,像素重排序),例如,通过仅缓冲光栅图像的两个行。在一些示例中,行缓冲器可以具有比从图像传感器接收的相应光栅图像的宽度更小的宽度。在一些示例中,要被重排序的数据被流传输,换句话说,随着重排序操作被执行,数据的输入速率近似等于数据的输出速率。在一些示例中,只要在所接收的数据行之间有足够的空闲时间来处理当前数据行,就可以使用一个缓冲器来执行数据重排序。这个空闲时间段有时被称为“消隐时间(blankingtime)”。例如,使用一个相机串行接口(csi)线可能需要花x微秒来传送图像。然而,重排序缓冲器可以以总线的有效宽度的4倍操作;因此,如果能够在x/4微秒时间段内执行重排序,则可以使用单个缓冲器来执行重排序操作。

所公开的装置和方法支持多个不同的复杂像素重排序操作。在数据中有遵循规则模式并且可以使用相对小的缓冲器集合来高效处理的数据排序序列。在一些示例中,并行地根据两个模式序列化数据。例如,数据序列被分开固定量,例如2的幂,但是同时呈现数据排序的第二模式,例如,要被重排序的数据分开固定量。在一些示例中,装置和方法以流水线化的方式实现。

所公开的技术还允许在不直接使用处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)或图像信号处理器(isp))的情况下进行数据重排序,例如像素重排序。在一些示例中,可以在数据在一系列缓冲器之间传递时对数据执行附加的过滤操作,如下面进一步讨论的。

具有数据重排序的示例计算环境

图1是概述其中可以实现本文公开的某些装置和方法的示例性计算环境的框图100。在图1中概述的计算环境可以在单个集成电路内或通过耦合多个不同集成电路来实现,所述集成电路包括具有可编程逻辑器件的电路(例如,fpga)以及具有传感器能力的电路(例如图像传感器或可以接收现实世界数据的其他传感器)。

如图1中所示,一个或多个处理器110经由系统总线130耦合到主存储器120。存储器120可以嵌入到集成电路或者在集成电路外部,一个或多个处理器110位于该集成电路上,并且该集成电路可以使用任何合适的存储器技术实现,包括例如静态随机存取存储器(sram)、动态随机存取存储器(dram)、闪存、视频ram或其他合适的存储器技术。在一些示例中,存储器包括虚拟存储器系统,虚拟存储器系统包括诸如闪存驱动器、硬盘驱动器或其他大容量存储设备的计算机可读存储设备。

系统总线130可以使用任何合适的通信技术来实现,并且包括允许多个组件共享系统总线的连接技术以及其中组件之间使用点对点总线相互通信的其他连接拓扑。适合于实现系统总线130的协议的示例包括ddr2、ddr3、ddr4、pci、pcie、i/oat、ahb或其他合适的总线协议。

图1中还示出了生成根据将由重排序单元150重排序的次序的数据的数据源140。在一些示例中,数据源140根据mipi协议使用phy连接器(例如,有线、无线、光学或其他合适的物理连接器)从例如图像传感器接收数据,并将图像数据发送到重排序单元150。数据源可以是图像传感器(诸如电荷耦合器件(ccd),或互补金属氧化物半导体(cmos)图像传感器)的输出。在一些示例中,使用i/o接口接收来自数据源140的数据,而在其他示例中,数据源被直接耦合到重排序单元150。在一些示例中,数据源140对原始数据执行附加处理,诸如分组的串到并转换和解码,使得只有图像数据被发送到重排序单元150。可以使用链路协议管理器来执行所述附加处理。在一些示例中,数据源位于与所示出的计算环境100分开的集成电路,或者甚至是分开的计算机系统上。

重排序单元150包括一组输入缓冲器160、一可寻址存储器170和一组输出缓冲器180。输入缓冲器160和输出缓冲器180可以实现任何合适的缓冲配置,例如使用一系列锁存器实现的先进先出(fifo)缓冲器,移位寄存器或被配置为充当fifo缓冲器的存储器。类似地,输出缓冲器180也可以使用与输入缓冲器160类似的电路结构来实现。通常期望输入缓冲器160和输出缓冲器180能够至少与从数据源140接收的数据的数据速率一样快地操作。使用重排序单元150对可寻址存储器170进行寻址,并且可寻址存储器170可以使用任何合适的存储器单元技术(例如sram、dram、闪存、锁存器和/或寄存器文件)在每个地址处存储多个数据位。在一些示例中,附加硬件位于数据源和输入缓冲器之间,输入缓冲器160、输出缓冲器180和存储器170之间或在输出缓冲器180的输出处,以对正被处理的数据执行附加操作。

示例重排序单元

图2是解说耦合到图像传感器215的重排序单元210的示例配置的框图200。可以使用包括ccd或cmos图像传感器的任何合适的技术来实现图像传感器。图像传感器215经由多个复用器225-228耦合到四个多位宽的fifo220-223。输入fifo220-223被合乎期望地配置为以足以处理由图像传感器215产生的数据的速率存储和输出数据,而不会卡住。复用器230被配置到fifo220-223的输出,以便并行地选择输出。

还示出了可以用于寻址ram(例如,将数据值置于ram240的低部分或高部分(这些部分由虚线指示))的解码器235。在某些示例中,数据作为rgb格式的一系列12位像素被产生。可以使用其他合适的像素格式,包括范围从例如12到24位像素的rgb格式,yuv格式(例如,yuv420和yuv422),ycbcr422,ycbcr420格式或者包括6到14位的raw(原始)格式。然后可以选择重排序单元210内的组件的数据宽度并相应地确定其大小。重排序单元210包括用于对ram240的读取地址和写入地址进行寻址的逻辑。ram240可以是多端口ram,例如,双读取端口/双写入端口ram。ram240的输出被发送到解码器250,解码器250将数据发送到输出fifo260-263中的一个。然后,例如,通过使用系统总线将数据发送到图像信号处理器270或(诸)其他组件,可以将来自输出fifo260-263的输出发送到计算系统内的其他消耗电路。

在一些示例中,图像信号处理器270是专用数字信号处理器(dsp),其被适配成用于包括以下功能中的至少一个或多个的图像处理功能:拜耳变换,去马赛克,降噪和/或图像锐化。在一些示例中,图像信号处理器270是专用数字信号处理器(dsp),其被适配成用于包括以下功能中的至少一个或多个的图像处理功能:对比度调整,阈值处理(thresholding),背景减除,卷积,内插和/或过滤。在一些示例中,图像信号处理器270用通用cpu或gpu来实现。在一些示例中,图像信号处理器270使用诸如一个或多个fpga的可重配置逻辑来实现。在一些示例中,可重配置逻辑被即时(on-the-fly)地重配置以执行期望的图像处理操作,而在其他示例中,可重配置逻辑被配置单次。

输入fifo和输出fifo两者都以先进先出的方式接收数据,也就是说,由输入fifo接收的像素的第一组数据将是由fifo输出的数据的第一个像素。在一些示例中,fifo被实现为一系列链式触发器(flip-flop)或者一系列链式锁存器。在一些示例中,使用具有用于控制缓冲器的开始和结束位置的附加逻辑的存储器来实现fifo。在一些示例中,使用移位寄存器、专用读取/写入fifo缓冲器或并发读取/写入fifo缓冲器来实现fifo。在一些示例中,每个fifo是同步fifo缓冲器或异步fifo缓冲器。

如相关领域的普通技术人员将容易理解的,重排序单元210还包括控制电路,其可以用于管理重排序单元内的组件的操作,以及控制来自图像传感器215并流到从输出fifo接收数据的消耗组件的数据流。控制电路可以使用任何合适的计算硬件来实现,包括但不限于硬连线有限状态机,可编程微码,可编程门阵列或其他合适的控制电路。在一些示例中,重排序单元210的操作使用布置在各个组件之间的多个流水线寄存器来流水线化,以允许在多个周期操作中在各个时钟周期之间的值的临时存储。

而且,虽然图2中描绘的示例解说了具有四个输入fifo和四个输出fifo的装置,如本领域普通技术人员将容易理解的那样,可以减少或增加fifo的数量以适配到所公开的技术的特定实现。此外,对于所示的示例,输入fifo220-223和输出fifo260-263的位数至少部分地基于由ram240支持的写入宽度来选择,且反之亦然。例如,使用八个输入fifo的配置通常将具有可以同时容纳来自所有八个输入fifo的输出的写入宽度的ram。此外,在一些示例中,输入fifo中的两个或更多个可以被同时加载(例如,一半或全部输入fifo),而在其他示例中,每个输入fifo被按顺序次序加载。而且,除非另有说明,输入fifo和输出fifo中的每一个以数据被存储在相应fifo中的相同连续时间次序输出数据。然而,每个fifo可以被独立操作,并且对数据存储在两个不同的相应fifo中的定时和/或次序不必有任何约束,除非用于实现电路的特定实现的操作。

示例像素排序

图3是解说从图像传感器接收的多个像素的像素排序的图300。第一表格310解说按照像素数据被从图像传感器接收的次序的非毗连像素数据的排列。数字指示根据它们的毗连光栅次序排序的像素的次序。所示出的n行(例如,385行)中的每一行的像素的排序是相同的。如图所示,像素不按照它们在光栅图像中排列的相同次序被接收的。相反,像素以2的偶数幂整数4:0,4,8,12,1,5,9,13,2等的重复/偏移序列以规则但非毗连的次序被接收。输入fifo缓冲器可用于临时存储像素数据,直到按照所需次序对其进行重排序。

第二表格320解说按照重排序的像素数据由输出fifo输出的次序根据它们的毗连光栅次序:0,1,2,3,4,5等的像素的期望的最终排序。因此,如图所示,数据呈现对于一行内的所有像素呈现的规则排序。为了便于解释,解说的像素被加阴影以指示它们在毗连光栅次序中的对应次序,因此像素0,4,8,…,n-3未加阴影,像素1,5,9,...,n-2具有第一阴影图案,像素2,6,10,...,n-1具有第二阴影图案,且像素3,7,11,...,n有第三个阴影图案。在下面的附图4、7和8中使用相似的加阴影方案以更详细地描述所公开的方法和装置的操作。

重排序数据的示例方法

图4是概述根据所公开的技术处理诸如像素数据的数据的示例方法的流程图400。流程图400中概述的方法可以使用重排序单元来执行,诸如在上面关于图1讨论的计算环境100中公开的重排序单元,和/或使用图2的框图200中概述的硬件来执行,尽管对于相关领域的普通技术人员而言显而易见的是,可以采用硬件和/或软件的其他配置来执行所公开的方法。

在处理框410处,存储第一像素集合。例如,第一数据集可以包括从图像传感器以非毗连次序接收的多个像素。范围从1到n个像素的第一像素集合被存储在第一fifo中。一旦全部n个像素已被存储在第一fifo中,则该方法前进到处理框420。

在处理框420处,第二像素集合被存储在第二输入fifo缓冲器中。该集合中的像素的数量与处理框410处的第一集合中所存储的像素的数量相同。在将第二像素集合存储在第二fifo中之后,该方法前进至处理框430。

在处理框430处,所有输入fifo(在此示例中,在处理框410和420处存储数据的两个输入fifo缓冲器)已经具有存储在其中的数据集。因此,可以从第一输入fifo缓冲器输出第一像素集合的第一像素,并且将存储在第二输入fifo缓冲器中的第二像素集合作为在存储器的一个地址位置处的字的至少一部分存储在存储器中。例如,存储在输入fifo缓冲器220中的像素集合中的第一像素和存储在第二输入fifo缓冲器221中的第二像素可以存储在上面关于图2讨论的ram240中。在存储来自输入fifo缓冲器的输出的第一和第二像素之后,该方法前进到处理框440。

在处理框440处,将存储在ram中的第一像素和第二像素复制到一个或多个输出fifo缓冲器。取决于在实践所解说的方法时接收的像素数据的非毗连排序,第一像素和第二像素可以被存储在一个输出fifo缓冲器中,或者各个体像素可以被存储在两个或更多个输出fifo中的多个输出fifo中的每一个中,这取决于正在执行的特定重排序操作。

应当容易理解,可以对流程图400中概述的方法应用多种变化和修改。例如,数据不需要是从图像传感器接收的像素数据,而是可以包括从其他源接收的将被重排序的数据。此外,输入fifo缓冲器和输出fifo缓冲器的数量可以取决于该方法的特定性能要求而变化。此外,将容易理解,该方法可以使用控制逻辑来实现,该控制逻辑用于控制进入和离开fifo输入缓冲器的数据流,进入和离开ram的数据流,和/或进入和离开输出fifo的数据流。

图5是解说包括对表310中所示的数据进行重排序的数据处理的图。应容易理解,该图仅用于说明目的,且不必示出在特定时间点的数据的实际快照。相反,图500解说了当使用例如上面在图2讨论的重排序单元210对像素流进行重排序时的像素流。如图5中所示,根据第一非毗连次序:0、4、8、12、1等接收一系列像素510。解复用逻辑520由重排序单元的控制逻辑控制,以将各个体像素发送到多个输入fifo530-533中的一个。因此,如图所示,从像素流510接收到的第一四个像素被发送到第一fifo530。解复用电路520然后重配置为将像素流510的接下来的四个像素发送到第二fifo531(像素编号1、5、9、13)。解复用电路520继续以规则方式将来自像素流510的像素发送到对应的fifo530至533中的一个。例如,在四个fifo530至533中的每一个中存储四个像素之后,解复用电路520被重配置为在第一fifo530中存储另外四个像素(像素16、20、24和28)。

因此,在使用解复用电路520选择第二fifo531之前,在第一fifo530中存储n个像素的第一子集。在所示示例中,子集的大小是四个像素的数据,即像素0、4、8和12形成在进行到第二fifo531之前存储在第一fifo530中的第一子集。第二fifo531将存储编号为1、5、9、13的另外n个像素(如图所示,四个像素)。在将四个像素存储在第二fifo531中之后,解复用器520被重配置为将像素数据发送到第三fifo532,在第三fifo532中将存储第三像素数据子集,然后第四像素数据子集将被存储在第四fifo533中。在将像素数据的子集存储在输入fifo530-533中的每一个中之后,解复用器将被重配置为在第一fifo530中存储附加像素子集,如图所示,编号为12、16、20和24的像素。

一旦输入fifo530-533中的每一个存储了用于至少一个像素的数据,则来自每个fifo的数据可以被存储在可寻址存储器中,该可寻址存储器是大小为48乘256位的随机存取存储器(ram)540。如图所示,ram540具有256个地址位置,每个地址位置存储从输入fifo530到533接收的12位像素数据的48个位。第一像素集合(0、1、2、3)(一个像素来自每个输入fifo的输出),被存储在ram中的第一地址位置0000处,如第一箭头550所指示的。第二像素集合(4、5、6、7)被存储在地址位置0001处,并且第三像素集合(8、9、10、11)被存储在地址位置0002处,如第二箭头552所指示的。相关领域的普通技术人员应该容易理解,接收输入像素510的流,使用解复用电路520重配置和发送数据,存储和输出来自输入fifo530-533的数据以及将像素数据存储在ram540中的各操作可以至少部分同时发生。例如,由于来自像素510的流的像素数据被存储在输入fifo的一个中,因此也可以从所有输入fifo输出像素数据并将其存储在ram540中。输入fifo数据被存储在ram中的地址位置至少部分地基于像素流510中的像素数据的非毗连排序来确定。在图5所示的示例中,对于来自输入fifo的每个输出像素集合,地址位置递增1。

一旦像素数据已经被存储在ram中,则像素数据可以从ram输出并存储在两个或更多个输出fifo560-563中。如图5所示,存储在存储器地址0000处的像素数据(0、1、2、3)被存储在第一输出fifo560中,如第一箭头570所指示的。在从第一存储器地址0000输出像素数据之后,存储器地址被递增到地址0001,并且下一集合的四个像素(4、5、6、7)被存储在第二输出fifo561中。然后,存储器地址被递增到地址0002,并且第三像素集合被存储在第三输出fifo中,如第二箭头572所指示的。

在所公开的技术的一些示例中,使用不同数量的输出fifo。例如,图5的示例可以被修改,使得只有一个或两个输出fifo用于在数据被从ram540输出时缓冲数据。在所公开的技术的一些示例中,ram540和/或一个或多个或全部输出fifo560-563。尽管这样的修改可能限制图500中解说的组件有效地处理更复杂的像素排序的能力,但是根据本文公开的技术,可以在较不复杂的像素排序上采用修改的排列。

一旦已经在输出fifo中存储了多个像素,就可以将像素输出到系统的其余部分,以便以毗连次序(例如,作为按照光栅次序的像素流580)进一步处理。在所解说的示例中,使用复用电路575从第一输出fifo560输出一行(0、1、2、3)中的四个像素,如箭头582所指示的。然后将复用电路重配置为从第二输出fifo561读取一行中的四个像素(4、5、6、7),如此等等。复用电路575以图5所描绘的次序输出像素流580。

在其它示例中,作为ram中的字存储的数据不在各输出fifo间分布,而是作为fifo输出数据的子集流传输到输出fifo中的一个。在一些示例中,可以执行像素数据的附加处理,例如当数据被从像素流510复制到输入fifo530-533时,当数据被从输入fifo复制到ram540时,和/或当像素数据被从ram复制到输出fifo时。可能发生的这种处理的一个示例是浮点数据到定点数据的转换,尽管多种其他可能的转换是可能的。在一些示例中,取决于施加到像素流的重排序的复杂性,输入fifo530-533、ram540和/或输出fifo560中的一个或多个可以被旁路或省略。

重排序像素数据的示例方法

图6是概述可以在所公开的技术的某些示例中执行的对像素数据进行重排序的示例性方法的流程图600。例如,图6中概述的方法可以使用以上关于图1和/或图2讨论的计算机硬件来实现。

在处理框610处,从图像传感器(例如图像传感器215)接收一系列非毗连的像素数据。像素数据的排序可以根据多个不同的非毗连模式,但是以一种或多种方式重复。数据的非毗连排序的示例在以上关于图3和7进行了讨论且在表310和表710中被示出,尽管可以使用所公开的方法来处理其他非毗连排序。一旦从图像传感器接收到非毗连像素数据的至少一部分,该方法前进到处理框620。

在处理框620处,长度为n的非毗连像素数据子集被复制到两个或更多个输入fifo中的一个。例如,如图5所示,该子集的长度是四个像素(例如,如果使用12位像素,则为48位),而在图8中,该子集的长度是9个像素(例如,如果使用12位像素,则为108位)。一旦长度为n的子集已经被复制到输入fifo中的一个,该方法继续进行到处理框630,以便将选择的输入fifo推进到不同的输入fifo。例如,当将数据复制到重排序单元210的输入fifo220-223时,可以以220、221、222、223、220、221等的次序选择fifo。一旦选择了不同的输入fifo,则该方法进行到处理框620。在多个fifo中的每一个包括数据子集之后,该方法可以同时进行到处理框640。换句话说,在某些示例中,接收的像素数据被存储在输入fifo中而同时在处理框640处由输入fifo输出到ram。

在处理框640处,来自每个fifo的下一像素数据被输出并且作为一个字被存储在存储器(例如ram)中的地址位置处。因此,每个输入fifo可以同时输出数据像素并将其存储在存储器的字中。存储在ram中的像素的数量可以基于ram的宽度而变化,该宽度的范围可以是从一个像素直至一行中的像素的数量(例如,287个或更多个像素)。在将至少一个字的像素数据存储在存储器中的地址之后,该方法前进到处理框650。

在处理框650处,将数据字从ram复制到两个或更多个输出fifo缓冲器中的至少一个。在一些示例中,作为一个字存储的多个像素被输出到输出fifo中的单个fifo,而在其他示例中,像素之一被发送到输出fifo中的每个相应输出fifo,这取决于像素数据的非毗连排序。在从ram复制了一像素字之后,该方法进行到处理框660,以便至少部分地基于数据子集的长度计算用于将数据复制到输出缓冲器的下一ram地址。在计算下一ram地址之后,该方法返回到处理框650。对于图5所示的示例,下一ram地址被递增一个位置,而对于图8中所讨论的示例,存储器地址被递增18。一旦从ram向输出fifo复制了足够多的数据以允许毗连像素数据被输出,则该方法进行到处理框670。应容易理解,计算ram地址可以与数据被从ram复制到输出fifo同时发生。

在处理框670,来自输出fifo的数据被作为毗连像素数据输出。对于图5和图8中所示的示例,从图示的四个输出fifo缓冲器中的每一个输出一个像素,并将其排序为毗连的像素数据流。因此,应当理解,在根据所描述的操作接收和重排序像素数据的同时,在流程图600的处理框中描述的多个操作可以同时发生。

示例像素排序

图7是示出了比上面的图3的示例中所解说的非毗连数据更复杂的、从图像传感器接收的像素数据的非毗连排序的图700。如图7所示,第一表710指示当从图像传感器接收像素流730时像素流730的非毗连排序:0,32,64,...,216,8,40,72,...,268,...,284,1等。具体而言,像素的非毗连次序根据2的整数幂(例如,x=32)以第一算术序列重复,但是该第一序列被重复并且在第一序列的奇数(例如,y=9)个项t0,t1,t2,...tn之后增量s(例如s=4)被添加到起始基数b(例如,t0=b=0):t0=b,t1=b+x,t2=b+2x,t3=b+3x,t4=b+4x,t5=b+5x,t6=b+6x,t7=b+7x,t8=b+8x(例如,t0=0,t1=32,t2=64,t3=96,t4=128,t5=160,t6=192,t7=224,t8=256);第二y(9)个项:t9=b+s,t10=b+s+x,t11=b+s+2x,t12=b+s+3x,t13=b+s+4x,t14=b+s+5x,t15=b+s+6x,t16=b+s+7x,t17=b+s+8x(例如,t9=4,t10=36,t11=68,t12=100,t13=132,t14=164,t15=196,t16=228,t17=260;等。在示例序列中,在产生了行的项712前四分之一之后,该序列再次重复,但从基数1偏移(例如t72=1,t73=33,t74=65等)。因此,产生根据基于奇数个项(所述项递增偶数)的复杂序列的示例非毗连排序。在一些示例中,基于用于调整序列的次序的第三参数来进一步确定像素的非毗连次序。

因此,像素根据复杂但可预测的模式被排序,该模式原本难以高效地和/或难以在不使用大量硬件资源的情况下重排序成毗连排序。例如,直到已经接收到来自图像传感器的数据的四分之三,才接收像素3。第二表720示出了在重排序为毗连排序之后的像素数据。应该注意,对于图7中所示的385行中的每一行而言行的像素排序是相同的。还应注意,尽管图7的像素数据被示出为栅格图像的完整行的数据,但是在其它示例中,数据可以作为一行的一部分被接收,例如一行像素数据的一半或四分之一。在这种情况下,该数据可以使用类似技术来处理,但是被适配成用于图像数据的特定呈现。

像素数据的示例重排序

图8是描绘根据图7的表710中所示的非毗连排序来处理所接收的像素数据的示例的图800。如图所示,以非毗连次序接收一系列像素数据801。解复用逻辑805由重排序单元的控制逻辑控制,以将各个体像素发送到多个输入fifo811–813中的一个。来自像素数据801的第一集合的九个像素由解复用逻辑805指引以存储在九像素宽的块820中的第一fifo中,包括编号为0、32、64、96、128、160、192、224和256的像素。在接收到这第一九个像素之后,解复用逻辑805被重配置并且输入像素流被重定向到第二输入fifo811,并且另外九个像素的数据(包括由附图标记821所指示的像素4和260)被复制到第二输入fifo811。数据822的接下来的九个像素被存储在fifo812中,并且另外九个像素823的数据被存储在第三输入fifo813中。从像素编号16开始的像素数据的接下来的像素位随后被存储在第一输入fifo810中。一旦在输入fifo810-813中的每一个中存储了一定数量的像素数据,重排序单元可以开始将另外九个像素的数据824从输入fifo的输出复制到ram830。由输入fifo输出的个体像素的每个集合被存储为ram中的数据的一个字。如图所示,数字0、4、8和12的第一四个像素作为第一字被存储在存储器地址0000处。接着,像素32、36、40和44将被存储在下一存储器地址0001处。对于由输入fifo810-813输出的每个像素,存储器地址将继续前进。

一旦像素数据已经被存储在ram中,则数据可被同时输出到该一个或多个输出fifo850–853中的一个。例如,如图8所示,包括像素0、4、8、12的像素数据的第一字被存储在第一输出fifo850中,如由箭头860所指示的。接着,输出存储器地址位置被递增到存储器地址0018(不是存储器地址0001)且像素数据的第二字(四个像素1、5、9和13)被存储在第二输出fifo851中。存储器地址接着被递增到地址位置0036,并且存储在该地址处的像素数据被存储在输出fifo852中,并且存储在存储器地址0054的像素被存储在第四输出fifo中。一旦像素数据已经被存储在输出fifo850-853中的每一个中,输出fifo就可以开始将像素数据发送到系统的其他部分。如图8所示,可以同时输出来自输出fifo850-853中的每一个的一个像素,从而以0、1、2、3、4的次序产生毗连的经重排序的像素数据860。第二像素集合4、5、6、7接着可被从输出fifo850-853读取,如此等等。

为了便于解释,从图8中省略了耦合fifo和ram的某些复用和其他电路。此外,图8中描绘的组件使用控制电路可以容易地被适配到其他次序的像素序列,以配置读入和读出输入fifo、ram和/或输出fifo的数据的方式和数量。如相关领域的普通技术人员将容易理解的,图8中描绘的操作中的许多操作可以同时执行。还应理解,尽管各个体像素被示出为一次存储在多个位置,但为了便于呈现,fifo和ram被连续操作,且因此在实现图8中描绘的操作的电路的实际操作期间数据被移除或移位。

示例计算系统

图9示出了其中可实现所描述的创新的合适的计算系统900的一般化示例。计算系统900并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专用计算系统中实现。

参考图9,计算系统900包括一个或多个处理单元910、915、重排序单元920、和存储器925。在图9中,该基本配置930被包括在虚线内。处理单元910、915执行计算机可执行指令,包括用于利用本文公开的过滤来实现直接存储器访问(dma)的指令。处理单元可以是通用中央处理单元(cpu)、专用集成电路(asic)中的处理器或任意其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图9示出中央处理单元910以及图形处理单元或协处理单元915。有形存储器925可以是可由(诸)处理单元存取的易失性存储器(例如,寄存器、高速缓存、ram)、非易失性存储器(例如,rom、eeprom、闪存等)或者两者的某一组合。存储器925以适合被(诸)处理单元执行的计算机可执行指令的形式来储存实现本文中所描述的一个或多个创新的软件980。

计算系统可具有附加的特征。例如,计算系统900包括存储940、一个或多个输入设备950、一个或多个输出设备960以及一个或多个通信连接970。诸如总线、控制器或网络之类的互连机制(未示出)将计算系统900的各组件互连。通常,操作系统软件(未示出)为在计算系统900中执行的其他软件提供操作环境,并协调计算系统900的各组件的活动。

有形存储940可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、cd-rom、dvd或可用于储存信息并可在计算系统900内访问的任何其他介质。存储940为软件980储存指令,该软件980实现本文中所描述的一个或多个创新。

(诸)输入设备950可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备或向计算系统900提供输入的另一设备。对于视频编码,(诸)输入设备950可以是相机、视频卡、tv调谐卡或接受模拟或数字形式的视频输入的类似设备,或将视频样本读入计算系统900的cd-rom、cd-rw、dvd或蓝光。(诸)输出设备960可以是显示器、打印机、扬声器、cd刻录机或提供来自计算系统900的输出的另一设备。

(诸)通信连接970允许在通信介质上到另一计算实体的通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非限制,通信介质可以使用电的、光学的、rf或其他载体。

各创新可在计算机可执行指令(诸如包括在程序模块中的在目标现实或虚拟处理器上在计算系统中执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。

术语“系统”和“设备”在此被互换地使用。除非上下文明确指示,否则,术语并不暗示对计算系统或计算设备的类型的任何限制。一般说来,计算系统或计算设备可以是本地的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬件的任意组合。

为了呈现起见,本详细描述使用了如“确定”和“使用”等术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级描述,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。

示例移动设备

图10是描述一示例移动设备1000的系统示意图,该示例移动设备1000包括在1002概括示出的各种任选的硬件和软件组件。该移动设备中的任何组件1002可与任何其他组件通信,但出于容易例示的目的而未示出所有连接。该移动设备可以是各种计算设备(例如,蜂窝电话、智能电话、手持式计算机、个人数字助理(pda)等)中的任一个,并且可允许与诸如蜂窝、卫星或其他网络的一个或多个移动通信网络1004进行无线双向通信。

图示的移动设备1000可以包括用于执行任务的控制器或处理器1010(例如,信号处理器、微处理器、asic或者其他控制和处理逻辑电路),所述任务诸如信号编码、数据处理、输入/输出处理、功率控制、和/或其他功能,包括用于实现本文公开的具有过滤的dma的指令。操作系统1012可以控制各组件1002的分配和使用,并且支持一个或多个应用程序1014。应用程序可以包括常见的移动计算应用(例如,电子邮件应用、日历、联系人管理器、web浏览器、消息收发应用)、或者任何其他计算应用。用于访问应用存储的功能1013还可以用于获取和更新应用程序1014。图示的移动设备100可包括重排序单元1015,期可使用例如fifo缓冲器和存储器来实现。

图示的移动设备1000可以包括存储器1020。存储器1020可以包括不可移动存储器1022和/或可移动存储器1024。不可移动存储器1022可以包括ram、rom、闪存、硬盘或者其他公知的存储器存储技术。可移动存储器1024可以包括闪存或订户身份模块(sim)卡,这在gsm通信系统或者其他公知的存储器存储技术中是公知的,诸如“智能卡”。存储器1020可被用于储存供运行操作系统1012和应用1014的数据和/或代码。示例数据可以包括要经由一个或多个有线或无线网络被发送至和/或接收自一个或多个网络服务器或其他设备的网页、文本、图像、声音文件、视频数据或者其他数据集。存储器1020可被用来储存订户标识符和设备标识符,所述订户标识符诸如国际移动订户身份(imsi),所述设备标识符诸如国际移动设备标识符(imei)。这种标识符可以被发射至网络服务器以标识用户和设备。

移动设备1000可以支持一个或多个输入设备1030以及一个或多个输出设备1050,所述输入设备诸如触摸屏1032、话筒1034、相机1036、物理键盘1038、轨迹球1040和/或运动传感器1042,所述输出设备诸如扬声器1052和显示器1054。其他可能的输出设备(未示出)可以包括压电或其他触觉输出设备。一些设备可以用于多于一个输入/输出功能。例如,触摸屏1032和显示器1054可以在单个输入/输出设备内被组合。

输入设备1030可以包括自然用户界面(nui)。nui是使用户能以“自然”方式与设备交互、免受诸如鼠标、键盘、远程控件等输入设备所施加的人工约束的任一界面技术。nui方法的示例包括依赖于语音识别、触摸和触笔识别、屏上及邻近屏的姿势识别、空中姿势、头部和眼部跟踪、说话和语音、视觉、触摸、姿势以及机器智能的那些方法。nui的其他示例包括使用加速度计/陀螺仪、面部识别、3-d显示器、头部、眼部和凝视跟踪的运动手势检测、沉浸式增强的现实和虚拟现实系统,这些中的全部都提供更自然的界面,还包括使用电场传感电极(eeg及相关方法)来感测脑部活动的技术。因此,在一个具体示例中,操作系统1012或应用1014可以包括语音识别软件作为语音用户界面的一部分,该语音用户界面允许用户经由语音命令来操作设备1000。而且,设备1000可以包括允许经由用户的空间手势进行用户交互的输入设备和软件,诸如检测和解释手势以便向游戏应用提供输入。

无线调制解调器1060可以耦合至天线(未示出)并且可以支持处理器1010和外部设备之间的双向通信,如本领域已知的。调制解调器1060被一般示出,并且可以包括用于与移动通信网络1004通信的蜂窝调制解调器和/或其他基于无线电的调制解调器(例如,蓝牙1064或wi-fi1062)。无线调制解调器1060一般被配置成与一个或多个蜂窝网络(诸如gsm网络)通信,用于单个蜂窝网络内、多个蜂窝网络之间、或者在移动设备和公共交换电话网(pstn)之间的数据和语音通信。

移动设备还可以包括至少一个输入/输出端口1080、电源1082、卫星导航系统接收机1084(诸如全球定位系统(gps)接收机)、加速度计1086、和/或物理连接器1090,物理连接器1090可以是usb端口、ieee1394(火线)端口和/或rs-232端口。图示的组件1002不是必须的或全包含的,因为任何组件可以被删除且其他组件可以被添加。

示例云支持环境

图11示出了其中可实现所描述的实施例、技巧和技术的合适的云支持环境1100的一般化示例。在示例环境1100中,由云1110提供各种类型的服务(例如,计算服务)。例如,云1110可以包括多个计算设备的集合,多个计算设备可以是中央式或分布式定位的,所述多个计算设备向经由诸如互联网这样的网络连接的各类用户和设备提供基于云的服务。实现方式环境1100可以不同方式被用来完成计算任务。例如,一些任务(例如,像素重排序、处理用户输入、和呈现用户界面)可以在本地计算设备(例如,所连接的设备1130、1140、1150)上执行,而其他任务(例如,要在后续处理中使用的数据的存储)可以在云1110中执行。

在示例环境1100中,云1110为具有各种屏幕能力的所连接的设备1130、1140、1150提供服务。所连接的设备1130代表具有计算机屏幕1135(例如,中等尺寸屏幕)的设备。例如,所连接的设备1130可以是诸如台式计算机、膝上型电脑、笔记本、上网本等个人计算机。所连接的设备1140代表具有移动设备屏幕1145(例如,小尺寸屏幕)的设备。例如,连接的设备1140可以是移动电话、智能电话、个人数字助理、平板计算机等。所连接的设备1150代表具有大屏幕1155的设备。例如,所连接的设备1150可以是电视机屏幕(例如,智能电视机)或连至电视机的另一设备(例如,机顶盒或游戏控制台)等等。所连接的设备1130、1140和/或1150中的一者或多者可以包括触摸屏能力。触摸屏可以以不同方式接受输入。例如,电容式触摸屏在对象(例如,指尖或触笔)跨表面上流动的电流扭曲或中断时检测到触摸输入。举另一个示例,触摸屏可以使用光学传感器在来自光学传感器的波束被中断时检测到触摸输入。对于一些触摸屏所检测的输入而言,与屏幕表面的物理接触不是必要的。在示例环境1100中也可以使用没有屏幕能力的设备。例如,云1110可以为没有显示器的一个或多个计算机(例如,服务器计算机)提供服务。

服务可由云1110通过服务提供者1120提供、或通过其他在线服务提供者(未图示)而提供。例如,云服务可以被定制为特定的所连接设备(例如,所连接的设备1130、1140、1150)的屏幕大小、显示器能力和/或触摸屏能力。

在示例环境1100中,云1110至少部分地使用服务提供者1120来向各个连接的设备1130、1140、1150提供此处描述的技术和解决方案。例如,服务提供者1120可以为各种基于云的服务提供集中式解决方案。服务提供者1120可以管理对于各用户和/或设备(例如,对于所连接的设备1130、1140、1150和/或它们相应的用户)的服务预订。

根据所公开的技术的附加示例

公开了根据上面公开的示例的附加示例。

在所公开的技术的某些示例中,一种示例装置被配置为将从数据流接收的数据重排序为毗连排序,所述数据根据第一排序排列,所述装置包括重排序单元。在一些示例中,所述重排序单元包括多个输入缓冲器,包括第一输入缓冲器和第二输入缓冲器,所述输入缓冲器中的每一个被配置为以先进先出的次序输出由各个输入缓冲器存储的数据,以及存储器,其中所述重排序单元被配置为将所述接收的数据的第一部分存储在所述第一输入缓冲器中,所述第一部分包括第一多个数据单元,将所述接收的数据的第二部分存储在所述第二输入缓冲器中,所述第二部分包括第二多个数据单元,以及将由所述第一输入缓冲器输出的第一部分的第一数据单元和由所述第二输入缓冲器输出的第二部分的第二数据单元存储在所述存储器中的第一地址位置处。

在一些示例中,所述装置进一步包括多个输出缓冲器,所述输出缓冲器中的每一个被配置为以相应的先进先出次序输出由相应的输出缓冲器存储的数据,以及所述重排序单元被进一步配置为将从所述存储器输出的所述第一数据单元和所述第二数据单元存储在所述输出缓冲器中的第一输出缓冲器中,由此产生经重排序的数据。在一些示例中,所述重排序单元被进一步配置为将所述第一部分的第三数据单元和所述第二部分的第四数据单元存储在所述存储器中的第二地址位置处,以及将所述第三数据单元和所述第四数据单元存储在所述输出缓冲器中的第二输出缓冲器中。

在一些示例中,使用控制电路来管理重排序单元内的组件的操作,以及控制来自数据源(例如,图像传感器)并流到从输出fifo接收数据的消费组件(例如,图像信号处理器或其他合适的处理器)的数据流。控制电路可以使用任何合适的计算硬件来实现,包括但不限于硬连线有限状态机,可编程微码,可编程门阵列或其他合适的控制电路。在一些示例中,重排序单元的操作使用布置在各个组件之间的多个流水线寄存器来流水线化,以允许在多个周期操作中在各个时钟周期之间的值的临时存储。

在所公开的技术的一些示例中,所述缓冲器中的全部或一些缓冲器是使用电路实现的fifo缓冲器,所述电路包括以下中的至少一个或多个:一系列链锁存器、一系列链接触发器、和/或静态只读内存(sram)。在一些示例中,所述缓冲器中的全部或一些缓冲器被实现为以下中的至少一个或多个:移位寄存器、专用读取/写入fifo缓冲器、和/或并行读取/写入fifo缓冲器,并且所述缓冲器是同步fifo缓冲器和/或异步fifo缓冲器。

在一些示例中,所述装置还包括一个或多个图像传感器,其中所述图像传感器被配置为以非毗连次序将所述接收的数据生成为一系列像素,并且所述数据单元中的每个数据单元对应于所述一系列像素中的一个像素。在一些示例中,所述重排序单元可操作以被重配置为将以不同于所述第一排序的第二排序接收的数据重排序为毗连排序。

在所公开的技术的某些示例中,一种示例装置被配置为将非毗连像素数据重排序为毗连排序,所述装置包括多个先进先出(fifo)输入缓冲器,以及重排序单元,所述重排序单元被配置为通过将所述像素数据的各个部分存储在所述fifo输入缓冲器中的每个fifo输入缓冲器中并选择由所述fifo输入缓冲器中的每个fifo输入缓冲器同时输出的相应像素来将所述非毗连像素数据重排序为毗连像素流。

在一些示例中,所述装置进一步包括可寻址存储器和多个fifo输出缓冲器,被同时输出的所选像素集合中的每个像素被存储为存储器中的字,并且使用所述多个fifo输出缓冲器从所述重排序单元输出存储在所述存储器中的像素的字。

在一些示例中,所述非毗连像素数据根据基于奇数个项的复杂序列来排序,所述序列的项被递增偶数。例如,所述序列的项在所述次序被重复之前对于9个项被递增4(加上偏移)。

在一些示例中,所述重排序单元被配置为将第一像素集合存储在所述fifo输入缓冲器中的第一fifo输入缓冲器中;将第二像素集合存储在所述fifo输入缓冲器中的第二fifo输入缓冲器中;以及将由所述fifo输入缓冲器中的每个fifo输入缓冲器输出的第一相应像素存储在可寻址存储器的第一地址位置处。

在一些示例中,一种装置进一步包括耦合到所述fifo输入缓冲器的传感器,所述传感器被配置为产生所述非毗连像素数据。

在所公开的技术的某些示例中,一种将具有非毗连排序的像素数据流重排序为毗连排序的方法包括将来自所述流的第一像素集合存储在第一输入fifo中,将来自所述流的第二像素集合存储在第二输入fifo中,将由所述第一输入fifo输出的所述第一像素集合的第一像素和由所述第二输入fifo输出的所述第二像素集合的第二像素存储在存储器中的第一地址位置处,将所述第一像素和所述第二像素从所述存储器复制到输出fifo缓冲器,以及根据毗连排序从所述输出fifo缓冲器输出所述第一像素和所述第二像素。

在一些示例中,所述方法进一步包括使用图像传感器生成所述像素数据流,所述图像传感器被配置为根据所述非毗连排序来输出所述像素数据,其中所述毗连排序对应于所述图像传感器中的像素传感器的相对物理排序。

在一些示例中,所述第一像素集合和所述第二像素集合被包括在第一行像素中,所述像素被存储在所述存储器的第一部分中,并且所述方法还包括针对所述第一行像素重复存储和输出动作;以及对于第二行像素重复存储和输出动作,所述第二行像素中的每一个像素被存储在所述存储器的与所述第一行像素不同的部分中。

在一些示例中,所述方法包括将由所述第一输入fifo输出的所述第一像素集合的第三像素和由所述第二输入fifo输出的所述第二像素集合的第四像素存储在存储器中的第二地址位置处,以及将所述第三像素和所述第四像素从所述存储器的所述第二地址位置复制到输出fifo缓冲器。

在一些示例中,所述第一地址位置和所述第二地址位置至少部分地基于所述第一像素和所述第二像素相对于所述第三和第四像素在相应输入fifo中的相对次序确定。

在一些示例中,所述非毗连排序是第一排序,并且所述方法还包括针对具有与所述第一排序不同的非毗连排序的像素流,重复存储、复制和输出动作中的每一者。

在所公开的技术的某些示例中,一种或多种存储计算机可读指令的计算机可读存储介质,所述计算机可读指令在由耦合到重排序单元的处理器执行时使所述处理器执行本文公开任何方法。此外,这种计算机可读存储介质可被用于至少部分控制本文公开的示例性装置的操作。

鉴于可应用所公开的主题的原理的许多可能的实施例,应当认识到,所示实施例仅是优选示例,并且不应认为是将权利要求的范围限制到那些优选示例。相反,所要求保护的主题的范围由后续的权利要求来界定。因此,我们要求保护所有落在这些权利要求及其等同的范围内者均属我们的发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1