DSP

IPNC_RDK_McFW_UserGuide

2019-07-13 16:31发布

        IPNC RDK 文件版本 2.10 多通道框架(MCFW) 软件用户指南        

TABLE OF CONTENTS

  1  介绍.. 3 1.1  概述.. 3 1.2 关键首字母缩略词和词汇.. 3 2  安装和构建.. 4 2.1 从属包.. 4 2.2  安装 IPNC RDK. 5 2.3  构建 the IPNC RDK. 5 2.4  运行 the IPNC RDK. 5 3  顶层设计.. 5 3.1  软件层.. 5 3.2     McFW API10 3.3     Link API12 3.4  .. 21 4  目录结构.. 31 4.1  接口文件.. 31 4.2  模板示例代码.. 33 4.3  .. 33 5  额外细节.. 34 5.1    内部处理器通信详细信息.. 34 5.2    内存映射详细信息.. 34 5.3   显示控制器和显示功能详细信息.. 34 5.4  IPNC 应用程序配置.. 35 5.5  智能/视频分析.. 43 5.6  视频帧缓冲接口.. 43        

1  介绍

1.1  概述

IPNC RDK是用于TIDM8127DM385 SOC平台的多处理器软件开发框架,针对监控IPNC,混合IPNC和视频分析等应用进行了优化。 IPNC RDK中的软件框架允许用户创建涉及传感器视频捕获,ISP处理,分辨率缩放,视频噪声滤波器,视频显示(SC,噪声滤波和编码)和视频流等的不同多通道数据流。 

1.2 关键首字母缩略词和词汇

术语 描述 IPNC IP网络摄像机-图像传感器输入网络流,ISP将它转换为YUV其转换为数字编码的比特流和网络流。 IPNC RDK IPNC参考设计工具包- 包括多通道软件框架,硬件平台。 ISS 成像子系统-两个硬件模块的文件所涉及软件驱动包 HDVPSS 高清晰度视频处理子系统- 简称为硬件模块文件中涉及软件驱动程序包 HDVICP 高清晰度视频和图像协处理器-文档中涉到的主要为软件编解码器包和硬件IP区块 Ducati 双核M3处理器控制HDVPSSHDVICP硬件引擎 Video M3 ARM Cortex    M3(内嵌Ducati 子系统) 控制HDVICP 编解码器。 VPSS M3 / DSS M3 / ISS M3 ARM Cortex    M3(内嵌Ducati 子系统) 控制 HDVPSSISS 驱动 NF 噪声滤波器 - 参考文档中的硬件噪声滤波器模块以及支持它的软件组件   SC 标量 - 参考文档中的硬件标量块以及软件 组件支持它 McFW 多通道架构-多通道应用IPNC开发的软件框架。 Links 最小的软件组件控制功能单元(如捕获,DEI,显示器) -具有输入队列和输出队列 IPC 处理器间通信 ListMP 共享区域-具有跨处理器共享存储SYSLINK组件 SR 共享区域-具有跨处理器共享存储SYSLINK组件 VA 视频分析  

2  安装和构建

2.1 从属包

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

2.2  安装 IPNC RDK

有关安装IPNC RDK的说明,请参阅随发行的软件包提供的安装指南。

2.3  构建 the IPNC RDK

有关安装IPNC RDK的说明,请参阅随发行的软件包提供的安装指南。

2.4  运行 the IPNC RDK

有关执行IPNC RDK提供的默认应用程序的说明,请参阅随发行的软件包提供的安装指南。

3  顶层设计

3.1  软件层

软件使用不同的层实现,如下所示。 分层的量基于模块性(更多抽象/层)和易用性(更少层数)之间的平衡来完成。   HOST A8   VPSS M3   Video M3   C64x DSP   下面描述软件的不同层, Processor  Applicable Description TI SW Package Linux HOST A8 Linux操作系统,包括文件系统,SATA,以太网,USBIO驱动程序 Linux PSP BIOS6 VPSS M3 Video M3 DSP BIOS RTOS用作操作系统 Video-M3, VPSS-M3, DSP. 视频-M3VPSS-M3DSP Provides features like threads, semaphores, interrupts. 提供线程,信号量,中断等功能。   BIOS XDC(用于BIOS和其他配置)     Layer Processor  Applicable 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接口的视频编码APIUses framework components for用于框架组件 资源分配 XDIAS Framework components IVAHD HDVICP2 API MJPEG encoder H264 encoder ALG VPSS M3 用于视频处理和高级功能的高级算法。例如-视频稳定,AWBAE,闪烁检测等 ISS Face Detect VPSS M3 面部检测引擎驱动程序可以做到高达32张人脸的实时检测 ISS Links HOST A8 VPSS M3 Video M3 DSP 实施单个链接。一些链路是特定于处理器的,而一些链路在处理器之间是公共的   IPNC RDK Link API HOST A8 链接API允许用户创建,连接和HOSTA8控制环节,VPSS M3M3的视频和DSP McFW   Layer Processor  Applicable Description TI SW Package     Link API用于创建链接链,形成用户定义的用例。 连接到彼此的链接是平台相关的。   McFW API HOST A8 多通道应用程序特定API,允许用户使用单个简化的API接口为IPNCNVR设置和控制预定义的应用程序特定链。 这使得用户可以直接使用的链接,而无需了解详细的链路API McFW API是平台独立的,相同的API将在DM812x工作,DM385 McFW RTSP Stack HOST A8 开源的的C ++库,用于多媒体流,采用开放的标准协议开源包(RTP / RTCPRTSPSIP 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 Processor  Applicable Description TI SW Package     link API . “McFW” demo, this uses the McFW API                                                         -     

3.2      McFWAPI

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.子系统内部的块也将取决于平台,如DM812xDM385 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,
    示例,三流IPNC用例的简单流程图如下所示。    

3.3      LinkAPI

注:大多数用户并不需要知道内部软件架构的底层细节,但有必要了解软件如何才能最有效地运行在系统内部。 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 系统设置和控制,GUIIO外设控制如SATA,以太网,USB,音频 VPSS M3 BIOS6  HDVPSS控制视频采集,视频显示,缩放,视频噪声滤波 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 - 链或用户应用程序用于配置和控制link Inter 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(通过linklink API