CN105450986A - 一种Linux下视频处理方法 - Google Patents
一种Linux下视频处理方法 Download PDFInfo
- Publication number
- CN105450986A CN105450986A CN201510769092.4A CN201510769092A CN105450986A CN 105450986 A CN105450986 A CN 105450986A CN 201510769092 A CN201510769092 A CN 201510769092A CN 105450986 A CN105450986 A CN 105450986A
- Authority
- CN
- China
- Prior art keywords
- frame buffer
- buffer zone
- video
- frame
- space
- 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
- 238000003672 processing method Methods 0.000 title abstract 2
- 238000000034 method Methods 0.000 claims abstract description 31
- 101000771640 Homo sapiens WD repeat and coiled-coil-containing protein Proteins 0.000 claims description 4
- 102100029476 WD repeat and coiled-coil-containing protein Human genes 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开的一种Linux下视频处理方法,本发明通过对内核中的V4L2框架进行修改,在内核中帧缓冲区分配的物理内存为两帧图像大小,即为原来的两倍内存,从而使映射到用户空间的虚拟内存的存储空间也变为两倍图像大小,而一帧图只需一帧内存,在虚拟空间中便可以分出一个帧缓冲区和一个帧处理区的地址空间,在用户空间进行图形处理时,就只需要把帧缓冲区的帧数据拷贝到帧处理区的空间进行处理,而不需要再从帧处理区拷贝到帧缓冲区,从而减少了CPU的消耗,节省CPU的资源,提高了视频处理能力。
Description
技术领域
本发明涉及视频处理方法,特别是一种Linux下视频处理方法。
背景技术
参照图1所示,当前linux下整体视频处理方法主要包括视频采集、视频处理、视频显示三大步骤,视频采集和显示主要是在Linux内核中进行,使用物理内存地址,视频处理则在Linux应用层中进行,使用虚拟内存地址。
V4L2是Linux环境下开发视频采集设备驱动程序的一套规范(API),目前在Linux下进行视频采集基本都是使用V4L2接口,其主要流程如下:
第一步,打开视频设备文件,进行视频采集的参数初始化;
第二步,申请若干视频采集的帧缓冲区,并将这些帧缓冲区以MMAP方式从内核空间映射到用户空间,便于应用程序读取/处理视频数据;
第三步,将申请到的帧缓冲区在视频采集输入队列排队,并启动视频采集;
第四步,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
第五,停止视频采集。
采用现有的视频处理方法,在视频采集流程的第二步申请帧缓冲区的时候,一般申请3-5个缓冲区,每个缓冲区的大小为要采集的帧大小,该缓冲区是在内核中申请的,是物理地址,通过内存映射方法(mmap)将申请到的内核空间帧缓冲区的地址映射到用户空间地址(虚拟地址),这样就可以在应用层的用户地址空间直接处理帧缓冲区的数据(包括增删、查改),但是由于V4L2框架中的分配的物理内存只有一帧图像大小,因此映射后应用层所能使用的也就只能是一帧图像大小的内存,应用层要想处理图像数据,必须另外开辟一份内存(即帧处理区),并把数据拷贝到新内存中,处理完后再拷贝回去,假设每帧图像的大小为500kb,所以在视频采集中开辟的帧缓冲区也为500kb,经过mmap映射到用户地址空间的大小也为500kb,但是这两者是同步的,更新其中的任何一方内容,另一方也会跟着更改,为了对帧进行处理,必须开辟一个新的缓冲区内存,即帧处理内存,把帧缓冲区地址中的内容拷贝到帧处理内存中(拷贝1)进行处理后,再将帧处理区中的内容拷贝回帧缓冲区地址(拷贝2),这里就有了两次拷贝,假设视频处理中每秒25帧,同时接4个摄像头,每秒钟就有了2*25*4=200次的拷贝,拷贝次数太多,大大增加了CPU的消耗,在嵌入式系统有限的CPU资源中,由于CPU处理能力不够,导致视频来不及处理,使得视频的整体处理性能下降。
有鉴于此,本发明人提出一种Linux下能够降低帧处理中的CPU消耗和提高视频处理性能的方法。
发明内容
本发明的目的在于提供了一种Linux下视频处理方法,其能够降低帧处理中的CPU消耗,提高视频处理性能。
为实现上述目的,本发明采用的技术方案为:
一种Linux下视频处理方法,其特征在于,包括以下步骤:
S1.打开视频设备文件,进行视频采集的参数初始化;
S2.在内核空间的物理内存中申请若干视频采集的帧缓冲区,内核空间的每个帧缓冲区分配两帧图像大小的内存,然后将这些帧缓冲区以MMAP方式从内核空间映射到用户空间;
S3.在用户空间的虚拟内存中申请帧缓冲区,该用户空间的帧缓冲区同样为两帧图像大小的内存,工作时将该用户空间帧缓冲区的剩余一帧图像大小的内存作为帧处理区;
S4.将申请到的内核空间的帧缓冲区在视频采集的输入队列排队,并启动视频采集;
S5.驱动开始视频数据的采集,应用程序从视频采集输出队列取出内核空间帧缓冲区的地址,将该帧缓冲区的地址映射到用户空间的虚拟地址中进行视频数据处理,处理完后,将该帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
视频采集的输入队列和输出队列是由Linux内核管理的一个循环队列,与输入队列排队的帧缓冲区可从输出队列取出。
S6.应用程序将步骤S5中取出的帧缓冲地址发送至显示驱动进行视频显示。
所述步骤S2中,内核空间的每个帧缓冲区的内存为1000kb。
本发明的有益效果是:
本发明通过对内核中的V4L2框架进行修改,在内核中帧缓冲区分配的物理内存为两帧图像大小,即为原来的两倍内存,从而使映射到用户空间的虚拟内存的存储空间也变为两倍图像大小,而一帧图只需一帧内存,在虚拟空间中便可以分出一个帧缓冲区和一个帧处理区的地址空间,在用户空间进行图形处理时,就只需要把帧缓冲区的帧数据拷贝到帧处理区的空间进行处理,而不需要再从帧处理区拷贝到帧缓冲区,从而减少了CPU的消耗,节省CPU的资源,提高了视频处理能力。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本现有一种Linux下视频处理方法的流程简图;
图2为本发明一种Linux下视频处理方法的流程简图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图2示,本发明揭示的一种Linux下视频处理方法,其包括以下步骤:
S1.打开视频设备文件,进行视频采集的参数初始化;
S2.在内核空间的物理内存中申请若干视频采集的帧缓冲区,内核空间的每个帧缓冲区分配两帧图像大小的内存,然后将这些帧缓冲区以MMAP方式从内核空间映射到用户空间;
S3.在用户空间的虚拟内存中申请帧缓冲区,该用户空间的帧缓冲区同样为两帧图像大小的内存,工作时将该用户空间帧缓冲区的剩余一帧图像大小的内存作为帧处理区;
S4.将申请到的内核空间的帧缓冲区在视频采集的输入队列排队,并启动视频采集;
S5.驱动开始视频数据的采集,应用程序从视频采集输出队列取出内核空间帧缓冲区的地址,将该帧缓冲区的地址映射到用户空间的虚拟地址中进行视频数据处理,处理完后,将该帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
S6.应用程序将步骤S5中取出的帧缓冲地址发送至显示驱动进行视频显示。
本实施例中,假定每帧图像均为500kb大小,则内核空间的每个帧缓冲区的内存为1000kb,而用户空间虚拟内存中的帧缓冲区和帧处理区内存为500kb,由于每帧图像的实际大小还是原来的500kb,因此在视频采集的时候,其有效的帧只会占用内核空间帧缓冲区的前500kb大小,还剩下另外的500kb,这里把这剩下的500kb的空间作为帧处理内存来使用,同样针对用户空间中的虚拟地址空间也是只占用前500kb的空间(及用户空间帧缓冲区),剩余500kb的空闲的空间(及用户空间帧处理区),也是作为帧处理使用。
本发明通过对内核中的V4L2框架进行修改,在内核空间中帧缓冲区分配的物理内存为两帧图像大小,即为原来的两倍内存,从而使映射到用户空间的虚拟内存的存储空间也变为两倍图像大小,而一帧图只需一帧内存,在虚拟空间中便可以分出一个帧缓冲区和一个帧处理区的地址空间,在用户空间进行图形处理时,就只需要把帧缓冲区的帧数据拷贝到帧处理区的空间进行处理,而不需要再从帧处理区拷贝到帧缓冲区,从而减少了CPU的消耗,节省CPU的资源,提高了视频处理能力。
上述说明示出并描述了本发明的优选实施例,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (2)
1.一种Linux下视频处理方法,其特征在于,包括以下步骤:
S1.打开视频设备文件,进行视频采集的参数初始化;
S2.在内核空间的物理内存中申请若干视频采集的帧缓冲区,内核空间的每个帧缓冲区分配两帧图像大小的内存,然后将这些帧缓冲区以MMAP方式从内核空间映射到用户空间;
S3.在用户空间的虚拟内存中申请帧缓冲区,该用户空间的帧缓冲区同样为两帧图像大小的内存,工作时将该用户空间帧缓冲区的剩余一帧图像大小的内存作为帧处理区;
S4.将申请到的内核空间的帧缓冲区在视频采集的输入队列排队,并启动视频采集;
S5.驱动开始视频数据的采集,应用程序从视频采集输出队列取出内核空间帧缓冲区的地址,将该帧缓冲区的地址映射到用户空间的虚拟地址中进行视频数据处理,处理完后,将该帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;
S6.应用程序将步骤S5中取出的帧缓冲地址发送至显示驱动进行视频显示。
2.根据权利要求1所述的一种Linux下视频处理方法,其特征在于:所述步骤S2中,内核空间的每个帧缓冲区的内存为1000kb。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510769092.4A CN105450986B (zh) | 2015-11-12 | 2015-11-12 | 一种Linux下视频处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510769092.4A CN105450986B (zh) | 2015-11-12 | 2015-11-12 | 一种Linux下视频处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105450986A true CN105450986A (zh) | 2016-03-30 |
CN105450986B CN105450986B (zh) | 2020-02-07 |
Family
ID=55560712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510769092.4A Active CN105450986B (zh) | 2015-11-12 | 2015-11-12 | 一种Linux下视频处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105450986B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197038A (zh) * | 2018-02-01 | 2018-06-22 | 深圳市风云实业有限公司 | 一种Linux数据传输方法、装置和用户终端 |
CN110728773A (zh) * | 2019-10-15 | 2020-01-24 | 百度在线网络技术(北京)有限公司 | 一种图像存储的方法、装置和电子设备 |
WO2020125572A1 (zh) * | 2018-12-17 | 2020-06-25 | 中兴通讯股份有限公司 | 摄像头共享方法及装置 |
CN111586488A (zh) * | 2020-06-09 | 2020-08-25 | 创新奇智(北京)科技有限公司 | 一种视频流处理方法、装置、电子设备及存储介质 |
CN115101025A (zh) * | 2022-07-13 | 2022-09-23 | 珠海昇生微电子有限责任公司 | 一种支持虚拟帧缓冲的lcd控制电路及其控制方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070061492A1 (en) * | 2005-08-05 | 2007-03-15 | Red Hat, Inc. | Zero-copy network i/o for virtual hosts |
CN101247266A (zh) * | 2008-03-21 | 2008-08-20 | 深圳国人通信有限公司 | 以太网中进行数据处理的方法 |
CN102185936A (zh) * | 2011-06-23 | 2011-09-14 | 上海牙木通讯技术有限公司 | 一种基于linux操作系统的DNS服务系统和方法 |
CN102194010A (zh) * | 2011-06-16 | 2011-09-21 | 华中科技大学 | 虚拟文件系统碎片的零拷贝整理方法 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
CN103617125A (zh) * | 2013-11-27 | 2014-03-05 | 曙光信息产业(北京)有限公司 | 内存空间的管理方法和装置 |
CN104239249A (zh) * | 2014-09-16 | 2014-12-24 | 国家计算机网络与信息安全管理中心 | Pci-e零拷贝dma数据传输方法 |
-
2015
- 2015-11-12 CN CN201510769092.4A patent/CN105450986B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070061492A1 (en) * | 2005-08-05 | 2007-03-15 | Red Hat, Inc. | Zero-copy network i/o for virtual hosts |
CN101247266A (zh) * | 2008-03-21 | 2008-08-20 | 深圳国人通信有限公司 | 以太网中进行数据处理的方法 |
CN102194010A (zh) * | 2011-06-16 | 2011-09-21 | 华中科技大学 | 虚拟文件系统碎片的零拷贝整理方法 |
CN102185936A (zh) * | 2011-06-23 | 2011-09-14 | 上海牙木通讯技术有限公司 | 一种基于linux操作系统的DNS服务系统和方法 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
CN103617125A (zh) * | 2013-11-27 | 2014-03-05 | 曙光信息产业(北京)有限公司 | 内存空间的管理方法和装置 |
CN104239249A (zh) * | 2014-09-16 | 2014-12-24 | 国家计算机网络与信息安全管理中心 | Pci-e零拷贝dma数据传输方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197038A (zh) * | 2018-02-01 | 2018-06-22 | 深圳市风云实业有限公司 | 一种Linux数据传输方法、装置和用户终端 |
WO2020125572A1 (zh) * | 2018-12-17 | 2020-06-25 | 中兴通讯股份有限公司 | 摄像头共享方法及装置 |
CN110728773A (zh) * | 2019-10-15 | 2020-01-24 | 百度在线网络技术(北京)有限公司 | 一种图像存储的方法、装置和电子设备 |
CN111586488A (zh) * | 2020-06-09 | 2020-08-25 | 创新奇智(北京)科技有限公司 | 一种视频流处理方法、装置、电子设备及存储介质 |
CN115101025A (zh) * | 2022-07-13 | 2022-09-23 | 珠海昇生微电子有限责任公司 | 一种支持虚拟帧缓冲的lcd控制电路及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105450986B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105450986A (zh) | 一种Linux下视频处理方法 | |
CN104025050A (zh) | 在图形处理单元上虚拟机之间变化 | |
US10635468B2 (en) | Displaying graphics for local virtual machine by allocating and mapping textual buffer | |
CN107527317B (zh) | 基于图像处理的数据传输系统 | |
US8094161B2 (en) | Virtualization of graphics resources | |
US8752064B2 (en) | Optimizing communication of system call requests | |
US8089488B2 (en) | Virtualization of graphics resources | |
US7940276B2 (en) | Virtualization of graphics resources | |
CN105487848B (zh) | 一种3d应用的显示刷新方法及系统 | |
US20230401159A1 (en) | Memory pools in a memory model for a unified computing system | |
US9584628B2 (en) | Zero-copy data transmission system | |
WO2019127941A1 (zh) | 手写输入内容的显示方法、电子设备及计算机存储介质 | |
KR20150072442A (ko) | 홈 게이트웨이와 스마트 단말의 통합 시스템 및 그 통신 방법 | |
WO2014051781A1 (en) | Techniques for dynamic physical memory partitioning | |
CN110322390B (zh) | 用于控制处理的方法和系统 | |
CN105335309B (zh) | 一种数据传输方法及计算机 | |
WO2013066572A2 (en) | Remote direct memory access adapter state migration in a virtual environment | |
CN106339061A (zh) | 一种移动终端及其运行应用程序的方法 | |
KR102540754B1 (ko) | 가상화를 위한 gpu 작업 컨테이너로서의 vmid | |
CN103324532A (zh) | 虚拟机的动态迁移方法及系统 | |
JP2017525047A (ja) | 低電力コンピュータイメージング | |
US7308565B2 (en) | Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions | |
WO2018103022A1 (zh) | 帧缓存实现方法、装置、电子设备和计算机程序产品 | |
CN112422832B (zh) | 图像数据的传输方法、移动终端及存储介质 | |
CN112801856A (zh) | 数据处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 361009 Xiamen Torch High tech Zone Software Park Innovation Building C Area 303-E, Xiamen, Fujian Province Patentee after: Xiamen Yaxun Zhilian Technology Co.,Ltd. Country or region after: China Address before: 361009 No.46, guanri Road, phase II, software park industrial base, Xiamen City, Fujian Province Patentee before: XIAMEN YAXON NETWORK Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |