CN101552916A - 视频yuv数据的dma传输方法、装置及dma控制器 - Google Patents
视频yuv数据的dma传输方法、装置及dma控制器 Download PDFInfo
- Publication number
- CN101552916A CN101552916A CNA2009100834642A CN200910083464A CN101552916A CN 101552916 A CN101552916 A CN 101552916A CN A2009100834642 A CNA2009100834642 A CN A2009100834642A CN 200910083464 A CN200910083464 A CN 200910083464A CN 101552916 A CN101552916 A CN 101552916A
- Authority
- CN
- China
- Prior art keywords
- data
- initial address
- target
- storage format
- read
- 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.)
- Granted
Links
Images
Landscapes
- Bus Control (AREA)
- Image Input (AREA)
Abstract
本发明提供了一种视频YUV数据的DMA传输方法,包括:配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;DMA控制器分别计算所述Y数据、U数据和V数据的读取次数及数据长度;从当次读取的源起始地址,读取相应的Y数据、U数据和V数据;更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;从目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;更新所述目标起始地址为下一次写入的目标起始地址;在完成传输后通知CPU。本发明能够提高视频YUV数据的DMA传输效率。
Description
技术领域
本发明涉及DMA数据传输控制领域,特别是涉及一种视频YUV数据的DMA传输方法、装置及一种DMA控制器。
背景技术
DMA(Direct Memory Access,直接存储器存取)是采用一个专门的硬件电路——DMA控制器(DMAC)来控制内存与外设之间的数据交互。进行DMA传输时,DMAC会向CPU申请总线控制权;CPU响应该请求,将总线控制权交给DMAC,并配置DMA数据传输的相关信息;然后DMAC开始工作,通过总线进行数据传输,在一次数据传输结束后,DMAC向CPU发出中断请求,即完成一次DMA传输。
目前,在各种视频解码芯片、视频采集卡中常用的视频数据为YUV数据。其中,“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”(也可用Cr和CB来表示)表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。当YUV数据采用平面格式采样时,每个Y分量,U分量和V分量都会以独立的平面组织,也就说是,Y分量,U分量和V分量会分别存放在不同的矩阵中。
基于上述平面格式的YUV数据的特性,现有技术中,在对这种视频数据进行DMA传输时,会将Y、U、V的数据分开处理。即首先通过CPU分别配置Y数据、U数据和V数据传输的源地址、目标地址以及传输长度,然后由DMAC依次、分别传输所述Y数据、U数据和V数据;并在每次传输后,通过中断来通知CPU。由于视频数据往往占用比较大的存储空间,再加上每次DMA传输需要进行多次配置和多次中断才能得以完成,因而传输效率极为低下。
因而,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够有效提高视频YUV数据的DMA传输效率。
发明内容
本发明所要解决的技术问题是提供一种视频YUV数据的DMA传输方法,用以有效提高视频YUV数据的DMA传输效率。
本发明还提供了一种视频YUV数据的DMA传输装置及一种DMA控制器,用以保证上述方法在实际中的实现及应用。
为了解决上述技术问题,本发明实施例公开了一种视频YUV数据的DMA传输方法,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;所述的方法包括:
配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;
DMA控制器依据所述目标存储格式信息和大小信息,分别计算所述Y数据、U数据和V数据的读取次数及数据长度;
从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
更新所述目标起始地址为下一次写入的目标起始地址;
在完成传输后通知CPU。
优选的,所述原始存储格式信息为连续行的存储格式,所述目标存储格式为运算数据块的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
优选的,当所述N为大于1的正整数时,所述当次读取的源起始地址包括多行子块的源起始地址。
优选的,所述的方法还包括:
将当次读取的Y数据、U数据和V数据存至DMA内部存储器。
本发明实施例还公开了一种视频YUV数据的DMA传输方法,所述DMA传输涉及,从源起始地址开始读取原始存储格式的视频YUV数据,以及,分别从Y数据、U数据和V数据的目标起始地址开始,写入目标存储格式的Y数据、U数据和V数据的过程;所述的方法包括:
配置视频YUV数据的源起始地址、原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的Y数据、U数据和V数据的目标起始地址;
DMA控制器依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
更新所述源起始地址为下一次读取的源起始地址;
分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
在完成传输后通知CPU。
优选的,所述原始存储格式信息为运算数据块的存储格式,所述目标存储格式为连续行的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
优选的,所述的方法还包括:
将读取的Y数据、U数据或V数据存至DMA内部存储器。
本发明实施例还公开了一种视频YUV数据的DMA传输装置,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;所述的装置包括:
第一配置模块,用于配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;
以及,DMA控制器,包括以下模块:
第一计算模块,用于依据所述目标存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第一读取模块,用于从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
第一源地址更新模块,用于更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
第一写入模块,用于从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
第一目标地址更新模块,用于更新所述目标起始地址为下一次写入的目标起始地址;
通知模块,用于在完成传输后通知CPU。
优选的,所述原始存储格式信息为连续行的存储格式,所述目标存储格式为运算数据块的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数;
当所述N为大于1的正整数时,所述当次读取的源起始地址包括多行子块的源起始地址。
优选的,所述第一配置模块包括:
CPU配置子模块,用于由CPU配置所述Y数据、U数据和V数据的源起始地址,以及,所需写入的目标起始地址;
软件配置子模块,用于由软件配置视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息。
优选的,所述原始存储格式信息在DMA控制器的原始存储格式寄存器中配置,所述目标存储格式信息在DMA控制器的目标存储格式寄存器中配置,所述视频YUV数据的大小信息包括图像长度信息和图像宽度信息,分别在DMA控制器的图像长度寄存器和图像宽度寄存器中配置;或者,在DMA控制器的图像大小寄存器中分别配置。
优选的,所述DMA控制器还包括:
DMA内部存储器,用于保存当次读取的Y数据、U数据和V数据。
本发明实施例还公开了一种视频YUV数据的DMA传输装置,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;所述的装置包括:
第二配置模块,用于配置视频YUV数据的源起始地址、原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的Y数据、U数据和V数据的目标起始地址;
以及,DMA控制器,包括以下模块:
第二计算模块,用于依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第二读取模块,用于从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
第二源地址更新模块,用于更新所述源起始地址为下一次读取的源起始地址;
第二写入模块,用于分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
第二目标地址更新模块,用于更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
通知模块,用于在完成传输后通知CPU。
优选的,所述原始存储格式信息为运算数据块的存储格式,所述目标存储格式为连续行的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
优选的,所述DMA控制器还包括:
DMA内部存储器,用于保存读取的Y数据、U数据或V数据。
本发明实施例还公开了一种DMA控制器,包括:
原始存储格式寄存器,用于接收配置的视频YUV数据的原始格式信息;
目标存储格式寄存器,用于接收配置的视频YUV数据的目标格式信息;
图像大小寄存器,用于接收配置的视频YUV数据的大小信息;
源地址寄存器,用于接收配置的Y数据、U数据和V数据的源起始地址;
目标地址寄存器,用于接收配置的目标起始地址;
第一计算模块,用于依据所述目标存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第一读取模块,用于从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
第一源地址更新模块,用于更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
第一写入模块,用于从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
第一目标地址更新模块,用于更新所述目标起始地址为下一次写入的目标起始地址;
通知模块,用于在完成传输后通知CPU。
本发明实施例还公开了一种DMA控制器,包括:
原始存储格式寄存器,用于接收配置的视频YUV数据的原始格式信息;
目标存储格式寄存器,用于接收配置的视频YUV数据的目标格式信息;
图像大小寄存器,用于接收配置的视频YUV数据的大小信息;
源地址寄存器,用于接收配置的源起始地址;
目标地址寄存器,用于接收配置的Y数据、U数据和V数据的目标起始地址;
第二计算模块,用于依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第二读取模块,用于从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
第二源地址更新模块,用于更新所述源起始地址为下一次读取的源起始地址;
第二写入模块,用于分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
第二目标地址更新模块,用于更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
通知模块,用于在完成传输后通知CPU。
与现有技术相比,本发明具有以下优点:
本发明通过在DMA传输中进行视频YUV数据的存储格式转换来提高DMA的传输效率,并且,在一帧视频数据的传输过程中,CPU只需要进行一次DMA配置,即可使DMA控制器从源地址读取原始存储格式的视频YUV数据,并从目标起始地址写入目标存储格式的视频YUV数据,而且只在传输完数据后通知CPU,CPU资源占用很少、功耗也很小。
附图说明
图1是一帧采用连续行数据的存储格式的视频图像数据的示意图;
图2是一帧4×4子块格式的视频图像数据的示意图;
图3是一帧图像中第1个4×4子块的数据存放方式的示意图;
图4本发明的一种视频YUV数据DMA传输方法实施例1的流程图;
图5本发明的一种视频YUV数据DMA传输方法实施例2的流程图;
图6是一帧视频数据前200个4×4子块中Y数据的像素结构图;
图7是本发明的一种视频YUV数据的DMA传输装置实施例1的结构框图;
图8是本发明的一种视频YUV数据的DMA传输装置实施例2的结构框图;
图9是本发明的一种DMA控制器实施例1的结构框图;
图10是本发明的一种DMA控制器实施例2的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在实际中,平面格式的视频YUV数据一般采用连续行数据或运算数据块的方式来存储。具体而言,第一种连续行数据的存储格式是指,分别将Y数据、U数据和V数据存储在一个连续空间中,以行数据的形式存放。以一帧格式为YUV420、大小为800(列)×600(行)像素的视频图像数据为例,假设Y数据的起始地址为0x00000000,Y数据的大小为800×600像素,则存储空间为0x00000000-0x000752FF(d479999);U数据的起始地址为0x00075300(d480000),大小为400×300像素,则存储空间为0x00075300(d480000)-0x000752FF(d599999);V数据的起始地址为0x000927C0(d600000),大小为400×300像素,则存储空间为0x000927C0(d600000)-0x000AFC7F(0d719999)。
第二种运算数据块的存储格式是指,视频图像数据以运算数据块(一般的运算单位为4行乘以4列的子块)的形式存放。如图1所示的一帧格式为YUV420、大小为800(列)×600(行)像素的视频图像的像素数据,若以4×4子块的形式进行存储,则该帧图像的子块数目为30000块(可由(800×600)/(4×4)获得),所述子块的示意可以参考图2。其中,第1个子块包含的像素如图1中的101所示。
各个子块的YUV数据在一段连续空间内存放,如图3所示的第1个子块的像素,即Y0的数据包括第1个子块中4行4字节的数据,U0和V0的数据分别包括第1个子块中2行2字节的数据。对于一帧图像而言,则该段连续空间的存放次序为:第1个子块的Y数据Y0、U数据U0、V数据V0,第2个子块的Y数据Y1、U数据U1、V数据V1,......,一直到第30000个子块的Y数据Y29999、U数据U29999、V数据V29999。
通常,在采用DMA控制器来传输这种视频YUV数据时,并不会改变数据的存储格式,其原因在于,DMA是一种完全由硬件执行I/O交换的工作方式,在传输时,DMA控制器只用来控制系统总线,发出数据读取或写入的地址,并在数据总线上给出数据,随后在其R/W(读/写)线上发出“读”或“写”的命令来进行数据总线传输。由于DMA传输的这种特性,采用现有技术在DMA传输时进行数据的格式转换则极为复杂。一般而言,需要先编写多条CPU指令,然后由CPU执行这些指,相应地配置DMA控制器,以及,和DMA控制器进行多次总线控制权的交互,才能完成格式转换的传输操作。由于整个传输过程都需要CPU不断地执行指令,非常占用CPU资源,CPU功耗也较大,而且DMA传输的速度也因此受到严重影响。
因而,如何在尽可能地减少CPU资源与功耗的前提下,提高DMA的传输速度,成为本领域研究的一个重点。然而,本领域技术一般只会从CPU指令设计精简化、提高总线带宽和增大DMA控制器内部存储容量的方向来改进,而不去考虑其他方面的可能性。
本专利发明人创造性地提出了本发明实施例的核心构思之一,即通过在DMA传输中进行视频YUV数据的存储格式转换来提高DMA的传输效率,并且,在一帧视频数据的传输过程中,CPU只需要进行一次DMA配置,即可使DMA控制器从源地址读取原始存储格式的视频YUV数据,并从目标起始地址写入目标存储格式的视频YUV数据,而且只在传输完数据后通知CPU,CPU资源占用很少、功耗也很小。
参考图4,示出了本发明的一种YUV视频数据DMA传输方法实施例1的流程图,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;本实施例具体可以包括以下步骤:
步骤401、配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;
步骤402、DMA控制器依据所述目标存储格式信息和大小信息,分别计算所述Y数据、U数据和V数据的读取次数及数据长度;
步骤403、从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
步骤404、更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
步骤405、从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
步骤406、更新所述目标起始地址为下一次写入的目标起始地址;
步骤407、在完成传输后通知CPU。
在本发明实施例中,所述视频YUV数据主要是指平面格式YUV数据,此格式较为节省带宽,并且适用于采样(subsample)。平面格式使用三个数组(矩阵)分开存放Y、U、V三个分量,就像是一个三维平面一样。并且,所有U分量必须在Y分量后,所有V分量必须在U分量后。平面格式包括I420(4:2:0)、YV12、IYUV等多种。
在具体实现中,由于算法处理更为简单和方便的缘故,运算数据块存储格式被广泛采用,因而在本实施例中优选的是,所述原始存储格式信息可以为连续行的存储格式,所述目标存储格式可以为运算数据块的存储格式,本实施例即可将连续行格式的视频YUV数据,经DMA传输为运算数据块格式的视频YUV数据。
对于视频数据而言,所述运算数据块可以包括N行乘以N列的子块(即宏块),其中,所述N可以为大于或等于1的正整数。例如,所述运算数据块可以为4×4的子块、8×8的子块或16×16的子块。
需要说明的是,当所述N为大于1的正整数时,所述当次读取的源起始地址则可以包括多行子块的源起始地址。也就是说,当所述运算数据块为4×4的子块、8×8的子块、16×16的子块或其它多行多列的子块时,所述Y数据、U数据和V数据当次读取的源起始地址,可以作为当次读取的首行子块的起始地址。可以理解的是,依据原始存储格式(连续行格式)的视频数据的行长度(即列宽),即可依据当次读取的首行子块的起始地址,确定当次读取的其它相邻行子块的起始地址。
在本发明实施例中,每个运算数据块可以作为每次读取的数据单位,因而,Y数据、U数据和V数据的读取次数即可以对应运算数据块的数目。在这种情况下,每次读取的Y数据、U数据和V数据的数据长度,即可为一个运算数据块中Y数据、U数据和V数据各自所占用的字节数。例如,假设当前的运算数据块为4×4的子块,则一次读取的是4行4字节的Y数据,2行2字节的U数据,以及2行2字节的V数据。
在实际中,可以将当次读取的Y数据、U数据和V数据存至DMA内部存储器,再将所述Y数据、U数据和V数据一次写入目标地址。
所述DMA内部存储器可以为FIFO(First In First Out)存储器。FIFO存储器是一个先入先出的双口缓冲器,即第一个进入其内的数据第一个被移出,其中一个存储器的输入口,另一个口是存储器的输出口。这样,在读取步骤,数据从源地址传输到DMA控制器内部的FIFO存储器内;在写入步骤,数据从DMA控制器内部的FIFO存储器传输到目标地址。既能防止在读取和存储操作时丢失数据,又能将数据集中起来进行读取和存储,可避免频繁的总线操作,减轻CPU的负担,进而提高数据的传输速度。
当然,本领域技术人员还可以依据DMA内部存储器的大小相应设置写入方式,例如,在所述DMA内部存储器容量较小的情况,可以读取一次Y数据就写一次Y数据,然后读取一次U数据和V数据后,再写入一次U数据和V数据。上述方式仅仅用作示例,本发明对此无需加以限制。
需要说明的是,在每次读取和写入操作完成后,都需要将源起始地址更新为下一次读取的源起始地址;以及,将目标起始地址更新为下一次写入的目标起始地址;以进行下一次传输。
在具体实现中,可以由数据传输计数器和地址寄存器来完成次数更新操作,例如,每读取或写入一个数据,地址寄存器加1,从而得到下一个地址,与此同时,数据传输计数器则减1;如此循环,直到数据传输计数器的值为0,表示数据传输完毕。此时,DMA控制器将向CPU发出中断请求信号,即以中断方式向CPU报告传输操作的结束。
为使本领域技术人员更好地理解本发明,以下以一帧视频YUV数据的DMA传输过程为例对本实施例进一步说明。
本例的DMA传输涉及,分别从Y数据的源起始地址为0x00000000;U数据的源起始地址为0x00075300和V数据的源起始地址为0x000927C0开始,读取连续行格式的YUV420数据,以及,从目标起始地址0xF00000000开始,写入4×4子块的存储格式的视频YUV数据;具体可以通过以下步骤实现:
步骤R1、配置当前帧视频数据的原始存储格式为连续行数据存储格式,目标存储格式为4×4子块的存储格式,图像大小为800×600像素;Y数据的源起始地址为0x00000000;U数据的源起始地址为0x00075300和V数据的源起始地址为0x000927C0;以及,所需写入的目标起始地址为0xF00000000;
在具体实现中,所述Y数据、U数据和V数据的源起始地址,以及,所述目标起始地址可以在DMA控制器的地址寄存器中配置;所述视频YUV数据的原始存储格式信息和目标存储格式信息可以通过软件分别在DMA控制器的原始存储格式寄存器和目标存储格式寄存器中配置,所述视频YUV数据的大小信息可以通过软件分别在DMA控制器的图像长度寄存器和图像宽度寄存器中配置;或者,在DMA控制器的图像大小寄存器中分别配置。
步骤R2、DMA控制器依据所述视频YUV数据的目标存储格式信息和图像大小信息,进行以下计算:
计算Y数据的读取次数为(800×600)/(4×4)=30000次,每次传输的数据长度为4×4=16字节;
计算U数据的读取次数为(800×600)/(4×4)=30000次,每次传输的数据长度为2×2=4字节;
计算V数据的读取次数为(800×600)/(4×4)=30000次,每次传输的数据长度为2×2=4字节。
步骤R3、开始第一次读取操作,DMA控制器分别从Y数据的起始地址0x00000000、0x00000320、0x00000640、0x00000960,读取4行4字节数据到内部寄存器(buffer);分别从U数据的起始地址0x00075300、0x00075490,读取2行2字节数据到buffer;以及,从V数据的起始地址0x000927C0、0x00092950,读取2行2字节数据到buffer;
需要说明的是,当次读取的Y数据后三行的起始地址0x00000320、0x00000640、0x00000960;U数据的后一行起始地址0x00075490及V数据的后一行起始地址0x00092950可由DMA控制器计算获得。
步骤R4、在当次读取完成后,更新所述Y数据、U数据和V数据?的源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
在本例中,第n次读取的4行Y数据的源起始地址分别可以采用以下公式计算:
第1行起始地址=0x00000000+int((n-1)/200)×2400+4(n-1);
第2行起始地址=0x00000000+int((n-1)/200)×2400+4(n-1)+800;
第3行起始地址=0x00000000+int((n-1)/200)×2400+4(n-1)+1600;
第4行起始地址=0x00000000+int((n-1)/200)×2400+4(n-1)+2400。
其中,1≤n≤30000,int( )为取整函数,int(x)表示不超过x的最大整数。
第n次读取的2行U数据的源起始地址分别可以采用以下公式计算:
第1行起始地址=0x00075300+int((n-1)/200)×400+2(n-1);
第2行起始地址=0x00075300+int((n-1)/200)×400+2(n-1)+400。
其中,1≤n≤30000,int( )为取整函数,int(x)表示不超过x的最大整数。
第n次读取的2行V数据的源起始地址分别可以采用以下公式计算:
第1行起始地址=0x000927C0+int((n-1)/200)×400+2(n-1);
第2行起始地址=0x000927C0+int((n-1)/200)×400+2(n-1)+400。
其中,1≤n≤30000,int( )为取整函数,int(x)表示不超过x的最大整数。
步骤R5、将buffer内当次读取上述Y数据、U数据和V数据,从目标起始地址0xF00000000开始连续写入;其写入格式及数据可以参考图3。
步骤R6、在当次写入完成后,更新所述目标起始地址为下一次写入的目标起始地址;
在本例中,第n次写入的目标起始地址可以采用以下公式计算:
0xF00000000+24(n-1)
其中,1≤n≤30000。
步骤R7、在传输完成(n=30000)后,以中断方式通知CPU。
在实际中,第n次YUV视频数据传输过程还可以为分次写入所述Y数据、U数据和V数据,即从Y数据源地址起始地址读取相应的4行4字节的Y数据后,直接将该数据连续写入所述目标起始地址;更新所述目标起始地址,从U数据源地址起始地址读取2行2字节的U数据,将该数据连续写入已更新的目标起始地址;更新所述目标起始地址,从V数据源地址起始位置读取2行2字节的V数据,将该段数据连续写入已更新的目标起始地址。在本发明实施例,对DMA的具体读写方式并不加以限制。
参考图5,示出了本发明的一种YUV视频数据DMA传输方法实施例2的流程图,所述DMA传输涉及,从源起始地址开始读取原始存储格式的视频YUV数据,以及,分别从Y数据、U数据和V数据的目标起始地址开始,写入目标存储格式的Y数据、U数据和V数据的过程;本实施例具体可以包括以下步骤:
步骤501:配置视频YUV数据的源起始地址、原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的Y数据、U数据和V数据的目标起始地址;
步骤502:DMA控制器依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
步骤503:从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
步骤504、更新所述源起始地址为下一次读取的源起始地址;
步骤505、分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
步骤506、更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
步骤507、在完成传输后通知CPU。
本实施例中,所述原始存储格式信息可以为运算数据块的存储格式,所述目标存储格式可以为连续行的存储格式,本实施例即可将运算数据块格式的视频YUV数据,经DMA传输为连续行格式的视频YUV数据。
对于视频数据而言,所述运算数据块可以包括N行乘以N列的子块(即宏块),其中,所述N可以为大于或等于1的正整数。例如,所述运算数据块可以为4×4的子块、8×8的子块或16×16的子块。
因为连续行存储格式的数据存放特点是在一段连续空间内依次存放Y数据、U数据和V数据,Y数据、U数据、V数据中的存储地址也都是连续的,所以在本实施例的格式转换中,可以分别针对Y数据、U数据或V数据进行处理。
例如,参考图6所示的一帧视频数据前200个4×4子块中Y数据的像素结构图,可以看出,对于Y数据而言,各个子块包括16个像素数据,这16个像素数据由4段4字节的数据组成,并且,第N个子块与第N+1个子块的第M段4字节数据的地址是连续的。具体而言,即第2个子块的第1段4字节数据,与第1个子块的第1段4字节数据的地址是顺次衔接的,第3个子块的第1段4字节数据,与第2个子块的第1段4字节数据的地址是顺次衔接的,以此类推。
需要说明的是,第1个子块的第2段4字节数据,与最后一个子块的第1段4字节数据的地址也是连续的;第1个子块的第3段4字节数据,与最后一个子块的第2段4字节数据的地址也是连续的;以此类推。在这种情况下,对于形成连续行格式而言,第1个子块的第2段4字节数据的起始地址则可以作为下一行数据的起始地址;即第1个子块的第M段4字节数据的起始地址,可以作为第M行数据的起始地址。
基于上述描述可以得知,每次读取的是一段4字节的数据,即对于一帧800×600的视频数据而言,Y数据的读取次数为(800×600)/4=120000次。相应地,对于U数据、V数据的读取次数及数据长度的计算也可采用以上原理获得,以YUV420格式为例,U数据、V数据的读取次数为(400×300)/2=60000次,每次读取的数据长度为2字节。
在实际中,可以将多次读取的Y数据、U数据或V数据存至DMA内部存储器,再将所述内部存储器中的Y数据、U数据或V数据写入相应的目标地址。
当然,本领域技术人员还可以依据DMA内部存储器的大小相应设置写入方式,例如,在所述DMA内部存储器容量较小的情况,可以读取一次Y数据就写一次Y数据,然后在读取下一次Y数据后,再写入一次Y数据。上述方式仅仅用作示例,本发明对此无需加以限制。
需要说明的是,在每次读取和写入完成后,都需要将源起始地址更新为下一次读取的源起始地址;以及,将Y数据、U数据和V数据的目标起始地址更新为下一次写入的Y数据、U数据和V数据的目标起始地址;以进行下一次传输。
在具体实现中,可以由数据传输计数器和地址寄存器来完成次数更新操作,例如,每读取或写入一个数据,地址寄存器加1,从而得到下一个地址,与此同时,数据传输计数器则减1;如此循环,直到数据传输计数器的值为0,表示数据传输完毕。此时,DMA控制器将向CPU发出中断请求信号,即以中断方式向CPU报告传输操作的结束。
为使本领域技术人员更好地理解本发明,以下以一帧视频YUV数据的DMA传输过程为例对本实施例进一步说明。
本例的DMA传输涉及,从源起始地址0xF00000000开始,读取4×4子块格式的YUV420数据,以及,从Y数据的源起始地址0x00000000;U数据的源起始地址0x00075300和V数据的源起始地址0x000927C0开始,分别写入连续行格式的Y数据、U数据和V数据;具体可以通过以下步骤实现:
步骤S1、配置当前帧视频数据的原始存储格式为4×4子块的存储格式,目标存储格式为连续行数据的存储格式,图像大小为800×600像素;当前帧数据的源起始地址为0xF00000000;以及,所需写入的Y数据的目标起始地址为0x00000000;U数据的目标起始地址为0x00075300;V数据的目标起始地址为0x000927C0;
在具体实现中,所述源起始地址,以及,所述Y数据、U数据和V数据的目标起始地址可以在DMA控制器的地址寄存器中配置;所述视频YUV数据的原始存储格式信息和目标存储格式信息可以通过软件分别在DMA控制器的原始存储格式寄存器和目标存储格式寄存器中配置,所述视频YUV数据的大小信息可以通过软件分别在DMA控制器的图像长度寄存器和图像宽度寄存器中配置;或者,在DMA控制器的图像大小寄存器中分别配置。
步骤S2、DMA控制器依据所述视频YUV数据的原始存储格式信息和图像大小信息,进行以下计算:
计算Y数据的读取次数为(800×600)/4=120000次,每次传输的数据长度为4字节;
计算U数据的读取次数为(400×300)/2=60000次,每次传输的数据长度为2字节;
计算V数据的读取次数为(400×300)/2=60000次,每次传输的数据长度为2字节。
步骤S3、开始第一次读取操作,DMA控制器从当前帧视频YUV数据源起始地址0xF00000000开始,读取第1个子块的第1段4字节的Y数据到buffer;或者,读取第1个子块的第1段2字节的U数据或V数据到buffer;
步骤S4、在当次Y数据、U数据或V数据读取完成后,更新所述源起始地址为下一次读取的源起始地址;
例如,对于步骤S3读取的Y数据而言,下一次读取的源起始地址即为第2个子块的第1段4字节数据的起始地址;对于步骤S3读取的U数据或V数据而言,下一次读取的源起始地址即为第2个子块的第1段2字节数据的起始地址。
在本例中,第n次读取的Y数据的源起始地址可以采用以下公式计算:
0xF00000000+int((n-1)/800)×24×200+int((n-1)/200)×4+24((n-1)%200);
其中,1≤n≤120000,int( )为取整函数,int(x)表示不超过x的最大整数,(x%y)代表x对y取余。
第n次读取的U数据的源起始地址可以采用以下公式计算:
0xF00000010+int((n-1)/400)×24×200+int((n-1)/200)×2+24((n-1)%200);
其中,1≤n≤60000,int( )为取整函数,int(x)表示不超过x的最大整数,(x%y)代表x对y取余;
第n次读取的V数据的源起始地址可以采用以下公式计算:
0xF00000014+int((n-1)/400)×24×200+int((n-1)/200)×2+24((n-1)%200);
其中,1≤n≤60000,int( )为取整函数,int(x)表示不超过x的最大整数,(x%y)代表x对y取余。
步骤S5、将读到buffer内的Y数据,从Y数据的目标起始地址0x00000000开始连续写入;将读到buffer内的U数据,从U数据的目标起始地址0x00075300开始连续写入;将读到buffer内的V数据,从V数据的目标起始地址为0x000927C0开始连续写入;
所述buffer内的数据可以为当次读取的数据,也可以为多次读取的数据。
步骤S6、在Y数据写入完成(n=120000)、U数据写入完成(n=60000)、V数据写入完成(n=60000)后,以中断方式通知CPU。
需要说明的是,在本发明实施例中,对于先读Y数据、U数据还是V数据并不作限制,本领域技术人员根据实际情况处理即可。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图7,示出了本发明的一种视频YUV数据的DMA传输装置实施例1的结构框图,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;本实施例具体可以包括以下模块:
第一配置模块701,用于配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;
以及,DMA控制器72,具体可以包括以下模块:
第一计算模块721,用于依据所述目标存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第一读取模块722,用于从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
第一源地址更新模块723,用于更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
第一写入模块724,用于从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
第一目标地址更新模块725,用于更新所述目标起始地址为下一次写入的目标起始地址;
通知模块726,用于在完成传输后通知CPU。
其中,所述原始存储格式信息可以为连续行的存储格式,所述目标存储格式可以为运算数据块的存储格式。所述运算数据块可以包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数;当所述N为大于1的正整数时,所述当次读取的源起始地址包括多行子块的源起始地址。
在本实施例中,优选的是,所述DMA控制器72还可以包括:
DMA内部存储器,用于保存当次读取的Y数据、U数据和V数据。
在本发明的一种优选实施例中,所述第一配置模块701可以包括以下子模块:
CPU配置子模块,用于由CPU配置Y数据、U数据和V数据的源起始地址,以及,所需写入的目标起始地址;
软件配置子模块,用于由软件配置视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息。
在具体实现中,所述Y数据、U数据和V数据的源起始地址和目标起始地址可以在DMA控制器的地址寄存器中配置;所述视频YUV数据的原始存储格式信息可以在DMA控制器的原始存储格式寄存器中配置,所述视频YUV数据的目标存储格式信息可以在DMA控制器的目标存储格式寄存器中配置,所述视频YUV数据的大小信息可以包括图像长度信息和图像宽度信息,可以分别在DMA控制器的图像长度寄存器和图像宽度寄存器中配置;也可以在DMA控制器的图像大小寄存器中分别配置。
对于图7所示的装置实施例而言,由于其与图4所示的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参考图8,示出了本发明的一种视频YUV数据的DMA传输装置实施例2的结构框图,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;本实施例具体可以包括以下模块:
第二配置模块801,用于配置视频YUV数据的源起始地址、原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的Y数据、U数据和V数据的目标起始地址;
以及,DMA控制器82,具体可以包括以下模块:
第二计算模块821,用于依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第二读取模块822,用于从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
第二源地址更新模块823,用于更新所述源起始地址为下一次读取的源起始地址;
第二写入模块824,用于分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
第二目标地址更新模块825,用于更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
通知模块826,用于在完成传输后通知CPU。
其中,所述原始存储格式信息可以为运算数据块的存储格式,所述目标存储格式可以为连续行的存储格式。所述运算数据块可以包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
在本实施例中,优选的是,所述DMA控制器82还可以包括:
DMA内部存储器,用于保存读取的Y数据、U数据或V数据。
在本发明的一种优选实施例中,所述第二配置模块801可以包括以下子模块:
CPU配置子模块,用于由CPU配置视频YUV数据的源起始地址,以及,所需写入的Y数据、U数据和V数据的目标起始地址;
软件配置子模块,用于由软件配置视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息。
在具体实现中,所述Y数据、U数据和V数据的源起始地址和目标起始地址可以在DMA控制器的地址寄存器中配置;所述视频YUV数据的原始存储格式信息可以在DMA控制器的原始存储格式寄存器中配置,所述视频YUV数据的目标存储格式信息可以在DMA控制器的目标存储格式寄存器中配置,所述视频YUV数据的大小信息可以包括图像长度信息和图像宽度信息,可以分别在DMA控制器的图像长度寄存器和图像宽度寄存器中配置;也可以在DMA控制器的图像大小寄存器中分别配置。
对于图8所示的装置实施例而言,由于其与图5所示的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参考图9,示出了本发明的一种DMA控制器实施例的结构框图,所述DMA控制器用于控制YUV视频数据的DMA传输过程,具体可以包括以下模块:
原始存储格式寄存器901,用于接收配置的视频YUV数据的原始格式信息;
目标存储格式寄存器902,用于接收配置的视频YUV数据的目标格式信息;
图像大小寄存器903,用于接收配置的视频YUV数据的大小信息;
源地址寄存器904,用于接收配置的Y数据、U数据和V数据的源起始地址;
目标地址寄存器905,用于接收配置的目标起始地址;
第一计算模块906,用于依据所述目标存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第一读取模块907,用于从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
第一源地址更新模块908,用于更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
第一写入模块909,用于从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
第一目标地址更新模块910,用于更新所述目标起始地址为下一次写入的目标起始地址;
通知模块911,用于在完成传输后通知CPU。
在实际中,所述原始存储格式寄存器、目标存储格式寄存器和图像大小寄存器可以由软件配置;所述源地址寄存器和目标地址寄存器可以由CPU配置。
优选地,所述YUV数据的大小信息包括图像长度信息和图像宽度信息,所述图像大小寄存器包括图像长度寄存器和图像宽度寄存器,分别用于接收配置的图像长度信息和图像宽度信息。
在具体实现中,DMA控制器还可以包括内部寄存器和数据传输字节计数器等。这些器件在信息传输之前需要进行初始化设置,即在输入输出程序中用汇编语言指令对各个寄存器写入初始化控制字。例如,在DMA传输过程中,由DMA控制器控制系统总线,发出数据读取或写入的地址,并在数据总线上给出数据,随后在其R/W(读/写)线上发出“读”或“写”的命令;数据沿着数据总线传输,每传输一个数据,DMA控制器的地址寄存器加1,从而得到下一个地址,数据传输字节计数器则减1。如此循环,直到字节计数器的值为0,数据传输完毕。在数据读写过程中,还可以将所读取的数据保存在内部寄存器,读取完成后再将内部寄存器中的数据写入到目标地址。
参考图10,示出了本发明的一种DMA控制器实施例的结构框图,所述DMA控制器用于控制YUV视频数据的DMA传输过程,具体可以包括以下模块:
原始存储格式寄存器1001,用于接收配置的视频YUV数据的原始格式信息;
目标存储格式寄存器1002,用于接收配置的视频YUV数据的目标格式信息;
图像大小寄存器1003,用于接收配置的视频YUV数据的大小信息;
源地址寄存器1004,用于接收配置的源起始地址;
目标地址寄存器1005,用于接收配置的Y数据、U数据和V数据的目标起始地址;
第二计算模块1006,用于依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第二读取模块1007,用于从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
第二源地址更新模块1008,用于更新所述源起始地址为下一次读取的源起始地址;
第二写入模块1009,用于分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
第二目标地址更新模块1010,用于更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
通知模块1011,用于在完成传输后通知CPU。
本说明书中的各个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种视频YUV数据的DMA传输方法、一种DMA传输装置及一种DMA控制器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (17)
1、一种视频YUV数据的DMA传输方法,其特征在于,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;所述的方法包括:
配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;
DMA控制器依据所述目标存储格式信息和大小信息,分别计算所述Y数据、U数据和V数据的读取次数及数据长度;
从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
更新所述目标起始地址为下一次写入的目标起始地址;
在完成传输后通知CPU。
2、如权利要求1所述的方法,其特征在于,所述原始存储格式信息为连续行的存储格式,所述目标存储格式为运算数据块的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
3、如权利要求2所述的方法,其特征在于,当所述N为大于1的正整数时,所述当次读取的源起始地址包括多行子块的源起始地址。
4、如权利要求1、2或3所述的方法,其特征在于,还包括:
将当次读取的Y数据、U数据和V数据存至DMA内部存储器。
5、一种视频YUV数据的DMA传输方法,其特征在于,所述DMA传输涉及,从源起始地址开始读取原始存储格式的视频YUV数据,以及,分别从Y数据、U数据和V数据的目标起始地址开始,写入目标存储格式的Y数据、U数据和V数据的过程;所述的方法包括:
配置视频YUV数据的源起始地址、原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的Y数据、U数据和V数据的目标起始地址;
DMA控制器依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
更新所述源起始地址为下一次读取的源起始地址;
分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
在完成传输后通知CPU。
6、如权利要求5所述的方法,其特征在于,所述原始存储格式信息为运算数据块的存储格式,所述目标存储格式为连续行的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
7、如权利要求5或6所述的方法,其特征在于,还包括:
将读取的Y数据、U数据或V数据存至DMA内部存储器。
8、一种视频YUV数据的DMA传输装置,其特征在于,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;所述的装置包括:
第一配置模块,用于配置视频YUV数据中Y数据、U数据和V数据的源起始地址,所述视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的目标起始地址;
以及,DMA控制器,包括以下模块:
第一计算模块,用于依据所述目标存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第一读取模块,用于从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
第一源地址更新模块,用于更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
第一写入模块,用于从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
第一目标地址更新模块,用于更新所述目标起始地址为下一次写入的目标起始地址;
通知模块,用于在完成传输后通知CPU。
9、如权利要求8所述的装置,其特征在于,所述原始存储格式信息为连续行的存储格式,所述目标存储格式为运算数据块的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数;
当所述N为大于1的正整数时,所述当次读取的源起始地址包括多行子块的源起始地址。
10、如权利要求8所述的装置,其特征在于,所述第一配置模块包括:
CPU配置子模块,用于由CPU配置所述Y数据、U数据和V数据的源起始地址,以及,所需写入的目标起始地址;
软件配置子模块,用于由软件配置视频YUV数据的原始存储格式信息、目标存储格式信息和大小信息。
11、如权利要求10所述的装置,其特征在于,所述原始存储格式信息在DMA控制器的原始存储格式寄存器中配置,所述目标存储格式信息在DMA控制器的目标存储格式寄存器中配置,所述视频YUV数据的大小信息包括图像长度信息和图像宽度信息,分别在DMA控制器的图像长度寄存器和图像宽度寄存器中配置;或者,在DMA控制器的图像大小寄存器中分别配置。
12、如权利要求8所述的装置,其特征在于,所述DMA控制器还包括:
DMA内部存储器,用于保存当次读取的Y数据、U数据和V数据。
13、一种视频YUV数据的DMA传输装置,其特征在于,所述DMA传输涉及,分别从Y数据、U数据和V数据的源起始地址开始,读取原始存储格式的Y数据、U数据和V数据,以及,从目标起始地址写入目标存储格式的视频YUV数据的过程;所述的装置包括:
第二配置模块,用于配置视频YUV数据的源起始地址、原始存储格式信息、目标存储格式信息和大小信息;以及,所需写入的Y数据、U数据和V数据的目标起始地址;
以及,DMA控制器,包括以下模块:
第二计算模块,用于依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第二读取模块,用于从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
第二源地址更新模块,用于更新所述源起始地址为下一次读取的源起始地址;
第二写入模块,用于分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
第二目标地址更新模块,用于更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
通知模块,用于在完成传输后通知CPU。
14、如权利要求13所述的装置,其特征在于,所述原始存储格式信息为运算数据块的存储格式,所述目标存储格式为连续行的存储格式;所述运算数据块包括N行乘以N列的子块,其中,所述N为大于或等于1的正整数。
15、如权利要求13所述的装置,其特征在于,所述DMA控制器还包括:
DMA内部存储器,用于保存读取的Y数据、U数据或V数据。
16、一种DMA控制器,其特征在于,包括:
原始存储格式寄存器,用于接收配置的视频YUV数据的原始格式信息;
目标存储格式寄存器,用于接收配置的视频YUV数据的目标格式信息;
图像大小寄存器,用于接收配置的视频YUV数据的大小信息;
源地址寄存器,用于接收配置的Y数据、U数据和V数据的源起始地址;
目标地址寄存器,用于接收配置的目标起始地址;
第一计算模块,用于依据所述目标存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第一读取模块,用于从Y数据、U数据和V数据当次读取的源起始地址,读取相应的Y数据、U数据和V数据;
第一源地址更新模块,用于更新所述Y数据、U数据和V数据源起始地址为下一次读取的Y数据、U数据和V数据源起始地址;
第一写入模块,用于从所述目标起始地址开始,连续写入所读取的Y数据、U数据和V数据;
第一目标地址更新模块,用于更新所述目标起始地址为下一次写入的目标起始地址;
通知模块,用于在完成传输后通知CPU。
17、一种DMA控制器,其特征在于,包括:
原始存储格式寄存器,用于接收配置的视频YUV数据的原始格式信息;
目标存储格式寄存器,用于接收配置的视频YUV数据的目标格式信息;
图像大小寄存器,用于接收配置的视频YUV数据的大小信息;
源地址寄存器,用于接收配置的源起始地址;
目标地址寄存器,用于接收配置的Y数据、U数据和V数据的目标起始地址;
第二计算模块,用于依据所述原始存储格式信息和大小信息,分别计算Y数据、U数据和V数据的读取次数及数据长度;
第二读取模块,用于从所述视频YUV数据的源起始地址开始,读取Y数据、U数据或V数据;
第二源地址更新模块,用于更新所述源起始地址为下一次读取的源起始地址;
第二写入模块,用于分别从所述Y数据、U数据和V数据的目标起始地址,连续写入相应的Y数据、U数据和V数据;
第二目标地址更新模块,用于更新所述Y数据、U数据和V数据的目标起始地址为下一次写入的Y数据、U数据和V数据的目标起始地址;
通知模块,用于在完成传输后通知CPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910083464 CN101552916B (zh) | 2009-05-05 | 2009-05-05 | 视频yuv数据的dma传输方法、装置及dma控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910083464 CN101552916B (zh) | 2009-05-05 | 2009-05-05 | 视频yuv数据的dma传输方法、装置及dma控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101552916A true CN101552916A (zh) | 2009-10-07 |
CN101552916B CN101552916B (zh) | 2012-12-26 |
Family
ID=41156854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910083464 Expired - Fee Related CN101552916B (zh) | 2009-05-05 | 2009-05-05 | 视频yuv数据的dma传输方法、装置及dma控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101552916B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495878A (zh) * | 2011-12-05 | 2012-06-13 | 深圳市中钞科信金融科技有限公司 | 一种机器视觉检测结果的存储文件及方法 |
CN104092968A (zh) * | 2014-06-13 | 2014-10-08 | 清华大学 | 超高清视频的视频数据存储控制装置 |
WO2016201793A1 (zh) * | 2015-06-17 | 2016-12-22 | 青岛海信信芯科技有限公司 | 一种数据处理方法及装置 |
CN107092655A (zh) * | 2017-03-21 | 2017-08-25 | 武汉斗鱼网络科技有限公司 | 用于Android宽屏设备中组图的循环展示方法及系统 |
CN107357745A (zh) * | 2016-05-09 | 2017-11-17 | 飞思卡尔半导体公司 | 具有算术单元的dma控制器 |
CN108257582A (zh) * | 2018-01-30 | 2018-07-06 | 广东中星微电子有限公司 | 一种图像的显示缓冲方法和装置 |
CN109074334A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
WO2019127922A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、计算装置及计算机可读存储介质 |
CN109992541A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、相关产品及计算机存储介质 |
CN111159075A (zh) * | 2019-12-31 | 2020-05-15 | 成都海光微电子技术有限公司 | 数据传输方法和数据传输装置 |
CN112732603A (zh) * | 2019-10-14 | 2021-04-30 | 广州飒特红外股份有限公司 | 一种多通道vdma控制方法及其应用 |
WO2022011614A1 (zh) * | 2020-07-15 | 2022-01-20 | 深圳市大疆创新科技有限公司 | Dma控制器、电子设备、芯片、可移动平台、数据搬移方法 |
CN114756490A (zh) * | 2022-03-21 | 2022-07-15 | 奥比中光科技集团股份有限公司 | 一种dma数据搬运方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681948A (zh) * | 2016-12-26 | 2017-05-17 | 深圳先进技术研究院 | 可编程逻辑器件的逻辑控制方法及装置 |
-
2009
- 2009-05-05 CN CN 200910083464 patent/CN101552916B/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495878A (zh) * | 2011-12-05 | 2012-06-13 | 深圳市中钞科信金融科技有限公司 | 一种机器视觉检测结果的存储文件及方法 |
CN104092968A (zh) * | 2014-06-13 | 2014-10-08 | 清华大学 | 超高清视频的视频数据存储控制装置 |
WO2016201793A1 (zh) * | 2015-06-17 | 2016-12-22 | 青岛海信信芯科技有限公司 | 一种数据处理方法及装置 |
CN107357745A (zh) * | 2016-05-09 | 2017-11-17 | 飞思卡尔半导体公司 | 具有算术单元的dma控制器 |
CN107092655A (zh) * | 2017-03-21 | 2017-08-25 | 武汉斗鱼网络科技有限公司 | 用于Android宽屏设备中组图的循环展示方法及系统 |
WO2019127922A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、计算装置及计算机可读存储介质 |
CN109074334A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
WO2019127538A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN109992541A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、相关产品及计算机存储介质 |
CN109992542A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、相关产品及计算机存储介质 |
CN109992541B (zh) * | 2017-12-29 | 2021-09-14 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、计算装置及计算机存储介质 |
CN109992542B (zh) * | 2017-12-29 | 2021-11-30 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、相关产品及计算机存储介质 |
CN108257582A (zh) * | 2018-01-30 | 2018-07-06 | 广东中星微电子有限公司 | 一种图像的显示缓冲方法和装置 |
CN112732603A (zh) * | 2019-10-14 | 2021-04-30 | 广州飒特红外股份有限公司 | 一种多通道vdma控制方法及其应用 |
CN111159075A (zh) * | 2019-12-31 | 2020-05-15 | 成都海光微电子技术有限公司 | 数据传输方法和数据传输装置 |
CN111159075B (zh) * | 2019-12-31 | 2021-11-05 | 成都海光微电子技术有限公司 | 数据传输方法和数据传输装置 |
WO2022011614A1 (zh) * | 2020-07-15 | 2022-01-20 | 深圳市大疆创新科技有限公司 | Dma控制器、电子设备、芯片、可移动平台、数据搬移方法 |
CN114756490A (zh) * | 2022-03-21 | 2022-07-15 | 奥比中光科技集团股份有限公司 | 一种dma数据搬运方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101552916B (zh) | 2012-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101552916B (zh) | 视频yuv数据的dma传输方法、装置及dma控制器 | |
JP4789753B2 (ja) | 画像データバッファ装置、画像転送処理システム、及び画像データバッファ方法 | |
CN105684036B (zh) | 并行的硬件块处理流水线和软件块处理流水线 | |
JP4991816B2 (ja) | 画像処理装置 | |
CN100369024C (zh) | 直接存储访问控制装置和图像处理系统以及传输方法 | |
KR19980025110A (ko) | 데이타 프로세서 및 그래픽 프로세서 | |
US20100142623A1 (en) | Multi-protocol deblock engine core system and method | |
US20190318461A1 (en) | Histogram Statistics Circuit and Multimedia Processing System | |
CN103336716A (zh) | 信号处理装置和半导体装置 | |
CN115297094B (zh) | 视频传输控制方法、装置、设备及计算机可读存储介质 | |
CN111338984A (zh) | 一种Cache RAM与Retention RAM数据高速交换架构及其方法 | |
JP2006301724A (ja) | メモリコントローラ、画像処理コントローラ及び電子機器 | |
US20050285813A1 (en) | Display controller, electronic equipment, and image data supplying method | |
CN102868855B (zh) | 一种数码变焦方法和装置 | |
CN102541808A (zh) | Soc芯片系统及实现Soc芯片中可配置缓冲器的方法 | |
CN102263924B (zh) | 一种基于双三次插值的图像处理方法及其图像显示方法 | |
US20040105500A1 (en) | Image processing system | |
JP4970378B2 (ja) | メモリコントローラおよび画像処理装置 | |
KR100891116B1 (ko) | 대역폭 인식 움직임 보상 장치 및 그 방법 | |
JP2000069478A (ja) | 画像処理装置及び方法並びに記憶媒体 | |
TWI603616B (zh) | 晶片內/晶片外記憶體管理 | |
KR102284078B1 (ko) | 고 처리율의 내부 통신 프로토콜을 구비한 이미지 프로세서 | |
CN101552915A (zh) | 视频yuv数据的dma传输方法、装置及dma控制器 | |
CN101556789B (zh) | 一种图像缩放控制系统及方法 | |
US20060184893A1 (en) | Graphics controller providing for enhanced control of window animation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
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: 20121226 Termination date: 20190505 |