具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出一种软件系统架构,藉由此软件系统架构以软件控制一硬件电路,达成分时复用硬件电路,实现以一套硬件电路处理多个视频数据的目的。请参考图1,图1是依据本发明一实施例所提出的一种软件系统架构的示意图。如图1所示,软件系统架构100包含硬件驱动层10、虚拟通道层20、业务逻辑层30、及用户层40。软件系统架构100可应用于一视频数据处理装置中。请参考图2,图2是依据本发明一实施例所提出的一种视频数据处理装置的方块示意图。视频数据处理装置200包括处理器21、图像处理电路22、图形引擎23、叠加电路24、内存界面25、及内存26。以下以软件系统架构100应用于视频数据处理装置200的场景为例,来说明各层的作用。
硬件驱动层10用以设定各硬件组件的配置参数以控制各个硬件组件的运作,硬件组件例如为图像处理电路22及叠加电路24等。在一实施例中,硬件驱动层10将各硬件组件的配置参数设定于各硬件组件所对应的寄存器中。以叠加电路24为例,配置参数包括图像数据于内存26中的物理地址、图像数据的大小、格式、显示位置、及透明度等,这些参数可藉由应用程序编程接口 (Application Programming Interface,API)给上层使用。
虚拟通道层20可利用虚拟的通道来设定及管理硬件的配置参数,每一个通道可对应一组配置参数,可利用多个通道来对同一硬件提供多组不同的配置参数,例如,利用多个通道来提供多组不同的配置参数给叠加电路24。在一实施例中,虚拟通道层20包含一查找表,此查找表包含各通道的通道号与所对应的配置参数的对应关系及参数数据,例如,查找表包含各通道所对应的图像数据于内存26中的物理地址、图像数据的大小、格式、显示位置、透明度、以及视频数据来源等数据。在一实施例中,查找表更可包含各通道与上层的帧缓冲接口及/或区域(region)模块接口的对应关系。视频数据处理装置200的软件系统可以通道号做为通道识别信号,藉以利用各通道的通道号查询此查找表得到对应的配置参数及相关数据。
多路视频数据的处理原理是基于硬件处理速度足够快的情况下,在一段时间内(例如一个帧间隔或帧周期)可以同时处理多个不同路上的视频帧。以30fps (frames persecond)的视频数据为例,只要硬件处理一帧的数据的时间小于16毫秒,那么它就有在33毫秒的时间内处理两帧视频的能力,处理速度越快,能够处理的视频数据路数越多。现有技术的软件系统中,上层应用软件系直接利用硬件驱动层10的应用程序编程接口,以控制叠加电路24在一路视频数据中叠加一图像,但是在多路视频数据同时处理时,叠加电路24无法区分哪个视频数据需要叠加或不叠加图像。因此,本发明引入通道管理的概念,藉由虚拟的通道把要叠加的图像所用的内存数据以及相关的设定以通道为单位进行管理,并且虚拟成专门的应用程序编程接口给上层使用。藉由虚拟通道层的设置,视频数据处理装置200得以利用一个叠加电路24在一个帧间隔或帧周期的时间区间内对多路视频数据进行图像叠加处理。在一实施例中,虚拟通道层 10每次收到同步讯号VSYNC后,会根据下一张视频帧数据中通道的标记判断接下来要对哪个通道进行叠加处理,然后通过通道号查询查找表以获到该通道相关的配置参数,并在下个同步讯号VSYNC来之前把查询到的配置参数写到叠加电路24的寄存器中。
业务逻辑层30包含两部分,一部分是标准的Linux系统的帧缓冲(Frame buffer)接口的业务逻辑,这部分会设定各个帧缓冲接口与虚拟通道层20中各通道的对应关系。另外一部分是视频数据处理装置200的区域(region)模块接口相关的业务逻辑,这部分会设定各个区域模块接口与虚拟通道层20中各通道的对应关系。举例来说,帧缓冲接口1(/dev/fb1)可对应通道1,帧缓冲接口2(/dev/fb2)对应通道2,而区域模块接口1(region 1)对应通道3。在一实施例中,虚拟通道层20中的查找表可包含各通道的帧缓冲接口及各区域模块接口对应的硬件驱动层10相关设定,使用者可透过特定的配置档案设定帧缓冲接口对应的虚拟通道层20通道的默认初始化状态,当视频数据处理装置 200的软件系统在初始化的过程中,会将各帧缓冲接口及各区域模块接口与通道间的对应关系及相关设定通过虚拟通道层20的应用程序编程接口进行设定。
用户层40用以让用户调用视频数据处理装置200中的软件功能及/或硬件组件以实现特定应用场景。在一实施例中,用户层40可透过帧缓冲接口在视频数据上叠加用户接口(User Interface,UI),用户层40亦可透过区域模块接口在视频数据上叠加图像,实现屏幕显示(On-Screen Display,OSD)的功能。软件系统架构100藉由设置虚拟通道层20,让用户层40可透过区域模块接口以软件分时复用多个通道在多路视频数据叠加图像以进行显示。同样的,用户层40可透过帧缓冲接口以软件分时复用多个通道在不同的通道上显示不同的内容。
请参考图3,图3是根据本发明的一实施例的应用场景示意图。以下将说明如何利用具有软件系统架构100的视频数据处理装置200来实现图3所示的应用场景。
请参考图4,图4是为实现图3应用场景的软件配置示意图。如图4所示,此系统的软件配置包含通道1及通道2的配置参数,帧缓冲接口1(/dev/fb1) 对应到通道1,帧缓冲接口2(/dev/fb2)对应到通道2,前述通道1及通道2 的配置参数以及与帧缓冲接口1及帧缓冲接口2间的对应关记录于虚拟通道层 20的查找表中。用户层40中的图像UI_1使用帧缓冲接口1来进行叠加,而图像UI_2使用帧缓冲接口2来进行叠加。此例中,通道1用以将图像UI_1 叠加至视频数据Vin_1中,通道2用以将图像UI_2叠加至视频数据Vin_2中,通道1的配置参数包含视频数据Vin_1的内存地址及视频大小、图像UI_1的内存地址、图像大小及格式、叠加位置(例如图像UI_1叠加于视频数据Vin_1的起始位置)、透明度等数据。通道2的配置参数包含视频数据Vin_2的内存地址及视频大小、图像UI_2的内存地址、图像大小及格式等数据。前述的配置参数及对应关系可在软件系统初始化过程中透过配置檔案进行配置。操作时,通道 1的处理顺序在通道2之前,当叠加电路驱动软件接收到同步讯号VSYNC 1时,会将对应通道1的配置参数写入叠加电路24的寄存器中。在同步讯号VSYNC 1之后,当叠加电路驱动软件接收到同步讯号VSYNC 2时,会将对应通道2的配置参数写入叠加电路24的寄存器中,叠加电时路24再据以完成叠加操作。在一实施例中,同步讯号VSYNC 1及同步讯号VSYNC 2可为视频数据Vin_1及/或视频数据Vin_2的帧同步讯号,用以指示叠加电路完成叠加一帧图像。在一实施例中,同步讯号VSYNC 1及同步讯号VSYNC 2用以指示视频数据处理装置200完成显示一帧图像。
在一实施例中,处理器21执行程序代码以运行具有软件系统架构100的软件系统。于操作O10中,藉由一影像传感器(未绘示)进行影像感测以得到感测数据S,在此实施例中,影像传感器设置于视频数据处理装置200的外部,并透过连接接口电性连接至视频数据处理装置200,而感测数据S是每秒 30张而分辨率为1920*1080的影像数据。于操作O20中,图像处理电路22接收感测数据S并对感测数据S进行图像处理以输出视频数据Vin_1及视频数据 Vin_2。在一实施例中,图像处理电路22对感测数据S所进行的图像处理可包含:去噪处理、亮度调整、色彩调整、及影像大小缩放等处理。此实施例中,视频数据Vin_1的分辨率为320*240,而视频数据Vin_2的分辨率为1920*1080,图像处理电路22依据软件配置中配置给视频数据Vin_1的内存地址将视频数据 Vin_1储存至内存26,并依据配置给视频数据Vin_2的内存地址将视频数据Vin_2储存至内存26。
于操作O30中,处理器21藉由硬件驱动层10中的叠加电路驱动软件来控制叠加电路24,当叠加电路24或叠加电路驱动软件于时间点T0时接收到同步讯号VSYNC 1,处理器21根据虚拟通道层20的查找表,确认接下来将对通道1进行叠加处理,叠加电路驱动软件根据查找表将对应通道1的配置参数设定至叠加电路24的寄存器中。如前面所述,通道1用以将图像UI_1叠加至视频资料Vin_1中,叠加电路24依据寄存器中的设定值自内存26中分别读取视频数据Vin_1及图像UI_1并执行叠加处理1,以产生视频数据Vout_1。在一实施例中,当叠加电路24或叠加电路驱动软件接收到同步讯号VSYNC 2,叠加电路24才执行将图像UI_1叠加至视频数据Vin_1中的叠加处理1,而叠加电路 24花费处理时间TP1来完成叠加处理1。在一实施例中,于叠加电路24执行叠加处理1前,图形引擎23进行绘制图像UI_1,并将绘制好的图像UI_1储存至内存26中,图像UI_1例如是用以显示时间、电量参数等讯息,图像UI_1 于内存26中的储存地址对应查找表中图像UI_1的内存地址。于操作O40中,视频数据处理装置200将视频数据Vout_1输出至一显示器(未绘示)以进行显示。
于操作O50中,当叠加电路24或叠加电路驱动软件于时间T1接收到同步讯号VSYNC 2,处理器21根据虚拟通道层20的查找表,确认接下来将对通道2进行叠加处理2,叠加电路驱动软件根据查找表将对应通道2的配置参数设定至叠加电路24的寄存器中。如前面所述,通道2用以将图像UI_2叠加至视频资料Vin_2中,叠加电路24依据寄存器中的设定值自内存26中分别读取视频数据Vin_2及图像UI_2并执行叠加处理2,以产生视频数据Vout_2。在一实施例中,于叠加电路24执行叠加处理2前,图形引擎23进行绘制图像UI_2,并将绘制好的图像UI_2储存至内存26中,图像UI_2例如是用以显示时间、日期等讯息,图像UI_2于内存26中的储存地址对应查找表中图像UI_2的内存地址。在一实施例中,同步讯号VSYNC 2用以于时间点T1时触发叠加电路 24执行将图像UI_1叠加至视频数据Vin_1的叠加处理1,叠加电路24或叠加电路驱动软件于时间点T2接收到同步讯号VSYNC 3,同步讯号VSYNC 3用以于时间点T2时触发叠加电路24执行将图像UI_2叠加至视频数据Vin_2的叠加处理 2,而叠加电路24花费处理时间TP2来完成叠加处理2,也就是说,叠加电路驱动软件于叠加电路24正进行叠加处理1时,即将对应通道2的配置参数设定至叠加电路24的寄存器中。藉由这样的机制,当叠加电路24完成将图像 UI_1叠加至视频数据Vin_1的叠加处理1时,可马上接着进行将图像UI_2叠加至视频数据Vin_2的叠加处理2,无须再等待在叠加电路24的寄存器中设定通道2的配置参数的时间。
在一实施例中,视频数据Vin_1及视频数据Vin_2皆为每秒30张影像(30 FPS),视频数据Vin_1的帧显示周期或相邻两帧的间隔为33毫秒(ms),同样的,视频数据Vin_2的帧显示周期或相邻两帧的间隔也是33毫秒。叠加电路24 的效能需满足处理时间TP1加总处理时间TP2小于33毫秒的要求,而时间点 T2与时间点T1间的时间差亦需小于33毫秒,在一较佳实施例中,时间点T2 与时间点T1间的时间差小于16.5毫秒(即相邻两帧的间隔的一半)。本发明藉由于软件系统中设置虚拟通道层20,通道1及通道2分别对应两组不同的配置参数,并利用处理效能较佳的叠加电路24,透过软件分时复用叠加电路24,实现了利用同一叠加电路来处理两路视频数据(如实施例中的视频数据Vin_1及视频数据Vin_2)的应用。
于操作O60中,视频数据处理装置200利用一编码器(未绘示)对视频数据Vout_2进行编码处理,以产生编码数据Ved。编码处理例如是依据视频编码标准H.264或H.265的影像编码处理。于操作O70中,视频数据处理装置 200利用一传输接口(未绘示)将编码数据Ved传输出去。在一实施例中,传输接口依据实时串流协议(Real Time Streaming Protocol,RTSP)将编码数据 Ved传输出去。
请参考图5,图5是依据本发明另一实施例所提出的一种视频数据处理装置的方块示意图。相较于图2的视频数据处理装置200,视频数据处理装置500 更包括缩放电路57。缩放电路设置于叠加电路24之前。当软件系统架构100 应用于视频数据处理装置500的场景时,虚拟通道层20除了利用多个通道来提供多组不同的配置参数给叠加电路24外,虚拟通道层20更利用该些通道来提供多组不同的配置参数给缩放电路57。在一实施例中,虚拟通道层20中的查找表包含各通道的通道号与缩放电路57所对应的配置参数的对应关系及参数数据,以及各通道的通道号与叠加电路24所对应的配置参数的对应关系及参数数据。举例来说,图4的软件配置中查找表更可包括通道1对应缩放电路 57的配置参数,用以控制缩放电路57对视频数据Vin_1进行缩放处理,查找表也包括通道2对应缩放电路57的配置参数,用以控制缩放电路57对视频数据 Vin_2进行缩放处理。操作时,当硬件驱动层10接收到同步讯号VSYNC 1时,会将对应通道1的配置参数写入缩放电路57及叠加电路24各自的寄存器中。缩放电路57据以对视频数据Vin_1进行缩放处理后输出经处理后的视频数据至叠加电路24,以进行叠加处理。在同步讯号VSYNC 1之后,当硬件驱动层10接收到同步讯号VSYNC 2时,会将对应通道2的配置参数写入缩放电路57及叠加电路24各自的寄存器中。缩放电路57据以对视频数据Vin_2进行缩放处理后输出经处理后的视频数据至叠加电路24,以进行叠加处理。缩放电路57的效能需满足在相邻两帧的间隔时间内完成对视频数据Vin_1及视频数据Vin_2的缩放处理。在一较佳实施例中,缩放电路57完成对视频数据Vin_1及视频数据Vin_2的缩放处理所需的时间加总叠加电路24完成叠加处理1及叠加处理2所需的时间系小于相邻两帧的间隔时间(此例中为33毫秒)。
图3及图4的实施例中说明了本发明的软件系统架构及视频数据处理装置可透过软件分时复用同一叠加电路来处理两路视频数据,在硬件效能条件许可下,本发明的软件系统架构及视频数据处理装置更可透过软件分时复用同一硬件电路来处理两路以上的视频数据。图3及图4的实施例中是以通道1及通道 2皆对应到帧缓冲接口为例进行说明,实施上,各通道皆可选择对应帧缓冲接口或区域模块接口。
综上所述,本发明的软件系统架构及视频数据处理装置藉由在软件架构中设置虚拟通道层,以实现透过软件分时复用硬件电路在多路视频数据上叠加不同的缓冲接口及/或区域模块接口所对应的内容,大幅提升硬件的使用率,并达到多个窗口显示OSD/UI的效果。
虽然本发明之实施例如上所述,然而该些实施例并非用来限定本发明,本技术领域具有通常知识者可依据本发明之明示或隐含之内容对本发明之技术特征施以变化,凡此种种变化均可能属于本发明所寻求之专利保护范畴,换言之,本发明之专利保护范围须视本说明书之申请专利范围所界定者为准。
符号说明
100 软件系统架构
200、500 视频数据处理装置
10 硬件驱动层
20 虚拟通道层
21 处理器
22 图像处理电路
23 图形引擎
24 叠加电路
25 内存界面
26 内存
30 业务逻辑层
40 用户层
57 缩放电路
O10、O20、O30、O40、O50、O60、O70 操作。