一种基于lvds输入的视频录制设计方法

文档序号:1893496 发布日期:2021-11-26 浏览:22次 >En<

阅读说明:本技术 一种基于lvds输入的视频录制设计方法 (Video recording design method based on LVDS input ) 是由 高娟 于 2021-08-24 设计创作,主要内容包括:本发明涉及一种基于LVDS输入的视频录制设计方法,属于图像处理领域。本发明首先,获取LVDS输入设备信息,配置输入设备参数。其次,根据配置的参数启动视频输入模块,分析其lane的分布模式特点,针对其同步方式,配置其物理特性,对模块进行物理通道到虚拟通道的数据通路设置,并采集通道内的视频数据。然后,采用数据流方式绑定视频输入模块、视频处理模块和视频编码模块,将视频输入采集到的数据输出到视频编码模块。最后,从视频编码模块的通道中实时获取视频数据并进行录制保存成本地文件,同时接收上层用户指令,控制录制过程的启动和终止。本发明可以为实现在linux系统下,视频源为lvds通道下的视频录制功能问题,并可实时接收用户指令操控录制过程。(The invention relates to a video recording design method based on LVDS input, and belongs to the field of image processing. Firstly, acquiring LVDS input device information and configuring input device parameters. Secondly, starting a video input module according to the configured parameters, analyzing the distribution mode characteristics of the lane, configuring the physical characteristics of the video input module according to the synchronization mode, setting a data path from a physical channel to a virtual channel for the video input module, and acquiring video data in the channel. And then, binding the video input module, the video processing module and the video coding module in a data stream mode, and outputting the data acquired by video input to the video coding module. And finally, acquiring video data from a channel of the video coding module in real time, recording and storing the video data into a local file, receiving an upper layer user instruction, and controlling the starting and the termination of the recording process. The invention can solve the problem that a video recording function is realized under a linux system when a video source is a lvds channel, and can receive a user instruction in real time to control a recording process.)

一种基于LVDS输入的视频录制设计方法

技术领域

本发明属于图像处理领域,具体涉及一种基于LVDS输入的视频录制设计方法。

背景技术

Hi3559AV100是专业的8K Ultra HD Mobile Camera SOC,它提供了 8K30/4K120广播级图像质量的数字视频录制,支持多路Sensor输入,支持H.265 编码输出或影视级的RAW数据输出,并集成高性能ISP处理,同时采用先进低功耗工艺和低功耗架构设计,为用户提供了卓越的图像处理能力。

Hi3559AV100支持业界领先的多路4K Sensor输入,多路ISP图像处理,支持HDR10高动态范围技术标准,并支持多路全景硬件拼接。在支持8K30/4K120 视频录制下,Hi3559AV100提供硬化的6-Dof数字防抖,减少了对机械云台的依赖。

MIPI Rx通过低电压差分信号接收原始视频数据,将接收到的串行差分信号(serial differential signal)转化为DC(Digital Camera)时序后传递给下一级模块VICAP(Video Capture)MIPI Rx支持MIPI D-PHY、LVDS (Low-Voltage DifferentialSignal)、HiSPi(High-Speed Serial Pixel Interface)等串行视频信号输入,同时兼容DC视频接口。

SLVS-EC接口由SONY公司定义,用于高帧率和高分辨率图像采集,它可以将高速串行的数据转化为DC(Digital Camera)时序后传递给下一级模块 VICAP(Video Capture)。

SLVS-EC串行视频接口可以提供更高的传输带宽,更低的功耗,在组包方式上,数据的冗余度也更低。在应用中SLVS-EC接口提供了更加可靠和稳定的传输。

视频输入单元VI(Video Input),可以通过MIPI Rx(包含MIPI、LVDS、HiSPi、SLVS_EC)接口、BT.656/601、BT.1120接口和DC(Digital Camera)接收视频数据,存入指定的内存区域。VI内嵌ISP图像处理单元,可以直接对接外部原始数据(BAYER RGB数据)。典型的编码流程包括了输入图像的接收、图像内容的遮挡和覆盖、图像的编码、以及码流的输出等过程。视频录制则将视频通道输入的视频图像存为本地视频文件。

相比传统的视频输入通道,基于LVDS输入的视频显示可以提供更高的传输带宽,增加传输的稳定性。由于海思标准SDK也没有提供配置LVDS输入方法,为了解决linux系统下的视频录制问题,提出一种基于LVDS输入的视频录制方法。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是如何提供一种基于LVDS输入的视频录制设计方法,以解决对LVDS通道输入的视频录制问题。

(二)技术方案

为了解决上述技术问题,本发明提出一种基于LVDS输入的视频录制设计方法,该方法包括如下步骤:

S1、获取低电压差分信号LVDS输入设备信息,配置输入设备参数

在编译配置文件makefile中,为每路输入设备设置类型type,根据设备类型获取对应的设备序号、图像最大分辨率并计算图像缓存空间,同时配置输入设备参数;

S2、根据配置参数启动输入模块,采集视频数据

创建输入模块各个设备对象:输入设备、物理pipe和物理通道,并根据前述配置参数启动输入模块,对接收到的原始图像数据进行处理,实现视频数据的采集;

S3、将视频数据输出到编码模块

将视频输入模块与视频处理模块vpss绑定,利用vpss对输入图像进行再次加工,同时将视频处理模块与编码模块进行绑定,将视频处理模块加工后的图像输出到编码模块;编码模块对图像进行编码后自动将数据流存入码流 buffer;

S4、启动接收上层命令任务

实时接收上层用户指令,根据指令类别实现录制的开始和停止过程;

S5、启动编码模块进行视频录制。

进一步地,所述步骤S1具体包括:

S11、查找当前lvds的输入设备名称,根据设备名称设置设备类型;

S12、设置用于连接发送端和接收端的一对高速差分线lane的分布模式;

S13、分析当前lvds输入设备路数,并针对lvds的数据lane分布模式确定每路对应的设备号;

S14、根据当前输入设备类型获取输入图像的最大支持分辨率,并根据最大分辨率动态申请图像缓存空间;

S15、根据输入设备参数、管道参数、通道参数配置输入模块参数属性。

进一步地,所述步骤S2具体包括如下步骤:

S21、启动MIPI,针对lvds输入特性进行配置MIPI Rx/SLVS,涉及的参数为:LVDS同步模式、发送端和接收端lane的对应关系和同步码;

S22、根据配置参数中可工作的输入通道数设置视频输入模块与视频处理模块之间的工作模式;

S23、根据配置参数创建输入模块中各设备对象并使能,启动输入模块。

进一步地,所述步骤S21具体包括:

S211、同步模式选用LVDS_SYNC_MODE_SAV;

S212、根据SAV/EAV的同步方式划定每组数据格式为{SAV-invalid line,EAV-invalid line,SAV-valid line,EAV-valid line};

S213、每个同步码由4个字段组成,每个字段的位宽与像素数据位宽保持一致;

S214、根据选定的lane模式设置lane_id。

进一步地,所述步骤S23具体包括:

S231、根据输入设备类型type获取输入设备的物理属性devConfig对象;

S232、根据devConfig调用动态库函数设置输入设备dev属性,根据设备号dev(i)使能当前工作的设备dev;

S233、将输入设备dev与管道pipe绑定;

S234、根据type获取管道的物理属性pipeConfig,根据pipeConfig创建管道pipe对象,并启用管道;

S235、根据type获取通道的物理属性chnlConfig,调用动态库函数设置通道chnl属性,并使能chnl对象。

进一步地,所述步骤S3具体包括如下步骤:

S31、根据视频数据分辨率、视频格式,压缩模式、像素格式设置视频处理模块;

S32、启动视频处理模块,创建处理模块的组,并设置组内的通道属性,使能组内的通道;

S33、将视频输入模块的通道和视频处理模块的通道绑定,同时将视频处理模块的通道与编码模块的通道绑定,在模块之间创建视频数据输入和输出流通通道。

进一步地,所述步骤S4具体包括:

S41、创建接收上层命令线程;

S42、实时判别协议字段合法性;

S43、不合法的指令进行报错处理,否则进行下一步;

S44、判别指令类别,如果是录制开始则直接进入过程S5,否则判别录制是否开始,如果已开始则发送信号到编码模块销毁资源并停止录制过程。

进一步地,所述步骤S5具体包括:

S51、首先检查录制文件的合法性:对通道号和编码协议类型为标识作为录制文件名,使用系统函数fopen打开文件,如果打开失败,则报错。

S52、其次使用库函数获取编码通道对应的设备文件句柄,获取码流buffer 的物理地址和大小;

S53、然后获取每个编码通道的数据并写入到录制文件;

S54、最后保存关闭录制文件:对每个通道的录制文件循环使用fclose函数进行文件关闭操作。

进一步地,所述步骤S53具体包括:

S531、查询每一帧码流有多少包数据;

S532、检查目前有多少包处理完和剩下多少包需要处理;

S533、动态申请相应数量的帧码流包;

S534、调用库函数获取编码码流;

S535、将码流数据写入录制文件;

S536、释放码流缓存;

S537、释放帧码流包。

进一步地,该方法应用于linux系统。

(三)有益效果

本发明提出一种基于LVDS输入的视频录制设计方法,采用上述操作步骤,本发明可以解决linux系统下获取lvds通道输入视频的编码问题,该方法已经经过了实验检验。结果标明,该方案可以为实现在linux系统下,视频源为lvds通道下的视频录制功能问题,并可实时接收用户指令操控录制过程。

附图说明

图1为本发明基于LVDS输入的视频录制实现流程图;

图2为lane分布模式示例图;

图3为SAV/EAV的同步方式示例图;

图4为同步码表示例图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明属于linux系统下视频编码技术,在系统为linux的应用场景下,针对海思Hi3559AV100芯片特点,并结合编码器特性和LVDS(低电压差分信号) 输入通道属性,设计实现了一种linux系统下基于LVDS输入的视频编码设计方案。本发明为源视频输入通道为MIPI RX的前提下,获取从外部传输的视频图像,对输入图像进行缩放并编码录制成本地视频。

本发明的目的是在linux平台下,解决对LVDS通道输入的视频录制问题。

为实现上述目的,本发明采取以下技术方案。

S1、获取LVDS输入设备信息,配置输入设备参数

在编译配置文件makefile中,为每路输入设备设置类型type,根据设备类型获取对应的设备序号、图像最大分辨率并计算图像缓存空间,同时配置输入设备参数。

S2、根据配置参数启动输入模块,采集视频数据

创建输入模块各个设备对象:输入设备(对时序进行解析)、物理pipe(负责设备解析后的数据处理)、物理通道(负责将最终处理后的数据输出),并根据前述配置参数启动输入模块,对接收到的原始图像数据进行处理,实现视频数据的采集。

S3、将视频数据输出到编码模块

将视频输入模块与视频处理模块vpss绑定,利用vpss对输入图像进行再次加工,同时将视频处理模块与编码模块进行绑定,将视频处理模块加工后的图像输出到编码模块。编码模块对图像进行编码后自动将数据流存入码流 buffer。

S4、启动接收上层命令任务

实时接收上层用户指令,根据指令类别实现录制的开始和停止过程。

S5、启动编码模块进行视频录制

首先检查录制文件的合法性:对通道号和编码协议类型为标识作为录制文件名,使用系统函数fopen打开录制文件,如果打开失败,则报错。

其次使用库函数获取编码通道对应的设备文件句柄,获取码流buffer的物理地址和大小;

然后获取每个编码通道的数据并写入到录制文件。

通过以上步骤,可以实现linux系统下的lvds输入下视频录制功能。

结合图1,为了解决linux系统下lvds输入通道的视频处理问题,我们采用基于lvds输入的视频录制的方法。下面我们对本发明的内容作进一步描述。

S1、获取LVDS输入设备信息,配置输入设备参数

在编译配置文件makefile中,为每路输入设备设置类型type,根据设备类型获取对应的设备序号、图像最大分辨率并计算图像缓存空间,同时配置输入设备参数。具体步骤如下:

S11、查找当前lvds的输入设备名称,根据设备名称设置设备类型;

S12、设置lane(用于连接发送端和接收端的一对高速差分线)的分布模式;

S13、分析当前lvds输入设备路数,并针对lvds的数据lane分布模式确定每路对应的设备号。假定当前lvds启用分布模式3(分布模式可查芯片手册),即L0-L7分布在设备0,L8-L15分布在设备4,对应输入设备第一路Input 1的设备号dev(1)为0,第二路Input 2的设备号dev(2)为4。分布图见图2。

S14、根据当前输入设备类型获取输入图像的最大支持分辨率,并根据最大分辨率动态申请图像缓存空间;

S15、根据输入设备参数、管道参数、通道参数配置输入模块参数属性。

S2、根据配置参数启动输入模块,采集视频数据

创建输入模块各个设备对象:输入设备dev(对时序进行解析)、物理pipe (负责设备解析后的数据处理)、物理通道chnl(负责将最终处理后的数据输出),并根据配置参数启动输入模块,对接收到的原始图像数据进行处理,实现视频数据的采集。具体步骤如下:

S21、启动MIPI(物理层的D-PHY的传输规范),针对lvds输入特性进行配置MIPIRx/SLVS,主要涉及的参数为:LVDS同步模式,发送端(sensor)和接收端(MIPI Rx)lane的对应关系(lane_id),同步码。具体配置方法如下:

S211、同步模式选用LVDS_SYNC_MODE_SAV;

S212、根据SAV/EAV的同步方式划定每组数据格式为{SAV-invalid line,EAV-invalid line,SAV-valid line,EAV-valid line},具体参考图3:

S213、每个同步码由4个字段组成,每个字段的位宽与像素数据位宽保持一致。前3个字段为固定基准码字,第4个字段由sensor厂家确定。参考图 4的样例同步码表,确定每个图像的位宽,假定选定10bit,则单个同步码为

{0x02AC,0x02D8,0x0200,0x0274},

据此推理出同步码为:

S214、根据选定的lane模式设置lane_id,上述步骤选定模式3,sensor 的管脚与MIPI RX对应的管脚数目为8,且为1对1对应。对接sensor时,未使用的lane将其对应的lane_id配置为-1。配置lane_id还可以调整数据通道顺序,根据硬件单板与实际sensor输出通道的对应关系调整lane_id的配置。本例中的lane_id数据配置数组为.lane_id={0,1,2,3,4,5,6,7, -1,-1,-1,-1,-1,-1,-1,-1}(其中-1表示没有启用)。

S22、根据配置参数中可工作的输入通道数设置视频输入模块与视频处理模块之间的工作模式;

S23、根据配置参数创建输入模块中各设备对象并使能,启动输入模块。

S231、根据输入设备类型type获取输入设备的物理属性devConfig对象;

S232、根据devConfig调用动态库函数设置输入设备dev属性,根据设备号dev(i)使能当前工作的设备dev;

S233、将输入设备dev与管道pipe绑定;

S234、根据type获取管道的物理属性pipeConfig,根据pipeConfig创建管道pipe对象,并启用管道;

S235、根据type获取通道的物理属性chnlConfig,调用动态库函数设置通道chnl属性,并使能chnl对象。

S3、将输入图像输出到编码模块

将视频输入模块与视频处理模块vpss绑定,利用vpss对输入图像进行再次加工,同时将视频处理模块与编码模块进行绑定,将视频处理模块加工后的图像输出到编码模块。具体步骤如下:

S31、根据视频数据分辨率、视频格式,压缩模式、像素格式设置视频处理模块;

S32、启动视频处理模块,创建处理模块的组,并设置组内的通道属性,使能组内的通道;

S33、将视频输入模块的通道和视频处理模块的通道绑定,同时将视频处理模块的通道与编码模块的通道绑定,在模块之间创建视频数据输入和输出流通通道。

S4、启动接收上层命令任务

实时接收上层用户指令,根据指令类别实现录制的开始和停止过程。具体步骤如下:

S41、创建接收上层命令线程;

S42、实时判别协议字段合法性;

S43、不合法的指令进行报错处理,否则进行下一步;

S44、判别指令类别,如果是录制开始则直接进入过程S5,否则判别录制是否开始,如果已开始则发送信号到编码模块销毁资源并停止录制过程。

S5、启动编码模块进行视频录制

S51、首先检查录制文件的合法性:对通道号和编码协议类型为标识作为录制文件名,使用系统函数fopen打开文件,如果打开失败,则报错。

S52、其次使用库函数获取编码通道对应的设备文件句柄,获取码流buffer 的物理地址和大小;

S53、然后获取每个编码通道的数据并写入到录制文件,具体步骤如下:

S531、查询每一帧码流有多少包数据;

S532、检查目前有多少包处理完和剩下多少包需要处理;

S533、动态申请相应数量的帧码流包;

S534、调用库函数获取编码码流;

S535、将码流数据写入录制文件;

S536、释放码流缓存;

S537、释放帧码流包。

S54、最后保存关闭录制文件:对每个通道的录制文件循环使用fclose函数进行文件关闭操作。

利用上述技术方案,采用上述操作步骤,本发明可以解决linux系统下获取lvds通道输入视频的编码问题,该方法已经经过了实验检验。结果标明,该方案可以为实现在linux系统下,视频源为lvds通道下的视频录制功能问题,并可实时接收用户指令操控录制过程。

本发明的特点还在于:

一种基于LVDS输入的视频录制设计方法,(1)针对LVDS硬件通道特性配置了目标图像参数;(2)根据输入视频源类型启动了输入模块;(3)绑定视频输入、视频处理、视频编码三个模块,创建数据自动化传输管道;(4)获取编码模块的码流数据进行视频录制。(5)为上层用户提供命令指令接口,可实时控制录制过程。

进一步地,所述的(1)针对硬件通道特性配置了数据结构对象,并提供了对象获取接口,为识别lvds通道输入的视频源提供了接口。

进一步地,(2)根据视频源输入类型获取了视频图像的参数信息,为配置缓存池大小进行系统初始化提供了依据,并针对输入通道lvds的物理特性进行了配置,使其构建物理通道到虚拟通道的数据链;(3)将数据接收者与数据源进行绑定,对视频输入、视频处理、视频编码创建了关联,自动化实现了视频数据传输过程。

进一步地,(4)以通道号和编码类型为录制文件标识将LVDS输入的视频图像进行本地录制;(5)提供用户命令指令接口,实现录制过程可调控功能。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于DSP+FPGA的视觉目标跟踪系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类