CN102123275B - 一种视频分量数据信息获取及提取的方法 - Google Patents
一种视频分量数据信息获取及提取的方法 Download PDFInfo
- Publication number
- CN102123275B CN102123275B CN201010613477A CN201010613477A CN102123275B CN 102123275 B CN102123275 B CN 102123275B CN 201010613477 A CN201010613477 A CN 201010613477A CN 201010613477 A CN201010613477 A CN 201010613477A CN 102123275 B CN102123275 B CN 102123275B
- Authority
- CN
- China
- Prior art keywords
- video data
- video
- component
- data
- memory
- 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.)
- Active
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种视频分量信息获取及提取的方法。所述方法使用的系统包括:视频数据处理主机,系统总线,视频I/O板卡,视频信号解码器、视频数据重排布装置、板载内存、DMA控制器,方法的步骤:视频信号解码;视频数据重新排布;分块视频数据存入板载内存;发出分块视频数据准备就绪通知;视频数据处理主机提供内存;传输分块视频数据。处理过程既包含软件对硬件的控制也包括硬件内部的处理。通过在FPGA中设置硬件视频数据重排布装置,可在硬件编/解码的同时直接进行图像存储格式重排布,绕过了通过软件进行图像存储格式重新排布的环节,最大限度地降低了视频存储格式转换带来的时间延时以及转换过程中产生的CPU和内存带宽等资源的消耗。
Description
技术领域
本发明涉及一种视频分量数据信息获取及提取的方法,是一种数字图像处理方法,是一种用于计算机视频采集播出的方法,是一种在视频处理过程中提高计算机总线带宽利用率、提高视频处理效率降低处理时间的方法。
背景技术
随着IT技术的快速发展,计算机处理技术在广播电视领域的应用越来越广泛。在广播电视的制作和播出系统中,计算机图形图像处理技术、视频压缩存储技术更是享有不可或缺的地位。在这些系统中,整个系统的信息交互流程是完全相同的:视频信号源播出->视频I/O卡采集->计算机处理/存储->视频I/O卡播出->其他接收设备接收处理。整个过程中,视频I/O卡主要负责传统视频信号与计算机处理信号的交互,其作为计算机与其他视频设备信息交互的桥梁,起到了至关重要的作用。计算机对视频图像的处理,无论处理目的或处理算法是什么,最终都是对视频I/O卡传递给它的各像素点的视频分量数据进行处理。在广播电视领域中,YUV采样是应用最为广泛的视频采样方法,它使用Y(亮度)、U(蓝色差)、V(红色差)3个分量描述视频图像中的每个像素点;在计算机处理过程中,视频图像的3个分量可以按照多种采样方式,如YUV4:4:4、YUV4:2:2、YUV4:2:0,存在于IT存储设备(内存、硬盘)中,其区别在于各个视频分量所占的存储比例和排列方式有所不同。目前,绝大多数视频I/O卡使用的图像存储格式(即各视频分量的布局方式)都是将各视频分量数据交错在一起存储的。然而,对于某些应用,如视频编解码器,为了提高视频数据处理效率,首先需要将各视频分量数据提取到连续的存储区域分块存储,然后再进行视频处理。从视频分量数据交错的存储方式到视频分量分块的存储方式转换过程,仅仅是对内存中数据布局方式的重新排布,其处理时间主要取决于内存的读写带宽,不可能通过算法优化进行效率的提升;此外,由于视频信息的数据量非常大,尤其是这种转换对于高清晰度视频(分辨率为1920*1080)来说,将占用大量的内存带宽资源,从而降低整个处理系统的效率。虽然有些视频I/O板卡提供的编程接口支持使用视频分量分块的图像存储方式与计算机软件进行视频数据交互,但是隐藏在这些编程接口背后的具现方法,都是通过软件转换的方式实现的,其执行过程同样需要大量的内存处理带宽和CPU计算资源,无法从根本上解决处理效率低、资源消耗大的问题。因此,需要一种方法,能够在视频I/O板卡进行信号采集的同时将各视频分量数据进行分块,以降低视频数据存储布局软件转换过程的延时;同时,在软硬件进行I/O交互时,也能够直接以视频分量数据分块的方式进行操作,以最大限度地利用计算机总线的带宽资源。
发明内容
为解决现有技术问题,本发明的目的是提出一种视频分量数据信息获取及提取的方法,所述方法使视频I/O卡直接以视频分量数据分块的方式与视频数据处理主机中的应用程序进行交互,而视频分量数据的分块操作是由硬件在进行视频信号I/O操作的同时完成的。本发明所述的方法包括输入和输出两个互逆的处理方法:“针对输入应用的视频I/O板卡处理方法”即为本发明所述的“获取”;和“针对输出应用的视频I/O板卡处理方法”即为本发明所述的“提取”。
本发明的目的是这样实现的:一种视频分量数据信息获取的方法,所述方法使用的系统包括:带有应用程序的视频数据处理主机,系统总线,插接在视频数据处理主机上的带有板卡驱动程序的视频I/O板卡,以及安装在视频I/O板卡上的视频信号解码器、视频数据重排布装置、板载内存、PCIE-DMA控制器、IO-DMA控制器,所述方法的步骤如下:
视频信号解码的步骤:用于视频信号解码器对信号源中的视频信号进行解码;
视频数据重新排布的步骤:用于视频数据重排布装置将交错视频数据排布为分块视频数据;
分块视频数据存入板载内存的步骤:用于将分块视频数据从视频数据重排布装置中利用IO-DMA控制器搬运到板载内存中进行存储;
发出分块视频数据准备就绪通知的步骤:用于完成一帧分块视频数据在板载内存的缓存后,视频I/O板卡通过硬件产生的帧中断通知板卡驱动程序分块视频数据准备就绪,板卡驱动程序立即向视频数据处理主机中的应用程序发出数据准备就绪的通知;
视频数据处理主机提供内存的步骤:用于应用程序在接收到视频数据准备就绪通知后,将应用程序事先准备好的视频数据处理主机的内存地址提供给板卡驱动程序;
传输分块视频数据的步骤:用于板卡驱动程序在接收到视频数据处理主机内存地址后,通过PCIE-DMA控制器和系统总线将完整的一帧分块视频数据从板载内存搬运到视频数据处理主机内存中,之后回到“发出分块视频数据准备就绪通知的步骤”开始新一轮一帧分块视频数据的传输。
一种视频分量数据信息提取的方法,所述方法使用的系统包括:带有应用程序的视频数据处理主机,系统总线,插接在视频数据处理主机上的带有板卡驱动程序的视频I/O板卡,以及安装在视频I/O板卡上的视频信号编码器、视频数据重排布装置、板载内存、PCIE-DMA控制器、IO-DMA控制器,所述方法的步骤如下:
通知提取分块视频数据的步骤:用于板卡驱动程序通知应用程序将事先准备好的存储在视频数据处理主机内存中的分块视频数据提供给板卡驱动程序;
分块视频数据传输的步骤:用于板卡驱动程序通过系统总线将分块视频数据从视频数据处理主机的内存传输到视频I/O板卡的板载内存进行存储,等待后续输出;
分块视频数据存入视频数据重排布装置中的步骤:用于当视频I/O板卡的帧中断发生时,利用IO-DMA控制器将板载内存上的分块视频数据传送到视频数据重排布装置中;
视频数据重新排布的步骤:用于视频数据重排布装置在接收分块视频数据后将其进行重新排布,形成交错视频数据;
编码形成视频信号的步骤:用于将交错视频数据按照视频标准进行视频编码,形成视频信号流;
一帧视频图像完成的步骤:用于视频I/O板卡通过中断通知板卡驱动程序进行下一次视频数据的传输,驱动程序接收到该中断后回到“通知提取分块视频数据的步骤”。
本发明产生的有益效果是:本发明处理过程既包含软件对硬件的控制方法也包括硬件内部的处理方法。本发明使用硬件是安装视频I/O板卡上的主芯片:现场可编程门阵列(FPGA),而软件则是负责协调视频I/O板卡各硬件模块协同工作的的板卡驱动程序。通过在FPGA中实现硬件视频数据重排布装置,可在硬件编/解码的同时直接由I/O板卡的硬件设备进行图像数据存储格式重排布,绕过了通过软件在计算机内存中进行图像数据存储格式重新排布的环节,最大限度地降低了视频图像数据存储格式转换带来的时间延时以及转换过程中产生的CPU和内存带宽等资源的消耗。
附图说明
下面结合附图和实施例对本发明作进一步说明。
图1是本发明的实施例一所述方法使用的系统原理示意图;
图2是本发明的实施例一所述方法的流程示意图;
图3是本发明的实施例一所述方法的直接存储法的视频分量排布器系统原理示意图;
图4是本发明的实施例一所述方法的转换操作法的视频分量排布器系统原理示意图;
图5是本发明的实施例一所述方法的转换操作法的视频分量排布器的转换操作示意图;
图6是本发明的实施例一所述方法的转换操作法的SGL表的生成逻辑示意图;
图7是本发明的实施例二所述方法使用的系统原理示意图;
图8是本发明的实施例二所述方法的流程图;
图9是本发明的实施例四所述方法使用的系统原理示意图;
图10是本发明的实施例四所述方法的流程图;
图11是本发明的实施例六所述方法使用的系统原理示意图;
图12是本发明的实施例六所述方法的转换操作法的SGL表的生成逻辑示意图;
图13是本发明的实施例六所述方法的转换操作法的视频分量排布器的转换操作示意图;
图14是本发明的实施例六所述方法的流程示意图;
图15是本发明的实施例八所述方法使用的系统原理示意图;
图16是本发明的实施例八所述方法的流程图。
具体实施方式
实施例一:
本实施例是一种视频数据分量信息获取的方法。本实施例所述方法使用的系统如图1所示,包括:带有应用程序的视频数据处理主机,系统总线,插接在视频数据处理主机上的带有板卡驱动程序的视频I/O板卡,以及安装在视频I/O板卡上的视频信号解码器、视频数据重排布装置、板载内存、PCIE-DMA控制器。
本实施例使用的主处理芯片为Xilinx的Virtex5系列可编程逻辑门阵列(FPGA),型号是XC5VSX50T,硬件功能的主要逻辑模块包括:视频信号解码器、视频数据重排布装置、板载内存、PCIE-DMA控制器等都是通过对FPGA进行硬件编程实现。此外,使用目前市面主流的DDRII内存颗粒作为视频I/O板卡的板载内存用于软硬件数据交互。在软件上,使用的操作系统平台是32位Windows XP,并基于微软WDM驱动程序模型开发了视频I/O板卡的驱动程序。
本实施例的主要思路是,通过视频解码器对输入的视频信号进行解码,在解码器进行视频解码的同时,视频分量重排布装置对解码后的视频数据进行重新排布,将各视频分量解交错后进行分块存储,当一帧视频数据处理完毕后,视频I/O板卡通过硬件中断通知驱动程序将分块存储的视频数据取走传递给视频数据处理主机的应用程序。具体包含以下软硬件逻辑处理模块:
视频信号解码器:它是一个硬件功能模块,负责对输入的视频信号进行解码。视频解码器的输入为外部视频信号,输出是解码后的视频数据流,它可以按照相关视频标准,利用硬件描述语言在主芯片(现场可编程门阵列,FPGA)内部实现。
缓存:由于视频解码器的工作速度与IO-DMA传输控制器搬运数据的速度不同,所以在IO-DMA传输控制器与视频解码器之间增加一个缓存,缓存的作用主要用于同步这两个硬件模块的工作,使这两个模块可以在各自的工作频率下工作。由于主芯片(FPGA)内部本身带有缓存资源,为了提高效率,可以直接利用之。它是一个硬件功能模块。
DMA传输控制器:DMA(直接内存访问)传输控制器的主要作用是负责将视频图像数据在不同的硬件存储单元之间进行高效传输。当其通过板上总线,在FPGA内部RAM和板载内存之间搬运数据时,称其为IO-DMA;当其通过计算机系统PCIE总线,在板载内存和计算机内存之间搬运数据时,称其为PCIE-DMA。它们都可以通过硬件描述语言对主芯片(现场可编程门阵列,FPGA)编程实现。它是一个硬件功能模块。
板载内存:板载内存的作用是存储板卡上各个信号处理器的处理结果。在本实施例中,其主要作用是将视频信号解码器解码出来的视频数据进行存储。目前市面上主流的DDRII内存颗粒由于其性能优越,价格低廉的特点可以作为被实施例的板载内存加以利用。它是一个硬件功能模块。
PCIE-DMA控制器:该模块的作用是负责将板载内存中的视频图像数据传输到有应用程序指示的计算机内存中,它在板卡驱动程序的控制下工作。由于PCIE-DMA控制器在进行数据搬运时对每次搬运的数据长度有诸多要求,每次数据搬运对应一个SGL表项(即分散聚集表项),每个SGL表项只能针对连续存储的数据进行搬运动作,所以驱动程序对该模块的主要控制操作是根据数据的源地址、目的地址以及数据布局的方式生成SGL表项,并将这些表项串到一起组成SGL表提供给它作为数据传输的依据。此模块是一个在驱动程序软件控制下工作功能模块。
本实施例所述方法的具体步骤如下,流程如图2所示:
视频信号解码的步骤:用于视频信号解码器对信号源中的视频信号进行解码。
视频数据重新排布的步骤:用于视频数据重排布装置将交错视频数据排布为分块视频数据。
分块视频数据存入板载内存的步骤:用于将分块视频数据从视频数据重排布装置中搬运到板载内存中进行存储。
发出分块视频数据准备就绪通知的步骤:用于当一帧图像的分块视频数据在板载内存的缓存准备完成后,向应用程序发出数据准备就绪的通知,即I/O板卡通过硬件产生的帧中断通知板卡驱动程序分块视频数据准备就绪,板卡驱动程序立即向视频数据处理主机中的应用程序发出数据准备就绪的通知。
视频数据处理主机提供内存地址的步骤:用于应用程序在接收到视频数据准备就绪通知后,将应用程序事先准备好的视频数据处理主机的内存地址提供给板卡驱动程序。
传输分块视频数据的步骤:用于板卡驱动程序在接收到视频数据处理主机内存地址后,通过PCIE-DMA控制器和系统总线将完整的一帧视频图像的分块视频数据从板载内存搬运到视频数据处理主机内存中,完成之后回到“发出分块视频数据准备就绪通知的步骤”,等待开始新一轮一帧分块视频数据的传输。
视频数据重排布装置对视频数据的重新排布可以有多种形式,但效率较高的有如下两种:一种可简称为直接存储法,即在对信号源中的视频信号解码后直接辨别交错视频数据分量,并分别存入不同的缓存中;另一种可简称为转换操作法,该方法是对信号源中的视频信号解码后先将交错视频数据存入缓存,之后进行一次转换操作,对视频数据进行重新排布。
直接存储法所使用的视频数据重排布装置,如图3所示,需要三个缓存分别为缓存1、缓存2、缓存3,三个缓存分别有自己的IO-DMA控制器:IO-DMA1、IO-DMA2、IO-DMA3,通过以下步骤实现:
1.视频信号解码器依据输入视频的制式信息(包括视频的帧频信息和视频的分辨率信息)获取输入视频的宽度W(以像素为单位)和高度H(以像素为单位),并对输入视频进行解码。
2.视频信号解码器在进行视频信号解码时,如果发现解码出来的视频数据是Y分量,则将其输出到缓存1;当缓存1存满时,通知 IO-DMA1将缓存1中的视频数据连续地搬运到以Address_Y为首地址的板载内存中。
3.视频信号解码器在进行视频信号解码时,如果发现解码出来的视频数据是U分量,则将其输出到缓存2;当缓存2存满时,通知 IO-DMA2将缓存2中的视频数据连续搬运到以Address_U为首地址的板载内存中。
4.视频信号解码器在进行视频信号解码时,如果发现解码出来的视频数据是V分量,则将其输出到缓存3;当缓存3存满时,通知 IO-DMA3将缓存3中的视频数据连续搬运到以Address_V为首地址的板载内存中。
由于存储一帧视频数据的板载内存地址Address是已知的,且输入视频的宽度W和高度H也在视频解码的同时可以获得,因此对于8bit YUV4:2:2的视频解码来说,Address_Y、Address_U、Address_V之间存在以下关系:
Address_Y = Address (1)
Address_U = Address_Y + W*H (2)
Address_V = Address_U + W*H/2 (3)
通过上述视频数据的分发和搬运,即可在视频信号输入的同时完成各视频分量数据的解交错操作。图3下半部分长形框中表示的是重新排布后的视频数据布局,各分量按照YUV分别排列。
经过上述硬件处理过程,当一帧视频输入完成后,各视频分量会以分块存储的形式保存在板载内存中。之后,视频I/O板卡立即产生中断信号,以通知板卡驱动程序将其取走。板卡驱动程序通过公式(1)、(2)和(3),可以分别得到Y、U、V各视频分量数据在板载内存上的存储地址,然后通过设置PCIE-DMA控制器的参数,将这些数据从板载内存搬运到应用程序中,此时应用程序得到的视频数据既是预期的各视频分量分块存储的数据,可以对其直接进行处理。在驱动程序控制PCIE-DMA进行数据搬运的过程中,驱动程序必须把数据搬运的源地址和目的地址作为参数传递给PCIE-DMA控制器,这个参数需要以SGL表(分散聚集表)的形式提供,此实施例生成SGL表的过程比较简单,步骤如下:
1.针对Y数据块,将Address_Y和应用程序提供的用于存储Y分量数据的内存地址作为第一个表项内容生成SGLItem1,传输数据的长度为W×H个字节。
2.针对U数据块,将Address_U和应用程序提供的用于存储U分量数据的内存地址作为第二个表项内容生成SGLItem2,传输数据的长度为W×H/2个字节。
3.针对V数据块,将Address_V和应用程序提供的用于存储V分量数据的内存地址作为第三个表项内容生成SGLItem3,传输数据的长度为W×H/2个字节。
4.将上述SGLItem1、SGLItem2、 SGLItem3串到一起即是最终需要的SGL表。
在直接存储法使用了3个“IO-DMA控制器+缓存”的硬件功能组合,这样实现的优点是简单直接,但是会对主芯片(FPGA)的硬件资源造成较大的消耗,从而增加实现成本。而转换操作法则通过在视频数据重新排布装置中加入视频分量排布器(如图4所示)的方法对视频数据重排布进行优化,从而降低硬件资源的消耗。视频分量排布器的主要作用是对视频解码器解码后输出的交错视频数据进行预处理,进行初步的重新排列,它可以利用硬件描述语言,通过对主芯片(FPGA)进行硬件编程的方法实现。图4下半部分的长形框中表示的是重新排布后的视频数据布局。
下面以8bit YUV4:2:2的视频输入数据为例进行示例说明,如图5所示。其实现思路如下:
1.在视频分量排布器内部对输入的交织视频数据进行缓存。
2.当缓存了m个像素点的视频数据时,开始一次转换操作。
3.转换结果的前m个字节为Y分量块,之后的m/2个字节为U分量块,最后的m/2个字节为V分量块。
4.转换后的结果输入缓存1,并最终通过IO-DMA控制器将其搬运到板载内存中。
值得注意的是,由于系统使用了DMA控制器进行数据搬运,而通常情况下DMA控制器对数据搬运的长度是有要求的。因此,如果DMA控制器要求每次数据搬运的长度为常数A的整数倍,则m/2必须为A的整数倍,因此m必须为A的偶数倍。另外,由于所有标准规定的视频制式,其视频分辨率都为偶数,为了方便描述,取每幅图像所包含的像素点为2n。同时还需注意的是,由于DMA控制器每次是对固定长度的数据进行整块搬运,所以这里m的取值需同时满足为A的偶数倍,并且2n能被m整除。
在图4所示的实施例中假设A=8,m=16。经过上述视频数据重排布装置的预处理,板载内存上存储的分块视频数据将以m个像素的视频数据为单位,把整帧视频划分到2n/m个存储单元中。每个存储单元中的视频数据是各视频分量分块存储的。
基于上述视频数据布局结构,板卡驱动程序生成SGL表的方法需要按照以下思路进行:
1.针对每个视频数据存储单元(对应m个视频像素的视频数据)的Y分量数据块,生成2n/m个SGL表项,分别为SGLItemY_1——SGLItemY_2n/m,用于将板载内存的Y分量数据传输到应用程序内存中。
2.针对每个视频数据存储单元(对应m个视频像素的视频数据)的U分量数据块,生成2n/m个SGL表项,分别为SGLItemU_1——SGLItemU_2n/m,用于将板载内存的U分量数据传输到应用程序内存中。
3.针对每个视频数据存储单元(对应m个视频像素的视频数据)的V分量数据块,生成2n/m个SGL表项,分别为SGLItemV_1——SGLItemV_2n/m,用于将板载内存的V分量数据传输到应用程序内存中。
4.将上述6n/m个SGL表项串到一起即是最终需要的SGL表。
图6描述了SGL表的生成逻辑。
实施例二:
本实施例是实施例一的改进,是实施例一关于视频数据重新排布的步骤的细化。本实施例所使用的视频数据重排布装置和系统如图7所示,包括:Y缓存、IO-DMA_Y、U缓存、IO-DMA_U、V缓存、IO-DMA_V。本实施例采取的是直接存储法将交织视频数据排布为分块视频数据,所述的视频数据重新排布的步骤的细化步骤如下,流程如图8所示:
视频信号解码器依据输入视频的制式信息获取输入视频的宽度W和高度H,并对输入视频进行解码,视频信号解码器在进行视频信号解码时,辨别是Y分量,还是U分量,还是V分量,根据不同的分量进入下列对应的步骤。
如果发现解码出来的视频数据是Y分量,则将其输出到Y缓存,当Y缓存存满时,通知IO-DMA_Y将Y缓存中的视频数据连续地搬运到以Address_Y为首地址的板载内存中。
如果发现解码出来的视频数据是U分量,则将其输出到U缓存,当U缓存存满时,通知IO-DMA_U将U缓存中的视频数据连续搬运到以Address_U为首地址的板载内存中。
如果发现解码出来的视频数据是V分量,则将其输出到V缓存,当V缓存存满时,通知IO-DMA_V将V缓存中的视频数据连续搬运到以Address_V为首地址的板载内存中。
实施例三:
本实施例是实施例二的改进,是实施例二关于SGL表细化。本实施例所述的传输分块视频数据的步骤是在直接存储法的环境中,将完整的一帧分块视频数据从板载内存传递到视频数据处理主机内存中的过程使用SGL表表达数据搬运的源地址和目的地址,所述的SGL表的生成过程包括如下步骤:
以下三个步骤为平行的步骤。
针对Y数据块,将Address_Y和应用程序提供的用于存储Y分量数据的内存地址作为第一个表项内容生成SGLItem1,传输数据的长度为视频输入的宽度W乘以视频输入的高度H个字节。
针对U数据块,将Address_U和应用程序提供的用于存储U分量数据的内存地址作为第二个表项内容生成SGLItem2,传输数据的长度为视频输入的宽度W乘以视频输入的高度H的二分之一个字节。
针对V数据块,将Address_V和应用程序提供的用于存储V分量数据的内存地址作为第三个表项内容生成SGLItem3,传输数据的长度为视频输入的宽度W乘以视频输入的高度H的二分之一个字节。
将SGLItem1、SGLItem2、SGLItem3串到一起形成SGL表。
实施例四:
本实施例是实施例一的改进,是实施例一关于视频数据重新排布的步骤的细化。本实施例所使用的视频数据重排布装置和系统如图9所示,包括:视频分量排布器、排布缓存、IO-DMA控制器、PCIE-DMA控制器。本实施例采取的是转换操作法将交织视频数据排布为局部分块视频数据,所述视频数据重新排布的步骤的细化步骤如下,流程如图10所示:
在视频分量排部器内部对输入的交织视频数据进行缓存。
当缓存了m个像素点的视频数据时,开始一次转换操作。
转换结果的前m个字节为Y分量块,之后的m/2个字节为U分量块,最后的m/2个字节为V分量块。
转换后的结果输入排布缓存,并最终通过IO-DMA控制器将其搬运到板载内存中。
实施例五:
本实施例是实施例四的改进,是实施例四关于SGL表生成过程的细化。所述的传输分块视频数据的步骤是在转换操作法的环境中,将完整的一帧分块视频数据从板载内存传递到视频数据处理主机内存中的过程使用SGL表表达数据搬运的源地址和目的地址,所述的SGL表的生成过程包括如下步骤:
将板载内存上准备存储分块视频数据的存储单元以m个像素的视频数据为单位,把整帧视频划分到2n/m个存储单元中,每个存储单元中的视频数据是各视频分量分块存储的。这里n的含义为:由于所有标准规定的视频制式,其视频分辨率都为偶数,为了方便描述,取每幅图像所包含的像素点为2n。同时还需注意的是,由于DMA控制器每次是对固定长度的数据进行整块搬运,所以这里m的取值需同时满足为A的偶数倍,并且2n能被m整除。以下为三个平行步骤:
针对每个视频数据存储单元的Y分量数据块,生成2n/m个SGL表项,分别为SGLItemY_1——SGLItemY_2n/m;
针对每个视频数据存储单元的U分量数据块,生成2n/m个SGL表项,分别为SGLItemU_1——SGLItemU_2n/m。
针对每个视频数据存储单元的V分量数据块,生成2n/m个SGL表项,分别为SGLItemV_1——SGLItemV_2n/m。
将上述6n/m个SGL表项串到一起形成SGL表。
实施例六:
本实施例是一种视频分量信息提取的方法,是实施例所述方法的逆过程。所述方法使用的系统如图11所示,包括:带有应用程序的视频数据处理主机,系统总线,插接在视频数据处理主机上的带有板卡驱动程序的视频I/O板卡,以及安装在视频I/O板卡上的视频信号解码器、视频数据重排布装置、板载内存、PCIE-DMA控制器。
本实施例与实施例一所述使用的系统完全相同,只是数据流的方向相反。所以本实施例与实施例一相比主要包含以下区别:
1. 数据流由视频数据处理主机中的应用程序流入视频I/O板卡,经视频I/O板卡处理后流出视频I/O板卡并最终流入视频信号接收设备。
2.板卡驱动程序在生成SGL表项时使用的源地址和目的地址有所不同,应将实施例一中目的地址作为本实施例的源地址。
3.本实施例的视频数据重排布装置可以采用类似于实施例一所述的直接存储法或转换操作法。如果采用转换操作法则实施例一中的源地址作为本实施例的目的地址生成SGL表项,并将这些表项串在一起作为最终需要的SGL表,见图12。
4.本实施例中,使用转换操作法的视频分量排布器的输入视频数据以各视频分量分块存储的方式布局,输出视频数据以各视频分量交织储存的方式布局,见图13。
5.通过视频信号编码器,对视频分量重排布器输出的视频数据进行信号编码,并通过信号端口将编码后的视频信号输出。与之前描述的视频信号解码器类似,它可以利用硬件描述语言基于相关视频标准在主芯片(FPGA)内部编程实现。
本实施例所述方法的步骤如下,流程如图14所示:
通知提取分块视频数据的步骤:用于板卡驱动程序通知应用程序将事先准备好的存储在视频数据处理主机内存中的分块视频数据提供给板卡驱动程序。
分块视频数据传输的步骤:用于板卡驱动程序通过系统总线将分块视频数据从视频数据处理主机的内存传输到视频I/O板卡的板载内存进行存储,等待后续输出。
分块视频数据存入视频数据重排布装置中的步骤:用于当视频I/O板卡的帧中断发生时,将板载内存上的分块视频数据传送到视频数据重排布装置中。
视频数据重新排布的步骤:用于视频数据重排布装置在接收分块视频数据后将其进行重新排布,形成交织视频数据。
编码形成视频信号的步骤:用于将交织视频数据按照视频标准进行视频编码,形成视频信号流。
一帧视频图像完成的步骤:用于视频I/O板卡通过中断通知板卡驱动程序进行下一次视频数据的传输,驱动程序接收到该中断后回到“通知提取分块视频数据的步骤”。
实施例七:
本实施例是实施例六的改进,是实施例六关于SGL表生成过程的细化。本实施例所述的分块视频数据传输的步骤是为创造转换操作法的环境,将完整的一帧分块视频数据从视频数据处理主机内存传递到板载内存中的过程使用SGL表表达数据搬运的源地址和目的地址,所述的SGL表的生成过程包括如下步骤:
将处理主机准备好的视频数据以m个像素所需数据量为单位,分别将Y分量区域、U分量区域、V分量区域划分为2n/m个存储单元,每个存储单元分别包含m个Y分量、m/2个U分量和m/2个V分量。这里n的含义为:由于所有标准规定的视频制式,其视频分辨率都为偶数,为了方便描述,取每幅图像所包含的像素点为2n。同时还需注意的是,由于DMA控制器每次是对固定长度的数据进行整块搬运,所以这里m的取值需满足2n能被m整除。
以下为三个平行步骤:
针对上述2n/m个Y分量存储单元,生成2n/m个SGL表项SGLItemY_1——SGLItemY_2n/m,每个表项传输的数据长度为m。
针对上述2n/m个U分量存储单元,生成2n/m个SGL表项SGLItemU_1——SGLItemU_2n/m,每个表项传输的数据长度为m/2。
针对上述2n/m个V分量存储单元,生成2n/m个SGL表项SGLItemV_1——SGLItemV_2n/m,每个表项传输的数据长度为m/2。
将上述6n/m个SGL表项串到一起形成SGL表。
实施例八:
本实施例是实施例七的改进,是实施例七关于视频数据重新排布的步骤的细化。本实施例所使用的视频数据重排布装置和系统,如图15所示,包括:视频分量排布器、排布缓存、IO-DMA控制器,图15下半部分的长条形框是重新排布前的视频数据布局。本实施例采取的是转换操作法将局部分块视频数据排布为交织视频数据,所述的视频数据重新排布的步骤的细化步骤如下,流程如图16所示:
在视频分量排部器内部对输入的分块视频数据进行缓存。
当缓存了m个像素点的视频数据时,开始一次转换操作。
转换时,输入的前m个字节为Y分量存储块,将其转换到交织视频Y分量的对应区域;之后的m/2个字节为U分量块,将其转换到交织视频U分量的对应区域;最后的m/2个字节为V分量块,将其转换到交织视频V分量的对应区域。
转换后的结果输入视频数据编码器,并最终形成编码后的视频信号经由信号端口播出。
最后应说明的是,以上仅用以说明本发明的技术方案而非限制,尽管参照较佳布置方案对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案(比如视频数据重排布装置的结构、形式、各个步骤的前后顺序等)进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (8)
1.一种视频分量数据信息获取的方法,所述方法使用的硬件包括:带有应用程序的视频数据处理主机,系统总线,插接在视频数据处理主机上的带有板卡驱动程序的视频I/O板卡,以及安装在视频I/O板卡上的视频信号解码器、视频数据重排布装置、板载内存、PCIE-DMA控制器,其特征在于所述方法的步骤如下:
视频信号解码的步骤:用于视频信号解码器对信号源中的视频信号进行解码;
视频数据重新排布的步骤:用于视频数据重排布装置将交错视频数据排布为分块视频数据;
分块视频数据存入板载内存的步骤:用于将分块视频数据从视频数据重排布装置中搬运到板载内存中进行存储;
发出分块视频数据准备就绪通知的步骤:用于完成一帧视频图像的分块视频数据在板载内存的缓存后,向应用程序发出数据准备就绪的通知,即I/O板卡通过硬件产生的帧中断通知板卡驱动程序分块视频数据准备就绪,板卡驱动程序立即向视频数据处理主机中的应用程序发出数据准备就绪的通知;
视频数据处理主机提供内存地址的步骤:用于应用程序在接收到视频数据准备就绪通知后,将应用程序事先准备好的视频数据处理主机的内存地址提供给板卡驱动程序;
传输分块视频数据的步骤:用于板卡驱动程序在接收到视频数据处理主机内存地址后,通过PCIE-DMA控制器和系统总线将完整的一帧视频图像的分块视频数据从板载内存搬运到视频数据处理主机内存中,之后回到“发出分块视频数据准备就绪通知的步骤”开始等待新一轮一帧视频图像的分块视频数据的传输。
2.根据权利要求1所述的方法,其特征在于,所述的视频数据重排布装置包括:Y缓存、IO-DMA_Y控制器、U缓存、IO-DMA_U控制器、V缓存、IO-DMA_V控制器,视频数据重新排布的步骤的细化步骤如下:
视频信号解码器依据输入视频的制式信息获取输入视频的宽度W和高度H,并对输入视频进行解码,视频信号解码器在进行视频信号解码时,辨别是Y分量,还是U分量,还是V分量,根据不同的分量进入下列对应的步骤;
如果发现解码出来的视频数据是Y分量,则将其输出到Y缓存,当Y缓存存满时,通知IO-DMA_Y控制器将Y缓存中的视频数据连续地搬运到以Address_Y为首地址的板载内存中;
如果发现解码出来的视频数据是U分量,则将其输出到U缓存,当U缓存存满时,通知IO-DMA_U控制器将U缓存中的视频数据连续搬运到以Address_U为首地址的板载内存中;
如果发现解码出来的视频数据是V分量,则将其输出到V缓存,当V缓存存满时,通知IO-DMA_V控制器将V缓存中的视频数据连续搬运到以Address_V为首地址的板载内存中。
3.根据权利要求2所述的方法,其特征在于,所述的传输分块视频数据的步骤中将完整的一帧分块视频数据从板载内存传递到视频数据处理主机内存中的过程使用SGL表表达数据搬运的源地址和目的地址,所述的SGL表的生成过程包括如下步骤:
以下三个步骤为平行的步骤:
针对Y数据块,将Address_Y和应用程序提供的用于存储Y分量数据的内存地址作为第一个表项内容生成SGLItem1,传输数据的长度为视频输入的宽度W乘以视频输入的高度H个字节;
针对U数据块,将Address_U和应用程序提供的用于存储U分量数据的内存地址作为第二个表项内容生成SGLItem2,传输数据的长度为视频输入的宽度W乘以视频输入的高度H的二分之一个字节;
针对V数据块,将Address_V和应用程序提供的用于存储V分量数据的内存地址作为第三个表项内容生成SGLItem3,传输数据的长度为视频输入的宽度W乘以视频输入的高度H的二分之一个字节;
将SGLItem1、SGLItem2、SGLItem3串到一起形成SGL表。
4.根据权利要求1所述的方法,其特征在于,所述的视频数据重排布装置包括:视频分量排布器、排布缓存、IO-DMA控制器,视频数据重新排布的步骤的细化步骤如下:
在视频分量排部器内部对输入的交错视频数据进行缓存;
当缓存了m个像素点的视频数据时,开始一次转换操作;
转换结果的前m个字节为Y分量块,之后的m/2个字节为U分量块,最后的m/2个字节为V分量块。
5.根据权利要求4所述的方法,其特征在于,所述的传输分块视频数据的步骤中将完整的一帧分块视频数据从板载内存传递到视频数据处理主机内存中的过程使用SGL表表达数据搬运的源地址和目的地址,所述的SGL表的生成过程包括如下步骤:
将板载内存上准备存储分块视频数据的存储单元以m个像素的视频数据为单位,把整帧视频划分到N/m个存储单元中,每个存储单元中的视频数据是各视频分量分块存储的;这里N是每幅图像所包含的像素点个数,同时m的取值需满足N能被m整除,由于所有标准规定的视频制式,其视频分辨率都为偶数,取每幅图像所包含的像素点为2n;
以下为三个平行步骤:
针对每个视频数据存储单元的Y分量数据块,生成2n/m个SGL表项,分别为SGLItemY_1——SGLItemY_2n/m;
针对每个视频数据存储单元的U分量数据块,生成2n/m个SGL表项,分别为SGLItemU_1——SGLItemU_2n/m;
针对每个视频数据存储单元的V分量数据块,生成2n/m个SGL表项,分别为SGLItemV_1——SGLItemV_2n/m;
将上述6n/m个SGL表项串到一起形成SGL表。
6.一种视频分量信息提取的方法,所述方法使用的硬件包括:带有应用程序的视频数据处理主机,系统总线,插接在视频数据处理主机上的带有板卡驱动程序的视频I/O板卡,以及安装在视频I/O板卡上的视频信号编码器、视频数据重排布装置、板载内存、PCIE-DMA控制器,其特征在于所述方法的步骤如下:
通知提取分块视频数据的步骤:用于板卡驱动程序通知应用程序将事先准备好的存储在视频数据处理主机内存中的分块视频数据提供给板卡驱动程序;
分块视频数据传输的步骤:用于板卡驱动程序通过系统总线将分块视频数据从视频数据处理主机的内存传输到视频I/O板卡的板载内存进行存储,等待后续输出;
分块视频数据存入视频数据重排布装置中的步骤:用于当视频I/O板卡的帧中断发生时,将板载内存上的分块视频数据传送到视频数据重排布装置中;
视频数据重新排布的步骤:用于视频数据重排布装置在接收分块视频数据后将其进行重新排布,形成交织视频数据;
编码形成视频信号的步骤:用于将交织视频数据按照视频标准进行视频编码,形成视频信号流;
一帧视频图像完成的步骤:用于视频I/O板卡通过中断通知板卡驱动程序进行下一次视频数据的传输,驱动程序接收到该中断后回到“通知提取分块视频数据的步骤”。
7.根据权利要求6所述的方法,其特征在于,所述的分块视频数据传输的步骤是为创造转换操作法的环境,将完整的一帧分块视频数据从视频数据处理主机内存传递到板载内存中的过程使用SGL表表达数据搬运的源地址和目的地址,所述的SGL表的生成过程包括如下步骤:
将处理主机准备好的视频数据以m个像素所需数据量为单位,分别将Y分量区域、U分量区域、V分量区域划分为N/m个存储单元,每个存储单元分别包含m个Y分量、m/2个U分量和m/2个V分量;这里N是每幅图像所包含的像素点个数,同时m的取值需满足N能被m整除,由于所有标准规定的视频制式,其视频分辨率都为偶数,取每幅图像所包含的像素点为2n;
以下为三个平行步骤:
针对上述2n/m个Y分量存储单元,生成2n/m个SGL表项SGLItemY_1——SGLItemY_2n/m,每个表项传输的数据长度为m;
针对上述2n/m个U分量存储单元,生成2n/m个SGL表项SGLItemU_1——SGLItemU_2n/m,每个表项传输的数据长度为m/2;
针对上述2n/m个V分量存储单元,生成2n/m个SGL表项SGLItemV_1——SGLItemV_2n/m,每个表项传输的数据长度为m/2;
将上述6n/m个SGL表项串到一起形成SGL表。
8.根据权利要求7所述的方法,其特征在于,所述的视频数据重排布装置包括:视频分量排布器、排布缓存、IO-DMA控制器,所述的视频数据重新排布的步骤的细化步骤如下:
在视频分量排部器内部对输入的分块视频数据进行缓存;
当缓存了m个像素点的视频数据时,开始一次转换操作;
转换时,输入的前m个字节为Y分量存储块,将其转换到交织视频Y分量的对应区域,之后的m/2个字节为U分量块,将其转换到交织视频U分量的对应区域,最后的m/2个字节为V分量块,将其转换到交织视频V分量的对应区域;
转换后的结果输入视频数据编码器,并最终形成编码后的视频信号经由信号端口播出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010613477A CN102123275B (zh) | 2010-12-30 | 2010-12-30 | 一种视频分量数据信息获取及提取的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010613477A CN102123275B (zh) | 2010-12-30 | 2010-12-30 | 一种视频分量数据信息获取及提取的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102123275A CN102123275A (zh) | 2011-07-13 |
CN102123275B true CN102123275B (zh) | 2012-10-24 |
Family
ID=44251701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010613477A Active CN102123275B (zh) | 2010-12-30 | 2010-12-30 | 一种视频分量数据信息获取及提取的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102123275B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103596013B (zh) * | 2013-11-19 | 2017-02-15 | 上海高清数字科技产业有限公司 | 新型解码器及解码方法 |
CN105163204B (zh) * | 2015-08-28 | 2018-03-23 | 山东泰信电子股份有限公司 | 一种流媒体文件实时切片系统及方法 |
CN107770468B (zh) * | 2016-08-23 | 2019-12-27 | 北京国基科技股份有限公司 | 一种音视频采集系统及数据存储方法 |
CN113190476A (zh) * | 2021-04-14 | 2021-07-30 | 摩尔线程智能科技(北京)有限责任公司 | 数据传输方法和装置 |
CN117155729A (zh) * | 2022-05-24 | 2023-12-01 | 北京有竹居网络技术有限公司 | 通信方法、系统、装置和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680482A (en) * | 1995-05-17 | 1997-10-21 | Advanced Micro Devices, Inc. | Method and apparatus for improved video decompression by adaptive selection of video input buffer parameters |
CN101198050A (zh) * | 2007-12-29 | 2008-06-11 | 北京中企开源信息技术有限公司 | 一种视频数据处理方法和装置 |
CN101383954A (zh) * | 2007-09-06 | 2009-03-11 | 北京中电华大电子设计有限责任公司 | 一种支持多种音视频标准的媒体处理芯片的实现方法 |
CN101562748A (zh) * | 2009-06-03 | 2009-10-21 | 北京航空航天大学 | 面向视频处理的多数字信号处理器调度优化方法 |
CN101835006A (zh) * | 2009-03-13 | 2010-09-15 | 高平 | 一种数字电视接收设备及其视频数据解码方法 |
-
2010
- 2010-12-30 CN CN201010613477A patent/CN102123275B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680482A (en) * | 1995-05-17 | 1997-10-21 | Advanced Micro Devices, Inc. | Method and apparatus for improved video decompression by adaptive selection of video input buffer parameters |
CN101383954A (zh) * | 2007-09-06 | 2009-03-11 | 北京中电华大电子设计有限责任公司 | 一种支持多种音视频标准的媒体处理芯片的实现方法 |
CN101198050A (zh) * | 2007-12-29 | 2008-06-11 | 北京中企开源信息技术有限公司 | 一种视频数据处理方法和装置 |
CN101835006A (zh) * | 2009-03-13 | 2010-09-15 | 高平 | 一种数字电视接收设备及其视频数据解码方法 |
CN101562748A (zh) * | 2009-06-03 | 2009-10-21 | 北京航空航天大学 | 面向视频处理的多数字信号处理器调度优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102123275A (zh) | 2011-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102668558B (zh) | 无线显示编码器架构 | |
CN101543077B (zh) | 信息处理装置和方法 | |
CN1093669C (zh) | 运动图像对比度增强的直方图均衡装置及其方法 | |
CN102123275B (zh) | 一种视频分量数据信息获取及提取的方法 | |
CN111163318B (zh) | 一种基于反馈优化的人机视觉编码方法和装置 | |
CN102611869A (zh) | 一种面向输出的多屏拼接系统网络传输技术 | |
CN101365138B (zh) | 一种jpeg2000图像压缩处理系统 | |
CN103152573A (zh) | 一种移动终端与智能电视间图像帧传输的方法及系统 | |
EP3635953B1 (en) | Electronic device for high-speed compression processing of feature map of cnn utilizing system and controlling method thereof | |
CN106412473A (zh) | 影像处理装置、影视子系统与影视处理电路 | |
CN102802024A (zh) | 在服务器端实现的转码方法以及转码系统 | |
CN110958431A (zh) | 多路视频压缩后传系统及方法 | |
CN207560231U (zh) | 一种led显示屏网络控制器 | |
CN111083450A (zh) | 车机端图像远程输出方法、装置及系统 | |
CN104581075B (zh) | 基于异构平台的全景视频处理系统及方法 | |
CN104244025A (zh) | 集群转码系统及其方法 | |
CN107360380B (zh) | 一种双码率压缩摄像装置及其上位机解码装置 | |
CN106412588A (zh) | 影像帧处理方法 | |
CN102547291B (zh) | 基于fpga的jpeg2000图像解码装置及方法 | |
Guo et al. | An FPGA implementation of multi-channel video processing and 4K real-time display system | |
CN201974795U (zh) | 一种基于fpga的图像拼接处理装置 | |
CN114866733A (zh) | 一种低延迟视频处理方法、系统及装置 | |
CN105120211B (zh) | 一种视频数据传输方法 | |
CN103414898B (zh) | 一种高分辨率视频采集方法及系统 | |
CN106534774A (zh) | 一种图像传输系统 |
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 |