摘要
全彩LED显现墙异步操控卡以本钱低,会集办理等特色,逐步成为全彩LED显现墙操控卡的干流。AM335x具有丰厚的硬件外设,依据Linux的软件计划,包括GPU Composition模块能供给完好的多图层叠加缩放等功用,非常合适全彩LED显现墙的异步操控卡运用。本文将从硬件和软件两个方面介绍依据AM335x供给的相应解决计划。
1 全彩LED显现墙操控卡简介
全彩LED显现显操控卡依据操控方法,能够分显两大显:同步操控卡和异步操控卡。
1.1 同步操控卡
全彩LED同步显现墙首要由PC,同步操控卡和LED显现模块组三部分组成,其衔接方法如下:
图1 同步操控模块图
同步操控卡将DVI信号转成LED显现模组所需求的视频信号格局,并且用以太网的方法传输给LED显现模组。同步操控卡自身不做视频解码等处理,仅做格局转化。因而,一般选用FPGA完成该功用。
1.2 异步操控卡
全彩LED异步显现墙由异步操控卡和LED显现模组组成,其衔接方法如下:
图2 异步操控卡模块图
由上图,异步操控卡首要由两个大的部分组成:
视频处理模块。
在此模块中,SOC从网口得到视频流以及UI的材料,进行视频解码和UI 制作,终究经过LCD接口传送给 FPGA。
视频信号转化模块。
在此模块中,FPGA将视频信号转化成LED显现模组所需的信号,并经过网口输出,该功用和同步操控卡的 功用相同。
比照两种计划,可见异步操控卡详细有本钱低,便于会集办理的特色。
2 异步操控卡体系剖析
下面从硬件和软件两个方面剖析其主芯片的体系需求。
2.1 硬件部分
从硬件上看,视频处理模块部分首要由最小体系和外围模块两大部分组成。
最小体系
最小体系由主芯片,电源体系,DDR和存储四部分组成。
不同等级的全彩屏对SOC的处理才能有不同要求,详细的要求在软件部分有阐明。
外围模块
音频接口,LCD接口。即LED显现墙的根本需求。
网络接口。百兆乃至千兆网口能够有用确保显现内容更新的高效性。
USB接口。便于体系升级,以及扩展依据USB各种外设。
SD卡/TF卡支撑。便于体系升级以及内容的本地更新。
此外,异步卡一般和LED显现墙一同放置于室外,所以需求可作业在宽温度规模的工业级芯片。
2.2 软件部分
软件部分首要由操作体系和运用软件两大部分组成。
2.2.1 操作体系
在异步操控卡职业中,干流体系挑选了Linux。
2.2.2运用软件
运用软件首要包括三个部分:
多媒体部分。
用于对音视频码流的解码。
全彩屏首要分为高端和中低端两个层次:
高端,视频分辨率以及显现分辨率要求在720p分辨率以上。
中低端,视频分辨率以及显现分辨率在640×480以内。
因为LED墙一般显现物理面积大,并且亮度高,所以对视频流的帧率要求较高,要求在每秒25帧以上。因而,关于高端产品,一般需带有视频硬解码模块的主芯片,其价格一般较高;关于低端产品,运用软解码可完成,所以需求运算功用较强的主芯片,本钱优势较好。
UI 部分。
用于显现字幕,图片等,并处理UI 元素和视频层的叠加。叠加部分。因为触及到通明度,尺度改换等,运 算需求也很大,所以需求主芯片具有相关的硬件加快模块。
长途操控部分。
该部分首要完成上位机对各操控卡的长途操控,内容更新等功用。该部分一般经过网络运用层完成,各控 制厂家有自己的协议。
3 AM335x的解决计划
AM335x是TI新近推出的依据ARM Cortex-A8 的SOC,外设丰厚,首要针对工业运用领域。针对异步操控卡运用,TI也供给了依据Linux的解决计划。下面将从硬件和软件两方面别离介绍该计划。
3.1 硬件计划
AM335x具有一个微弱的中心Cortex-A8,该核的运算才能可达2.0DMIPS/MHz, 并且AM335x的主频可到1GHz,即运算总的才能可达2000DMIPS,可流通解码640×480的MPEG4视频流,并且有满足的运算余量制作各种UI。
此外,AM335x还有一个3D图形加快核,SGX530,可支撑OpenGL ES2.0。TI 在OpenGL ES2.0之上供给了相应的软件计划,将SGX530用于视频帧的尺度缩放以及完成对UI 层和视频层的通明叠加的加快,后边软件部分会详细介绍该计划。
一起,AM335x具有丰厚的外设,如下图所示:
图3 AM335x异步操控卡硬件模块图
由上图可见AM335x可彻底包括一切异步操控卡的外设需求,不需求其他扩展。因而,整体本钱具有很强竞争力。
TI的开发板GP EVM(可查阅参阅文档[1])都能够很便当的进行LED运用的评价和开发,下文中的软件计划是以GP EVM为渠道进行开发的。
3.2 软件计划
软件计划首要分为操作体系和运用软件两大块,详细介绍如下。
3.2.1 操作体系
如前所述,Linux是异步操控卡的干流操作体系,因而,本计划也挑选了Linux作为渠道。AM335x EZSDK供给了Linux的完好开发包,包括板级支撑包,穿插编译器,文件体系等,可查阅参阅文档[2]。
3.2.2 软件模块
UI
在依据Linux的异步操控卡渠道上,QT以免费,开源,开发材料全以及在嵌入式体系上运转功率高级特 点,已经成为异步操控卡厂商开发UI首要的渠道。在EZSDK中已包括对QT4的移植,可查阅参阅文档[3]。 QT在开源网站上也有很丰厚的资源,可查阅参阅文档[4]。
多媒体
在EZSDK中供给Gstreamer+ffmpeg的多媒体解决计划,可查阅参阅文档[5]和参阅Gstreamer文档(参阅文档 [6])。在多媒体中,因为格局比较多,各种编码的复杂度以及编码质量差异较大是一个难点。而在LED显现 墙的运用场景中,多媒体码流可接受转码方法,所以可指定码流的格局。这儿,引荐的多媒体格局 MP4(MPEG4+AAC),其间MPEG4挑选simple profile,对此种码流,若分辨率为640×480,AM335x可流通解 码每秒25帧以上。
显现后端
AM335x只要一个功用简略的LCD操控器,该操控器只支撑RGB格局,其在Linux中的驱动为framebuffer,可 查阅参阅文档[7] 。相应的上述两个模块的显现后端也以framebuffer为根底:
Gstreamer的后端显现插件选用fbdevsink。因为视频解码后的格局为YUV格局,而AM335x自带的LCD操控器只支撑RGB格局,因而此处可运用Gstreamer的插件ffmpegcolourspace进行色度空间的转化
QT 默许以framebuffer为显现后端。
Framebuffer会接纳来自QT和Gstreamer的图画帧数据,然后进行OSD的叠加和缩放等操作,数据流如下图所示:
图4 默许软件计划数据流程图
3.2.3软件复杂度剖析
在图4中,深色模块为运算较密布模块,详细剖析如下:
Gstreamer的解码和ffmpegcolourspace(CSC plugin)两个模块。ARM虽然有较强的运算才能,但关于较大分辨率的视频解码,视频解码的宏块运算等需较大运算量。别的,色度空间触及浮点运算,并且为逐点运算,所以运算量需求也不小。以640×480分辨率的MP4(MPEG4 simple profile+AAC)为例,若帧率为30fps时,ARM核的loading在91%左右,其间ffmpegcolourspace模块约占运算量的50%。
Framebuffer模块。在该模块中的OSD叠加指的是UI图层和视频图层之间的叠加,并且是包括带通明度的叠加,而图层的缩放是指对原图等比例的缩放,因而需对每一帧数据的每个像素点进行浮点乘加运算,参阅ffmpegcolourspace的运算量,该部分运算量也应较大。可见,ARM核无法单独担任体系所需的悉数运算。
3.2.4 依据GPU的优化计划–GPU Composition
GPU Composition软件模块,调用SGX530模块进行颜色空间转化,OSD叠加,图层缩放功用,分管A8的运算负载使其专心于QT,视频解码等运用,下面将详细介绍。
GPU Composition模块的编译和装置。在TI Wiki上有清晰阐明,可查阅参阅文档[8]。
GPU Composition规划剖析
A.各功用模块
图5 GPU Composition软件模块图
SGX530完成的功用模块标记为深色,详细功用如下:
a. gpuvsink该模块规划为Gstreamer视频显现后端插件,将视频解码器解出的YUV 数据帧,传送给SGX530模块。依照规范的Gstreamer视频显现后端插件规划,可选用规范的显现后端接口编程。关于视频输入的尺度,要求其宽(width)为4个像素点的倍数。其输出视频帧数据这儿可称为Video Plane。
b. linuxfbofs该模块规划为QT架构中的显现后端,将QT的帧数据发送到SGX530模块中处理。linuxfbofs和framebuffer有相同的接口,关于QT运用开发是通明的。其输出界面帧数据为Graphics Plane。
GPU Composition
该模块依据Open GL ES 2.0接口规划,对输入的Video plane和Graphics Plane进行颜色空间转化,图层缩放,OSD叠加等操作,将终究的帧数据推送到Framebuffer中显现。
B. 模块间的数据流
模块间的数据以Plane的方式传递,详细介绍如下:
a. Plane格局
Video Plane可支撑YUV422,NV12,I420和YUV420 格局帧数据。
Graphics Plane可支撑RGB565,RGB888和ARGB8888帧数据。
GPU Composition接纳这些格局的帧数据,并将其转化为RGB格局,进行图层缩放,OSD叠加等操作。
b. Plane的内存分配
SGX530输入内存(Buffer),只支撑物理地址接连的Buffer。因而,在gpuvsink和linuxfbofs中,运用cmem(详细可查阅参阅文档[9])据此要求分配内存Pool来存储帧数据,需在Linux启动时经过命令行参数 ”mem=”装备预留给Kernel的内存,而剩余的内存便是给cmem所预备,用于分配物理接连的内存。
其巨细的计算公式如下:
Pool size for Graphics Plane = width * height * Bytes Per Pixel
Pool size for Video Plane = video frame width * height * 2 (Bytes Per Pixel) * 8 (buffers)
关于一个Video Plane或许需求多个Buffer,其详细个数界说在
gpu-compositing/gpuvsink/src/gst_render_bridge.
#define PROP_DEF_QUEUE_SIZE 8
c. Pool传递
Graphics Plane和Video Plane以指针的方式将Pool传递给GPU Composition。
C. 模块间的操控流
a. 装备信息数据结构
关于Graphics Plane,经过命名管道“/opt/gpu-
compositing/named_pipes/video_cfg_and_data_plane_X”其装备信息在下面数据结构中
关于此装备信息中,比较重要的有如下几点:
关于QT而言,对入的对对参数来自Linux的FB对对,即对LCD屏的对示分辨率。
关于通明度(Alpha),Video plane在底部,因而,Graphics Plane决议Video Plane的可对度。Alpha 可分对:大局Alpha,整个Plane运用同一的一个Alpha对;以像素点(Pixel)对对位的Alpha, 即像素的数据格局对ARGB8888,能够在部分对置Alpha。
能够通对对置对出的对构体out_g对对对出Plane的对放。
关于Video Plane, 装备信息如下:
此装备结构体中的输入信息,会经过Gstreamer的规范接口,经过前级的Gstreamer Plugin进行装备。如前所述,输入视频帧的宽(width)的像素点数,需为4的倍数;关于输出信息,和Graphics Plane相同,能够经过装备输出数据结构out,完成缩放功用。
b. 命名管道(named pipe)装备信息
上述装备信息,经过存放于文件体系中的命名管道,传递到GPU Composition模块。关于linuxfbofs,命名管道文件为/opt/gpu-compositing/named_pipes/gfx_cfg_plane_X。关于gpuvsink,命名管道文件为/opt/gpu-compositing/named_pipes/video_cfg_and_data_plane_X。
4 计划试验
笔者依据GPU Composition计划,在AM335x EVM板上,开发了Gstreamer和QT运用程序,以验证整个异步LED显现墙计划的功用。
4.1 代码及编译
代码分红两个运用:
Gstreamer部分,可在参阅文档[10]下载,为一个视频播映器,可循环播映MP4视频
QT部分,能够在参阅文档[11]下载,包括一个时钟和翻滚字幕。
能够依据参阅文档[8]进行编译。
4.2 代码运转
在AM335x EVM(AM3358 主频为720MHz)上,运转命令行如下:
这儿播映的视频流为mp4格局,其包括有分辨率为640×480的MPEG4 simple profile码流以及AAC音频流。
运转效果图如下:
图6 示例运转效果图
能够从截图中看到,OSD层和视频层的通明度叠加很清楚。
4.3 功用剖析
关于GPU Composition计划的功用进步,能够参阅下面两个截图。
图7中,没有运用GPU Composition计划,CPU除了要做解码,也需求做颜色空间转化,其CPU占用率到达91%。
图8中,运用了GPU分管了视频叠加,颜色空间转化等运算,在整个体系的总运算量显着大于只是Gstreamer播映视频的情况下,ARM核的CPU占用率只是只要58%,仍给运用程序留下运转的空间。更多的示例可查阅参阅文献[8]。
图7 单Cortex-A8软解视频流的体系负载
图8 GPU Composition计划视频播映的体系负载
5 总结
本文首要介绍了依据AM335x的全彩LED显现墙异步操控卡计划,要点介绍了依据GPU 的软件解决计划,在完成LED显现墙所需的视频层和OSD层叠加,缩放等功用的根底上,仍给客户定制的运用程序供给了满足的开发空间。期望该计划能加快客户进行异步操控卡的开发。