CN104822048B - 基于达芬奇技术的多格式码流显示和存储装置 - Google Patents
基于达芬奇技术的多格式码流显示和存储装置 Download PDFInfo
- Publication number
- CN104822048B CN104822048B CN201510182073.1A CN201510182073A CN104822048B CN 104822048 B CN104822048 B CN 104822048B CN 201510182073 A CN201510182073 A CN 201510182073A CN 104822048 B CN104822048 B CN 104822048B
- Authority
- CN
- China
- Prior art keywords
- data
- video
- threads
- steps
- coding
- 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
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种基于达芬奇技术的多格式码流显示和存储装置,核心硬件部件采用视频CCD采集芯片和多核芯片,多核芯片采用ARM核和DSP核或编解码协处理器;将视频CCD采集芯片获得的数据接入到多核芯片中,由DSP核或编解码协处理器完成视频数据的编码,最终通过ARM核的控制完成数据流的正确传递和操作;软件框架部分采用多线程配合管道工作的方案,三个线程依次是Capture线程、Video线程和Writer线程,三个线程之间通过管道的方式进行数据通信,一共申请了四个管道,每个管道在初始化时都分别申请一个读取端和一个写入端。本发明有效满足视频监控图像实时显示、编码发送以及存储备份的需求。
Description
技术领域
本发明涉及视频监控领域的多格式码流装置,特别涉及一种基于达芬奇技术的适用于实时视频监控场景的多格式码流显示和存储装置。
背景技术
近年来,国内提出了建设“平安城市”的概念,平安城市是一个特大型、综合性非常强的管理系统,不仅需要满足治安管理、城市管理、交通管理、应急指挥等需求,而且还要考虑报警、门禁等配套系统的集成以及与广播系统的联动,同时还要兼顾灾难事故预警、安全生产监控等方面对图像监控的需求,其中至关重要的一环就是对图像监控画面的显示以及存储。而在视频监控系统中,视频数据的采集、编码、传输等关键技术都在视频监控前端装置中实现。
发明内容
为了克服现有技术无法满足视频监控图像实时显示、编码发送以及存储备份的需求的不足,本发明提供一种有效满足视频监控图像实时显示、编码发送以及存储备份的需求的基于达芬奇技术的多格式码流显示和存储装置。
本发明解决其技术问题所采用的技术方案是:
一种基于达芬奇技术的多格式码流显示和存储装置,所述装置的核心硬件部件采用视频CCD采集芯片和多核芯片,所述多核芯片采用ARM核和DSP核或编解码协处理器;
将视频CCD采集芯片获得的数据接入到多核芯片中,由DSP核或编解码协处理器完成视频数据的编码,最终通过ARM核的控制,完成数据流的正确传递和操作;
所述装置的软件框架部分采用多线程配合管道工作的方案,三个线程依次是Capture线程、Video线程和Writer线程,它们分别完成视频数据的采集,编码以及存储,三个线程之间通过管道的方式进行数据通信,一共申请了四个管道,每个管道在初始化时都分别申请一个读取端和一个写入端。
进一步,所述Capture线程在自己的循环主体中,通过V4L2驱动接口采集到D1分辨率大小YUV420SP格式的一帧视频画面数据,并在被配置为continues模式的Resizer模块的配合下,同时得到一帧CIF分辨率大小YUV420SP格式的和上述画面内容相同的视频数据,再对此帧数据进行适当的裁剪得到一帧QVGA分辨率大小YUV420SP格式的数据,最后同样通过V4L2驱动接口显示符合液晶屏分辨率的视频数据。
再进一步,所述视频数据的编码,配置所需的编码引擎文件encode.cfg,应用程序通过配置cfg文件之后,只要调用API即可开启数据编码。
更进一步,所述三个线程执行顺序如下:Capture线程:C1,C2分别从hCapture句柄处获取存有采集到的一帧原始数据的缓存(hCapBuf),从hDisplay获取可供显示数据写入的缓存(hDisBuf),C3将hCapBuf数据写入缓存hDstBuf,C4将存有原始数据的缓存指针写入到hOutFifo,并向Video线程发出数据编码请求。C5则将hCapBuf数据写入hDisBuf缓存,C6向hDisplay输入需要显示的数据,hDisplay负责将数据输出到LCD显示;C7从hInFifo管道读取由Video线程写入的缓存指针,C8告知hCapture句柄,Capture线程已经完成一次操作,等待hCapture句柄再次捕获一帧原始数据;
Video线程:V1从Capture线程读取存有数据的缓存的指针,V2从hOutFifo管道读取由Writer线程写入的缓存指针,随后Video线程经过V3,V4步骤得到了存有编码数据的缓存,并将该缓存指针写入hInFifo管道,向Writer线程发起下一次数据备份的请求;
Writer线程:W1从Video线程读取存有数据的缓存的指针,W2将数据写入到文件,W3将缓存指针写回hOutFifo管道。
本发明的技术构思为:TI公司推出的达芬奇技术是一组专门为高效和生动的数字视频而设计的基于DSP的SOC(片上系统)处理器解决方案,适用于数码摄像机、高级医疗成像装置、便携式视频播放器视频应用。满足数字视频终端装置的各种价格、性能和功能要求。两者的结合能大大提升网络视频监控系统的效率以及性能,具有较高的工程意义和市场价值。
本发明的多格式码流视频监控前端装置,它支持三种不同的数字码流,分别实现三种不同的功能,第一种数字码流实现D1(720*576)分辨率大小编码数据的本地存储备份,第二种数字码流实现CIF(352*288)分辨率大小编码数据的同步网络上传,第三种数字码流实现QVGA(320*240)分辨率大小原始数据的实时显示。
本发明的有益效果主要表现在:(1)结合摄像头以及达芬奇系列芯片构成的视频采集前端装置,能采集更高清晰度的视频数据;(2)对于视频压缩功能,采用线程同步技术和达芬奇芯片的特点,实现较高的视频压缩率和较低的功耗;(3)实时显示采集画面,可以提供更具便利性的视频预览功能,综上,该系统具有门槛低、覆盖面广、实时性高网络化、经济实用、清晰度高等优点
附图说明
图1是基于达芬奇技术的多格式码流显示和存储装置的软件框架设计图。
图2是VPFE硬件模块多数据管道图。
图3是VPBE硬件模块数据管道图。
图4是Capture线程数据流图。
图5是Video线程数据流图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图5,一种基于达芬奇技术的多格式码流显示和存储装置,所述装置的核心硬件部件采用视频CCD(Charge-coupled Device,电荷耦合装置)采集芯片和多核芯片,所述多核芯片采用ARM(Advanced RISC Machines,嵌入式系统)核+DSP(DigitalSignal Processor,数字信号处理)核或编解码协处理器;
将视频采集芯片获得的数据接入到多核芯片中,由DSP核或编解码协处理器完成视频数据的编码,如采用标准的H.264编码技术,最终通过ARM核的控制,完成数据流的正确传递和其他必要操作,这种方案成本较低,性价比较高,为后续大规模生产。
所述主体软件框架部分采用多线程配合管道工作的方案进行设计,三个主要线程依次是Capture,Video,Writer线程,它们分别完成视频数据的采集,编码以及存储。三个主要线程之间通过管道的方式进行数据通信,一共申请了四个管道,每个管道在初始化时都分别申请一个读取端和一个写入端。
所述Capture线程在自己的循环主体中,通过V4L2(video for linux2)驱动接口采集到D1分辨率大小YUV420SP格式的一帧视频画面数据,并在被配置为continues模式的Resizer模块的配合下,同时得到一帧CIF分辨率大小YUV420SP格式的和上述画面内容相同的视频数据,再对此帧数据进行适当的裁剪得到一帧QVGA分辨率大小YUV420SP格式的数据,最后同样通过V4L2驱动接口显示符合液晶屏分辨率的视频数据。
在数据编码方面,配置所需的编码引擎文件encode.cfg,由于达芬奇软件框架是一个高度模块化的编程框架,达芬奇软件的功能实现都已封装成模块,应用程序通过配置cfg文件之后,只要调用API即可开启数据编码。
参照图1,各线程执行顺序如下:Capture线程:C1,C2分别从hCapture句柄处获取存有采集到的一帧原始数据的缓存(hCapBuf),从hDisplay获取可供显示数据写入的缓存(hDisBuf),C3将hCapBuf数据写入缓存hDstBuf,C4将存有原始数据的缓存指针写入到hOutFifo,并向Video线程发出数据编码请求。C5则将hCapBuf数据写入hDisBuf缓存,C6向hDisplay输入需要显示的数据,hDisplay负责将数据输出到LCD显示。C7从hInFifo管道读取由Video线程写入的缓存指针,C8告知hCapture句柄,Capture线程已经完成一次操作,等待hCapture句柄再次捕获一帧原始数据。
Video线程:V1从Capture线程读取存有数据的缓存的指针,V2从hOutFifo管道读取由Writer线程写入的缓存指针,随后Video线程经过V3,V4步骤得到了存有编码数据的缓存,并将该缓存指针写入hInFifo管道,向Writer线程发起下一次数据备份的请求。
Writer线程:W1从Video线程读取存有数据的缓存的指针,W2将数据写入到文件,W3将缓存指针写回hOutFifo管道。
达芬奇系列芯片上提供了一个视频处理子系统硬件模块(Video ProcessingSubsystem,VPSS),用于视频数据的实时采集、播放等功能。VPSS模块内部集成了一个视频处理前端硬件模块(Video Processing Front End,VPFE)和一个视频处理后端硬件模块(Video Processing Back End,VPBE),VPFE模块控制接入的外部图像采集装置,参照图像传感器,视频解码器等,本文设计的前端装置接入了TVP5151视频解码器。VPBE模块则控制接入的显示装置,如标清的模拟电视显示器,数字的LCD液晶显示屏等,本发明设计的系统接入了RGB565LCD液晶显示屏。此外,VPSS模块还集成了内存缓存区和DMA(直接内存访问)控制器,它能有效得利用DDR2或mDDR来控制突发带宽。
VPFE采集驱动通过标准的V4L2(Video For Linux2)接口将底层硬件的功能暴露给了上层应用程序,这样以来,应用程序就能通过控制标准V4L2装置(如/dev/Video0)来获取由连接到VPFE模块的视频解码器(如TVP5151)采集到的一帧原始数据,VPFE硬件模块支持以下两种不同的数据管道,参照图2。
图2显示了两路数据通道,一路输入接口通过IPIPE接入到SDRAM,所有型号的SoC都支持这个通道。另外一路输入接口通过IPIPE接入到图像处理单元,并最终从Resizer输出两种不同分辨率大小的视频数据到SDRAM,从RSZ-A输出的是原始分辨率大小的图像,用于后续的数据编码,从RSZ-B输出的是较小分辨率的图像,用于后续的实时显示。
为了实现前文提到的视频实时显示功能,我们通过VPFE采集驱动将VPFE硬件模块配置成第二种数据流通道采集方式。
VPBE显示驱动由更底层的V4L2驱动和FB(Frame Buffer)驱动构成,当内核加载V4L2驱动时,它会向内核注册/dev/Video2和/dev/Video3这两个装置,而当内核加载FB驱动时,它会向内核注册/dev/fb/0,/dev/fb/1,/dev/fb/2,/dev/fb/3这四个装置,这几个注册的装置都对应了它们所能控制的图层,对应关系参照表1。
表1
我们可以通过接口直接控制当VPBE驱动被加载时它会向内核注册的装置,这样就能间接得控制是否开启相应图层以及开启后又受哪一装置控制,这里我们通过该接口,将VID0图层配置为受/dev/Video2控制,该图层用于显示我们采集到的视频数据,而OSD0图层则配置为受/dev/fb/0装置控制,该图层用于显示QT等UI交互界面,其余层保持关闭状态。
VID0图层的数据和VID1图层的数据都会依次经过VPBE硬件模块中的OSD(On-Screen Display)模块和ENC(Encoder)模块,最终由DAC(Digital Analog Controller)模块输出模拟信号或者由LCD控制器输出数字信号,数据管道参照图3。
在前文中提到,我们将LCD液晶屏接入到了VPBE硬件模块,所以这里我们通过VPBE显示驱动将VPBE硬件模块配置成视频数据由VID0图层输入,并最终通过LCD控制器输出到LCD液晶屏上。
在VPFE采集驱动将VPFE硬件模块配置为双分辨率数据流的前提下,我们将应用层程序设计为一路数据流用于视频实时显示,另外一路数据流用于视频编码,除此之外我们还可以将用于实时显示的视频数据用于同步网络上传,重新设计的Capture线程数据流程图参照图4。
图4所示为三路不同格式的码流,第一路数据流:hCapture->hCapBuf->hDstBuf(D1:720x576)hOutFifo,用于视频编码存储。第二路数据流:hCapture->hCapBuf->hRzbBuf->hDisBuf(QVGA:320x240)hDisplay,用于视频实时显示。第三路数据流:hCapture->hCapBuf->hRzbBuf(CIF:352x288)hOutFifo,用于视频编码上传。
hCapBuf缓存用于存放VPFE采集驱动采集到的原始视频数据,其存放着736x576大小的数据,hDstBuf缓存中的数据用于供后续视频编码存储,其存放着D1:720x576大小的数据,hDisBuf缓存中的数据用于供后续视频显示,其存放着QVGA:320x240大小的数据,hRzbBuf缓存中的数据用于供后续视频编码上传,其存放着CIF:352x288大小的一帧画面数据。
原始视频数据的编解码需要用到达芬奇软件框架的Codec Engine(编解码引擎)技术来实现。Codec Engine定义了一组VISA(Video,Image,Speech,Audio)APIs接口供应用程序调用。DM365的高清视频协处理器(HDVICP)封装了相应的编解码算法,ARM处理器中的应用程序可以通过VISA-APIs接口对编解码算法进行调用。ARM处理器负责执行应用程序,视频协处理器负责执行编解码算法,这样不仅大大降低了ARM处理器的CPU占用率,还能提高编解码的效率。本文采用H.264编码标准进行编码,需要调用相应的H.264算法实例。
H.264是一种高性能的视频编解码标准,继承了H.263和MPEG1/2/4视频编码器的优点。H.264标准中定义了两个层次:视频编码层(VCL)和网络抽象层(NAL),VCL负责高效的数字视频数据压缩,NAL提供适当的接口对数据进行打包和传送。
为了得到H.264格式的视频流,我们需要配置alg_server.cfg文件来实现对已经编译实现的算法的调用,文件配置如下:
var H264ENC=xdc.useModule('ti.sdo.codecs.h264enc.ce.H264ENC');//指定调用的算法
var myEngine=Engine.create("alg_server",[{name:"h264enc",mod:H264ENC,local:true,groupId:1}]);//创建引擎实例
在应用程序中能调用的接口函数有:VIDENC1_create、VIDENC1_control、VIDENC1_process和VIDENC1_delete,它们分别负责编码实例的创建,控制,运行以及最终的清除。
我们对Video线程的设计是基于Capture线程的,Capture线程向Video线程输入两路数据流,一路CIF:352x288大小的数据,一路D1:720x576大小的数据,我们需要分别对这两路数据进行H264标准的编码。重新设计的Video线程参照图5。
Claims (1)
1.一种基于达芬奇技术的多格式码流显示和存储装置,其特征在于:所述装置的核心硬件部件采用视频CCD采集芯片和多核芯片,所述多核芯片采用ARM核和DSP核或编解码协处理器;
将视频CCD采集芯片获得的数据接入到多核芯片中,由DSP核或编解码协处理器完成视频数据的编码,最终通过ARM核的控制,完成数据流的正确传递和操作;
所述装置的软件框架部分采用多线程配合管道工作的方案,三个线程依次是Capture线程、Video线程和Writer线程,它们分别完成视频数据的采集,编码以及存储,三个主要线程之间通过管道的方式进行数据通信,一共申请了四个管道,每个管道在初始化时都分别申请一个读取端和一个写入端;
所述Capture线程在自己的循环主体中,通过V4L2驱动接口采集到D1分辨率大小YUV420SP格式的一帧视频画面数据,并在被配置为continues模式的Resizer模块的配合下,同时得到一帧CIF分辨率大小YUV420SP格式的和上述画面内容相同的视频数据,再对此帧数据进行适当的裁剪得到一帧QVGA分辨率大小YUV420SP格式的数据,最后同样通过V4L2驱动接口显示符合液晶屏分辨率的视频数据;
所述视频数据的编码,配置所需的编码引擎文件encode.cfg,应用程序通过配置cfg文件之后,只要调用API即可开启数据编码;所述三个线程执行顺序如下:Capture线程:C1步骤,C2步骤分别从hCapture句柄处获取存有采集到的一帧原始数据的缓存hCapBuf,从hDisplay获取可供显示数据写入的缓存hDisBuf,C3步骤将hCapBuf数据写入缓存hDstBuf,C4步骤将存有原始数据的缓存指针写入到hOutFifo,并向Video线程发出数据编码请求,C5步骤则将hCapBuf数据写入hDisBuf缓存,C6步骤向hDisplay输入需要显示的数据,hDisplay负责将数据输出到LCD显示;C7步骤从hInFifo管道读取由Video线程写入的缓存指针,C8步骤告知hCapture句柄,Capture线程已经完成一次操作,等待hCapture句柄再次捕获一帧原始数据;
Video线程:V1步骤从Capture线程读取存有数据的缓存的指针,V2步骤从hOutFifo管道读取由Writer线程写入的缓存指针,随后Video线程经过V3步骤,V4步骤得到了存有编码数据的缓存,并将该缓存指针写入hInFifo管道,向Writer线程发起下一次数据备份的请求;
Writer线程:W1步骤从Video线程读取存有数据的缓存的指针,W2步骤将数据写入到文件,W3步骤将缓存指针写回hOutFifo管道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510182073.1A CN104822048B (zh) | 2015-04-16 | 2015-04-16 | 基于达芬奇技术的多格式码流显示和存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510182073.1A CN104822048B (zh) | 2015-04-16 | 2015-04-16 | 基于达芬奇技术的多格式码流显示和存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104822048A CN104822048A (zh) | 2015-08-05 |
CN104822048B true CN104822048B (zh) | 2018-10-23 |
Family
ID=53732199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510182073.1A Active CN104822048B (zh) | 2015-04-16 | 2015-04-16 | 基于达芬奇技术的多格式码流显示和存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104822048B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105263023B (zh) * | 2015-10-26 | 2018-08-03 | 西安电子科技大学 | 基于高速解码平台的网络码流实时接收方法 |
CN106454280B (zh) * | 2016-12-03 | 2023-05-30 | 河池学院 | 一种基于h.264网络视频传输系统进行视频传输的方法 |
CN109474784B (zh) * | 2018-11-21 | 2020-07-17 | 维沃移动通信有限公司 | 一种预览图像处理方法及终端设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103442204A (zh) * | 2013-08-08 | 2013-12-11 | 浙江工业大学 | 一种基于dm365的网络视频传输系统及方法 |
-
2015
- 2015-04-16 CN CN201510182073.1A patent/CN104822048B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103442204A (zh) * | 2013-08-08 | 2013-12-11 | 浙江工业大学 | 一种基于dm365的网络视频传输系统及方法 |
Non-Patent Citations (2)
Title |
---|
基于DM365的网络视频监控终端的设计与实现;戴鹏军;《中国优秀硕士学位论文全文数据库》;20130619;摘要,第3.3,3.4.1,4.4.2,4.2.3,4.3.1,4.4.2节,图4-8,5-2, * |
基于DM365的高清视频编码传输系统的设计;刘林;《中国优秀硕士学位论文全文数据库》;20110803;第5.2.1,5.4.3节,图5.2,5.14 * |
Also Published As
Publication number | Publication date |
---|---|
CN104822048A (zh) | 2015-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104822048B (zh) | 基于达芬奇技术的多格式码流显示和存储装置 | |
CN103609117B (zh) | 编码和解码图像的方法及装置 | |
CN103442204A (zh) | 一种基于dm365的网络视频传输系统及方法 | |
WO2016110031A1 (zh) | 数据流的解码方法及装置 | |
CN203632768U (zh) | 一种画面拼接服务器 | |
CN114040251A (zh) | 音视频播放方法、系统、存储介质及计算机程序产品 | |
CN104980682A (zh) | 一种智能动态高清视频传输系统 | |
CN105208394B (zh) | 一种实时数字图像压缩预测方法与系统 | |
CN106331612A (zh) | 智能网络视频监控系统 | |
CN102547291B (zh) | 基于fpga的jpeg2000图像解码装置及方法 | |
CN202210851U (zh) | 一种用于标清和高清音视频编解码的控制装置 | |
CN106412588A (zh) | 影像帧处理方法 | |
CN106412473A (zh) | 影像处理装置、影视子系统与影视处理电路 | |
CN101184244A (zh) | 一种视频编码的方法和系统 | |
CN204131646U (zh) | 一种数字视频信号解码器 | |
CN101304533A (zh) | 一种视频处理装置 | |
CN105263021A (zh) | 一种基于uvd的hevc视频解码方法 | |
CN103414898B (zh) | 一种高分辨率视频采集方法及系统 | |
CN105592316A (zh) | 一种数字视频信号解码器 | |
CN203675200U (zh) | 一种多画面视频处理器 | |
CN106162030A (zh) | 一种视频录像的生成系统及方法 | |
CN102487439A (zh) | 一种内存全部嵌入的音视频采集及播放处理方法 | |
CN105049806A (zh) | 嵌入式视频监控系统的设计方法 | |
CN105578153A (zh) | 一种基于多媒体终端实现监控八路ipc的方法及系统 | |
CN111131836A (zh) | 一种基于fpga的jpeg2000编码并行运算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |