IPNC RDK依赖于以下附加软件包。
Please referto the Release Notes for exact package version required for the current releaseof IPNC RDK有关当前版本的IPNCRDK所需的精确软件包版本,请参阅发行说明包名称软件包版本A8 Linux - Code Sorcery Code Generation tools
有关软件包版本,请参阅发行说明ARM M3代码生成工具DSP c6x代码生成工具*
Linux PSP XDC BIOS Syslink IPC XDIAS Framework components IVAHD HDVICP2 API H264 encoder HDVPSS drivers ISS drivers
软件使用不同的层实现,如下所示。分层的量基于模块性(更多抽象/层)和易用性(更少层数)之间的平衡来完成。HOST A8 VPSS M3 Video M3 C64x DSP 下面描述软件的不同层,
层ProcessorApplicable Description TI SW Package Linux HOST A8 Linux操作系统,包括文件系统,SATA,以太网,USB等IO驱动程序Linux PSP BIOS6 VPSS M3 Video M3 DSP BIOS RTOS用作操作系统
Video-M3, VPSS-M3, DSP. 视频-M3,VPSS-M3,DSP。
Provides features like threads, semaphores, interrupts. 提供线程,信号量,中断等功能。BIOS XDC(用于BIOS和其他配置)Layer ProcessorApplicable Description TI SW Package 队列和链路之间的消息传递使用BIOS信号量实现。
Syslink / IPC HOST A8 VPSS M3 Video M3 DSP 用于处理器之间通信的软件api。提供诸如处理器加载和引导,多堆栈,多链表(ListMP)功能,消息队列,通知等Syslink IPC HDVPSS Drivers VPSS M3 HDVPSS驱动器,如采集,显示, 去隔行,缩放基于FVID2界面上控制和配置
HDVPSS硬件HDVPSS ISS Drivers VPSS M3 ISS驱动程序,如捕获,传感器配置,基于FVID2接口的缩放,以控制和配置ISS硬件ISS Video Encode Video M3 基于XDM / XDIAS接口的视频编码API。Uses
framework components for用于框架组件资源分配XDIAS Framework components IVAHD HDVICP2 API MJPEG encoder H264 encoder ALG VPSS M3 用于视频处理和高级功能的高级算法。例如-视频稳定,AWB,AE,闪烁检测等ISS Face Detect VPSS M3 面部检测引擎驱动程序可以做到高达32张人脸的实时检测
ISS Links HOST A8 VPSS M3 Video M3 DSP 实施单个链接。一些链路是特定于处理器的,而一些链路在处理器之间是公共的
IPNC RDK Link API HOST A8 链接API允许用户创建,连接和HOSTA8控制环节,VPSS
M3,M3的视频和DSP。McFW Layer ProcessorApplicable Description TI SW Package Link API用于创建链接链,形成用户定义的用例。
连接到彼此的链接是平台相关的。McFW API HOST A8 多通道应用程序特定API,允许用户使用单个简化的API接口为IPNC,NVR设置和控制预定义的应用程序特定链。
这使得用户可以直接使用的链接,而无需了解详细的链路API。
该McFW API是平台独立的,相同的API将在DM812x工作,DM385
McFW RTSP Stack HOST A8 开源的的C ++库,用于多媒体流,采用开放的标准协议开源包(RTP / RTCP,RTSP,SIP)Open source User Application HOST A8 通常GUI和其他应用程序特定组件,如文件读/写,网络流。
User application can use the McFW API for pre-defined usecases
用户应用可以利用预先定义的用例的McFW API
OR 要么
User application can use the link API and create their own custom chains.
用户应用可以利用链接API,并创建自己的定制链。
NOTE: User application NEED NOT create “links” of their own for say file write.
注意:用户应用程序不需要创建自己的“链接”用于说文件写入。
Users can write their own custom implementation of processing steps outside of the link API.
用户可以在链接API之外编写自己的自定义实现的处理步骤。
IPNC RDK provides three kinds of demos
IPNC RDK提供了三种类型demos
。 “chains” demo, this uses the“链”demos,这里使用Customer specific Layer ProcessorApplicable Description TI SW Package link API . “McFW” demo, this uses the McFW API
-
McFW API基于以下原则多通道视频系统由以下四个子系统组成
1.摄像/捕捉
–这个子系统实现了视频拍摄。摄像机组件通过并行输入视频端口从bayer传感器捕获,并可选地提供两个缩放输出。
The capture link captures multi-channels from input video ports(VIP).捕获链路从输入视频端口(VIP)捕获多通道。2.显示 -
这将从捕获和解码子系统接收作为输入,并通过不同的用户定义的镶嵌图案组成并通过多个通道呈现在多个显示设备上。3.编码 -
这将由包括“子码流”编码的捕获和编码视频作为输入,并且给用户提供编码比特流
4.视频处理 -
这将由捕获/摄像机和处理视频作为输入,取决于配置的引擎,如噪声过滤器,mjpeg编码。视频分析 -
这将输入作为QVGA输入从标量和运行DMVA算法
API隐藏平台级别详细信息,如YUV格式转换,要使用的标量,要使用的视频噪声过滤器,并允许用户专注于广泛级子系统,而不是低级硬件资源和约束。The hardware blocks (noise filter, scaler,isp) used inside a sub-system depend on the top level system configuration doneby the user depending on their use-case.在子系统内部使用的硬件块(噪声滤波器,缩放器,isp)取决于用户根据其使用情况完成的顶级系统配置。
User will see the same block diagram for alluse-cases on all platforms.用户将在所有平台上看到所有用例的相同框图。
Thedetailed blocks inside the sub-system will depend on the system levelconfiguration selected by the user.子系统内的详细块将取决于用户选择的系统级配置。 The blocks inside the
subsystem will also depend on the platformlike DM812x or DM385.子系统内部的块也将取决于平台,如DM812x或DM385。
Thus McFW API allows user to use the same APIfor different products across different platforms, thus allowing user to keeptheir GUI and other applications portable to different
product lines andplatforms. 因此,McFW API允许用户针对不同平台的不同产品使用相同的API,从而允许用户保持其GUI和其他应用程序可移植到不同的产品线和平台。
3.2.1 McFW API
系统框架图Primary stream, Secondary stream,
注:大多数用户并不需要知道内部软件架构的底层细节,但有必要了解软件如何才能最有效地运行在系统内部。A link is the basic processing step in avideo data flow.链接是视频数据流中的基本处理单元。
A link consists of aBIOS6/Linux thread coupled with a message box (implemented using OSsemaphores).链接由BIOS6 / Linux线程和消息框(使用OS信号量实现)组成。
Since each link runs as aseparate thread, links can run in parallel to each other.由于每个链接作为单独的线程运行,链接可以彼此并行地运行。 The message box associated with a link allows
user application aswell as other links to talk to that link.与链接相关联的消息框允许用户应用程序以及其他链接与该链接对话。 The link implements a specific interface which allows other
linksto exchange video frames and/or bit streams with the link.链路实现特定接口,其允许其他链路与链路交换视频帧和/或比特流。
Link API allows user to create,control and connect the links. Link API允许用户创建,控制和连接链接。
McFW API uses Link API to make achain depending on the top level system configuration provided by the user.McFW API使用Link
API根据用户提供的顶级系统配置制作一个链。 Alternatively user's can use the link APIdirectly to make custom use-cases not supported by the McFW API.或者,用户可以直接使用链接API来创建McFW
API不支持的自定义用例。
3.3.1 “链接”的内部软件体系结构
在McFW内部使用的SW架构基于以下原则,视频处理工作加载在不同处理器之间划分,如下所示Processor OS Used for HOST A8 Linux 系统设置和控制,GUI,IO外设控制如SATA,以太网,USB,音频VPSS M3 BIOS6HDVPSS控制视频采集,视频显示,缩放,视频噪声滤波Video M3 BIOS6 HDVICP2视频压缩(H264编码,MJPEG编码)DSP BIOS6 SW OSD,自定义视频处理算法在每个处理器中,每个处理步骤如捕获或显示将在其自己的独立线程中运行。这种独立的执行线程在这个框架中被称为“link”。
Example links include, capture, display,DEI, Noise Filter, encode, decode示例链接包括,捕获,显示,DEI,噪声滤波器,编码,解码Eachthread or link is capable of handling processing of video frames from multiplechannels, each having different properties like width, height, data format etc.每个线程或link能够处理来自多个通道的视频帧,每个通道具有诸如宽度,高度,数据格式等不同的属性。A link will“connect” to other links to make a chain or a data flow.链接将“连接”到其他链接以形成链或数据流。This
connection and control canbe done by the user from the HOST A8 side.这种连接和控制可以由用户从HOST A8侧完成。Once a chain is setupand started, each link in the chain will exchange frames will its next link,using a well defined interface, to make the video processing data flow.一旦链建立和启动,链中的每个link将交换帧,其下一个链路,使用良好定义的接口,使视频处理数据流。The frameworkallows links on different processors to exchange frames directly with eachother without any intervention of the HOST A8.该框架允许不同处理器上的链路直接彼此交换帧,而不需要HOST
A8的任何干预。Once a chain isrunning, user can send control commands to individual links to control theirrun-time behavior.一旦链运行,用户可以向单个link发送控制命令以控制其运行时行为。Example,
changing encode Qp, frame rate control etc.例如,改变编码Qp,帧速率控制等。An example chain is shown below, in thischain multiple channels of video are captured, encoded via HDVICP encode linkand then stream out on the network示例链如下所示,在该链中,多通道的视频由捕获,通过HDVICP编码link编码,然后在网络上流出3CH 1080p + D1 YUV420 + 1080p @ 60fps Encode支持:HDVICP H.264 H.264 1080p 60fps H.264 D1 30fps MJPEG 1080p 5fps
3.3.2 link接口
link接口包括Link API – whichis used by chains or user applications for configuring and controlling the link Link API -
链或用户应用程序用于配置和控制linkInter Link API –which is used by other links for exchanging frames between two links Inter Link API -
由其他链路用于在两个link之间交换帧Link OutputQueue – is the queue which is used by another link (via the inter link API) toexchange frames with that linklink输出队列
- 是另一个link(通过link间link
API