CN105450986A - 一种Linux下视频处理方法 - Google Patents

一种Linux下视频处理方法 Download PDF

Info

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
Application number
CN201510769092.4A
Other languages
English (en)
Other versions
CN105450986B (zh
Inventor
陈华云
任赋
陈从华
林晓龙
郑福弟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Yaxun Zhilian Technology Co ltd
Original Assignee
Xiamen Yaxon Networks Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Yaxon Networks Co Ltd filed Critical Xiamen Yaxon Networks Co Ltd
Priority to CN201510769092.4A priority Critical patent/CN105450986B/zh
Publication of CN105450986A publication Critical patent/CN105450986A/zh
Application granted granted Critical
Publication of CN105450986B publication Critical patent/CN105450986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture 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下视频处理方法
技术领域
本发明涉及视频处理方法,特别是一种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。
CN201510769092.4A 2015-11-12 2015-11-12 一种Linux下视频处理方法 Active CN105450986B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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数据传输方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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