一种Linux下视频处理方法

文档序号:9691323阅读:1106来源:国知局
一种Linux下视频处理方法
【技术领域】
[0001 ] 本发明涉及视频处理方法,特别是一种Linux下视频处理方法。
【背景技术】
[0002]参照图1所示,当前linux下整体视频处理方法主要包括视频采集、视频处理、视频显示三大步骤,视频采集和显示主要是在Linux内核中进行,使用物理内存地址,视频处理则在Linux应用层中进行,使用虚拟内存地址。
[0003]V4L2是Linux环境下开发视频采集设备驱动程序的一套规范(API),目前在Linux下进行视频采集基本都是使用V4L2接口,其主要流程如下:
第一步,打开视频设备文件,进行视频采集的参数初始化;
第二步,申请若干视频采集的帧缓冲区,并将这些帧缓冲区以MMAP方式从内核空间映射到用户空间,便于应用程序读取/处理视频数据;
第二步,将申请到的帧缓冲区在视频米集输入队列排队,并启动视频米集;
第四步,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
第五,停止视频米集。
[0004]采用现有的视频处理方法,在视频采集流程的第二步申请帧缓冲区的时候,一般申请3-5个缓冲区,每个缓冲区的大小为要采集的帧大小,该缓冲区是在内核中申请的,是物理地址,通过内存映射方法(_ap)将申请到的内核空间帧缓冲区的地址映射到用户空间地址(虚拟地址),这样就可以在应用层的用户地址空间直接处理帧缓冲区的数据(包括增删、查改),但是由于V4L2框架中的分配的物理内存只有一帧图像大小,因此映射后应用层所能使用的也就只能是一帧图像大小的内存,应用层要想处理图像数据,必须另外开辟一份内存(即帧处理区),并把数据拷贝到新内存中,处理完后再拷贝回去,假设每帧图像的大小为500kb,所以在视频采集中开辟的帧缓冲区也为500kb,经过mmap映射到用户地址空间的大小也为500kb,但是这两者是同步的,更新其中的任何一方内容,另一方也会跟着更改,为了对帧进行处理,必须开辟一个新的缓冲区内存,即帧处理内存,把帧缓冲区地址中的内容拷贝到帧处理内存中(拷贝1)进行处理后,再将帧处理区中的内容拷贝回帧缓冲区地址(拷贝2),这里就有了两次拷贝,假设视频处理中每秒25帧,同时接4个摄像头,每秒钟就有了2*25*4=200次的拷贝,拷贝次数太多,大大增加了CPU的消耗,在嵌入式系统有限的CPU资源中,由于CPU处理能力不够,导致视频来不及处理,使得视频的整体处理性能下降。
[0005]有鉴于此,本发明人提出一种Linux下能够降低帧处理中的CPU消耗和提高视频处理性能的方法。

【发明内容】

[0006]本发明的目的在于提供了一种Linux下视频处理方法,其能够降低帧处理中的CPU消耗,提高视频处理性能。
[0007]为实现上述目的,本发明采用的技术方案为:
一种Linux下视频处理方法,其特征在于,包括以下步骤:
51.打开视频设备文件,进行视频采集的参数初始化;
52.在内核空间的物理内存中申请若干视频采集的帧缓冲区,内核空间的每个帧缓冲区分配两帧图像大小的内存,然后将这些帧缓冲区以MMAP方式从内核空间映射到用户空间;
53.在用户空间的虚拟内存中申请帧缓冲区,该用户空间的帧缓冲区同样为两帧图像大小的内存,工作时将该用户空间帧缓冲区的剩余一帧图像大小的内存作为帧处理区;
54.将申请到的内核空间的帧缓冲区在视频采集的输入队列排队,并启动视频采集;
55.驱动开始视频数据的采集,应用程序从视频采集输出队列取出内核空间帧缓冲区的地址,将该帧缓冲区的地址映射到用户空间的虚拟地址中进行视频数据处理,处理完后,将该帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
视频采集的输入队列和输出队列是由Linux内核管理的一个循环队列,与输入队列排队的帧缓冲区可从输出队列取出。
[0008]S6.应用程序将步骤S5中取出的帧缓冲地址发送至显示驱动进行视频显示。
[0009]所述步骤S2中,内核空间的每个帧缓冲区的内存为lOOOkb。
[0010]本发明的有益效果是:
本发明通过对内核中的V4L2框架进行修改,在内核中帧缓冲区分配的物理内存为两帧图像大小,即为原来的两倍内存,从而使映射到用户空间的虚拟内存的存储空间也变为两倍图像大小,而一帧图只需一帧内存,在虚拟空间中便可以分出一个帧缓冲区和一个帧处理区的地址空间,在用户空间进行图形处理时,就只需要把帧缓冲区的帧数据拷贝到帧处理区的空间进行处理,而不需要再从帧处理区拷贝到帧缓冲区,从而减少了CPU的消耗,节省CPU的资源,提高了视频处理能力。
【附图说明】
[0011]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本现有一种Linux下视频处理方法的流程简图;
图2为本发明一种Linux下视频处理方法的流程简图。
【具体实施方式】
[0012]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0013]如图2示,本发明揭示的一种Linux下视频处理方法,其包括以下步骤:
51.打开视频设备文件,进行视频采集的参数初始化;
52.在内核空间的物理内存中申请若干视频采集的帧缓冲区,内核空间的每个帧缓冲区分配两帧图像大小的内存,然后将这些帧缓冲区以MMAP方式从内核空间映射到用户空间; 53.在用户空间的虚拟内存中申请帧缓冲区,该用户空间的帧缓冲区同样为两帧图像大小的内存,工作时将该用户空间帧缓冲区的剩余一帧图像大小的内存作为帧处理区;
54.将申请到的内核空间的帧缓冲区在视频采集的输入队列排队,并启动视频采集;
55.驱动开始视频数据的采集,应用程序从视频采集输出队列取出内核空间帧缓冲区的地址,将该帧缓冲区的地址映射到用户空间的虚拟地址中进行视频数据处理,处理完后,将该帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
56.应用程序将步骤S5中取出的帧缓冲地址发送至显示驱动进行视频显示。
[0014]本实施例中,假定每帧图像均为500kb大小,则内核空间的每个帧缓冲区的内存为1 OOOkb,而用户空间虚拟内存中的帧缓冲区和帧处理区内存为500kb,由于每帧图像的实际大小还是原来的500kb,因此在视频采集的时候,其有效的帧只会占用内核空间帧缓冲区的前500kb大小,还剩下另外的500kb,这里把这剩下的500kb的空间作为帧处理内存来使用,同样针对用户空间中的虚拟地址空间也是只占用前500kb的空间(及用户空间帧缓冲区),剩余500kb的空闲的空间(及用户空间帧处理区),也是作为帧处理使用。
[0015]本发明通过对内核中的V4L2框架进行修改,在内核空间中帧缓冲区分配的物理内存为两帧图像大小,即为原来的两倍内存,从而使映射到用户空间的虚拟内存的存储空间也变为两倍图像大小,而一帧图只需一帧内存,在虚拟空间中便可以分出一个帧缓冲区和一个帧处理区的地址空间,在用户空间进行图形处理时,就只需要把帧缓冲区的帧数据拷贝到帧处理区的空间进行处理,而不需要再从帧处理区拷贝到帧缓冲区,从而减少了CPU的消耗,节省CPU的资源,提高了视频处理能力。
[0016]上述说明示出并描述了本发明的优选实施例,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
【主权项】
1.一种Linux下视频处理方法,其特征在于,包括以下步骤: 51.打开视频设备文件,进行视频采集的参数初始化; 52.在内核空间的物理内存中申请若干视频采集的帧缓冲区,内核空间的每个帧缓冲区分配两帧图像大小的内存,然后将这些帧缓冲区以MMAP方式从内核空间映射到用户空间; 53.在用户空间的虚拟内存中申请帧缓冲区,该用户空间的帧缓冲区同样为两帧图像大小的内存,工作时将该用户空间帧缓冲区的剩余一帧图像大小的内存作为帧处理区; 54.将申请到的内核空间的帧缓冲区在视频采集的输入队列排队,并启动视频采集; 55.驱动开始视频数据的采集,应用程序从视频采集输出队列取出内核空间帧缓冲区的地址,将该帧缓冲区的地址映射到用户空间的虚拟地址中进行视频数据处理,处理完后,将该帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据; 56.应用程序将步骤S5中取出的帧缓冲地址发送至显示驱动进行视频显示。2.根据权利要求1所述的一种Linux下视频处理方法,其特征在于:所述步骤S2中,内核空间的每个帧缓冲区的内存为1 OOOkb。
【专利摘要】本发明公开的一种Linux下视频处理方法,本发明通过对内核中的V4L2框架进行修改,在内核中帧缓冲区分配的物理内存为两帧图像大小,即为原来的两倍内存,从而使映射到用户空间的虚拟内存的存储空间也变为两倍图像大小,而一帧图只需一帧内存,在虚拟空间中便可以分出一个帧缓冲区和一个帧处理区的地址空间,在用户空间进行图形处理时,就只需要把帧缓冲区的帧数据拷贝到帧处理区的空间进行处理,而不需要再从帧处理区拷贝到帧缓冲区,从而减少了CPU的消耗,节省CPU的资源,提高了视频处理能力。
【IPC分类】H04N5/14, H04N7/18
【公开号】CN105450986
【申请号】CN201510769092
【发明人】陈华云, 任赋, 陈从华, 林晓龙, 郑福弟
【申请人】厦门雅迅网络股份有限公司
【公开日】2016年3月30日
【申请日】2015年11月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1