收藏 分享(赏)

网络解码.docx

上传人:11xg27ws 文档编号:4297665 上传时间:2018-12-21 格式:DOCX 页数:6 大小:274.18KB
下载 相关 举报
网络解码.docx_第1页
第1页 / 共6页
网络解码.docx_第2页
第2页 / 共6页
网络解码.docx_第3页
第3页 / 共6页
网络解码.docx_第4页
第4页 / 共6页
网络解码.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、系统框架DaVinci 平台下的软件开发主要是围绕 DVSDK 开发工具包与相应的 Montavista 文件系统进行的。Montavista 提供了系统运行所需的 Linux 文件系统与库文件,以及交叉编译器等必要文件。DVSDK 主要是提供了 DSP 下编程所需的交叉编译器、支持库,同时还提供了MPEG4、 H264 等常用的音、视频编解码算法在 DSP 端的实现库。更重要的是,对于 ARM+DSP 双核的平台特性,DVSDK 还提供了用于 ARM 与 DSP 通信的主体框架Codec Engine。如图 1 所示。SERVVISA接 口应 用 程 序DM接 口 /CE核 心 接 口COD

2、DPLINK模 块 0x800x8670图 1 Codec Enging 模块角色结构图Codec Engine 是一套包含了同时运行在 ARM 和 DSP 两个核心之上的程序以及沟通两者之间的程序的框架集合,它介于应用层和信号处理层,是连接 ARM 与 DSP 或者协处理器之间的一个重要桥梁。ARM 端的上层应用程序首先调用 Codec Engine 提供的接口(DMAI/VISA 等) ,并将需要调用的算法与待处理数据在 CMEM 中的地址传给该接口,该接口会把信息打包,以消息队列的方式,通过 DSPLINK 模块发送给 DSP 端的服务程序,服务程序解析出算法与内存地址后便会在 DSP

3、端调用相应的算法程序,完成处理。UDP 协议UDP 是 User Datagram Protocol(用户数据报协议)的英文缩写。 UDP 只提供一种基本的、低延迟的被称为数据报的通讯。所谓数据报,就是一种自带寻址信息,从发送端走到接收端的数据包。UDP 协议经常用于路由表数据交换转发和系统信息、网络监控数据等的交换。UDP 协没有 TCP 那样的三次握手并且基于数据报,因此 UDP 不基于连接,也没有TCP 那样丰富的头信息以实现诸多功能。UDP 数据报的头只包含了类似于 TCP 中包含的 UDP 源端口、 UDP 目的端口号、两个字节的校验和域、两个字节的信息长度域(用来告诉接收端信息的大

4、小,让接收端判断信息是否有效) 。由于 UDP 协议是如此简单,所以不要指望 UDP 连接会像 TCP 连接那样可靠,它一点都不可靠,UDP 只负责尽力的转发数据包,但是却不会把错误的数据报重新发送,它会丢弃掉所有被破坏或者损坏的数据报,并且继续后面的传送,至于被丢弃的部分,发送端不知道,也不会被接收端要求重新发送;除此之外,UDP 不具备把乱序到达的数据报重新排列的功能(因为没有 TCP 头中包含的 TCP 序列号) ,这样一来,UDP 便是完全不可靠的,因为你根本就无法保证你收到的数据是完整的。但是,UDP 协议的不可靠并不代表 UDP 是毫无用处的,恰恰相反,没有了和 TCP 一样的复杂

5、头信息,各种设备处理 UDP 数据报的时间将会大大缩短,效率比 TCP 要高得多,由于 UDP 处理的这种高效性,UDP 往往被用于那些数据报不断出现的应用,比如 IP 电话或者实时视频会议,也被用于在路由器之间传输路由表更新信息、传送网络管理和监控数据等,DNS 也是使用 UDP 协议进行域名转换。UDP 协议特性如下:(1 ) UDP 是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP 把每个消息段放在队列

6、中,应用程序每次从队列中读一个消息段。(2 ) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。(3 ) UDP 信息包的标题很短,只有 8 个字节,相对于 TCP 的 20 个字节信息包的额外开销很小。(4 ) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。(5 ) UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数) 。(6 ) UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付给 IP 层。

7、既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。隔行扫描隔行扫描(Interlaced)是在显示设备表示运动图像的方法,隔行扫描方式是每一帧被分割为两场画面交替显示,隔行扫描就是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。由于视觉暂留效应,人眼将会看到平滑的运动而不是闪动的半帧半帧的图像。但是这时会有几乎不会被注意到的闪烁出现,使得人眼容易疲劳。当屏幕的内容是横条纹时,这种闪烁特别容易被注意到。隔行扫描最大的问题是容易出现行间闪烁、并行现象或垂直边缘锯齿效应,影响人眼观看的视觉效

8、果。在开发过程中,遇到了一些采集的 PAL 隔行扫描还原时的问题。在摄像头采集的图像静止不动的时候,可以说画面蛮清晰漂亮的,但是画面中的物品如果频繁的运动,如手在镜头前晃动,其轨迹就会有明显的边缘锯齿感,我们简单的举例说明下,静止时如右图很正常清晰,而一旦运动时就如像左图的效果。图 2 图 3随着现在视频行业的高速发展,很多时候视频都需要进行去隔行处理,要解决这个问题,其实也不难,问题就是出在隔行扫描的帧频率太慢,奇场和偶场加起来每秒才 25Hz,而且奇场偶场的数据是在分别不同的时间进行采集的。因此,当物体运动时在视觉效果上看起来就会有锯齿感。具体的去隔行意思就是用单独的一个奇场还原奇场偶场都

9、有的完整图像,单独的一个偶场也还原奇场偶场都有的完整图像,这样在每秒看到的就是 50Hz 的图像,从人眼视觉敏感度上来说,就根本很难感觉到锯齿感了。由于上述隔行扫描的种种问题,所以采取了一些去隔行的处理,如图 4 所示。处理后每次视频源输出的单场(奇场或者偶场 )就会被处理成一个完整的图像,即每秒实际更新的图像是 50 帧。 图 4图 4 中的去隔行滤波其实和很多资料中提及的 4:2:2 到 4:4:4 转换的算法是一致的。简单的说,也就是通过相近行的图像数据来重构没有数据的图像。后端显示 VPBE在一些视频设备上看到有 YUV、YcbCr 等标记的接口标识,此种接口成为色差端口 ( 也称分量

10、视频接口) 。它通常采用 YPbPr 和 YCbCr 两种标识,前者表示逐行扫描色差输出,后者表示隔行扫描色差输出。色差传送的视频有许多种方式,例如将三原色直接传送的 RGB 方式,以及从 RGB 转换为明度(Y)与色差( Cb/Cr 或 Pb/Pr)的方式。RGB 方式将所有的颜色信息作同等的处理,虽然有最高的画质,但由于 RGB 方式对传输带宽和储存空间的消耗太大,为节省带宽,使用色差方式来传送与记录分量视频是现在的主流。色差在设计上利用了“人眼对明度较敏感,而对色度较不敏感”的特性,将视讯中的色彩信息加以削减。所谓的 “色差”即为颜色值与明度之间的差值。转换过后的颜色信息量被删减了约一半

11、,但由于人眼的特性,使得色差处理过后的视频与原始视频的差异很难被察觉。最终的色差数据与 RGB 数据相比节省了 1/3的带宽。色差端子是在 S 端子的基础上,把色度(C)信号里的蓝色差(b) 、红色差(r)分开发送,其分辨率可达到 600 线以上。很多电视类产品都是靠色差输入来提高输入讯号品质,而且透过色差端子,可以输入多种等级讯号,从最基本的 480i 到倍频扫描的 480p,甚至720p、1080i 等等,都是要通过色差输入才有办法将信号传送到电视当中。色差输出将传输的色度信号 C 分解为色差 Cr 和 Cb,这样就避免了两路色差混合译码并再次分离的过程,也保持了色度信道的最大带宽,只需要

12、经过反矩阵译码电路就可以还原为 RGB 三原色信号而成像,这就最大限度地缩短了视频源到显示器成像之间的视频信号信道,避免了因繁琐的传输过程所带来的影像失真,所以色差输出的接口方式是目前模拟的各种视频输出接口中最好的一种之一。CVBS 视频复合视频接口,其在视频领域应用是非常多的,其是“Color, Video, Blank and Sync“, “Composite Video Baseband Signal“, “Composite Video Burst Signal“, or “Composite Video with Burst and Sync“.的缩写。全称为 Composite

13、Video Broadcast Signal 或 Composite Video Blanking and Sync,中文翻译为复合视频广播信号 或 复合视频消隐同步,CVBS 是被广泛使用的标准,也叫做基带视频或 RCA 视频,是全国电视系统委员会(NTSC)电视信号的传统图像数据传输方法,它以模拟波形来传输数据,是的一个模拟电视节目(图片) 信号在与声音信号结合,并调制到射频载波之前的一种格式。在快速扫描的 PAL/NTSC 电视中,甚高频(VHF)或超高频(UHF)载波是复合视频所使用的调整振幅,这使产生的信号大约有 6MHz 宽。一些闭路电视系统使用同轴电缆近距离传输复合视频,一些 D

14、VD 播放器和视频磁带录像机(VCR)通过拾音插座提供复合视频输入和输出,这个插座也叫做 RCA 连接器。视频传输中,最担心的就是信号损失,在复合视频中,色差和亮度信息的干涉是不可避免的,特别是在信号微弱的时候。这就是为何远距离的使用 VHF 或 UHF 的 NTFS 电视台用老旧的鞭形天线。复合视频包含色差(色调和饱和度) 和亮度 (光亮)信息,并将它们同步在消隐脉冲中,用同一信号传输。DM368 视频处理后端(VPBE)由字符叠加(OSD)模块和视频编码器(VENC )模块组成,这两个模块提供了一个强大的、灵活的后端显示界面。视频编码器模块主要功能:将数字信号转换成模拟信号,以便 PAL/

15、NTSC 制式显示;产生模拟视频输出所需要的时钟信号。字符叠加模块的功能:将位图转换成 YCbCr 格式叠加在视频数据之上。VENC 主要特性是模拟视频输出;提供时钟信号。支持 NTSC/PAL、S-Video、Component YPbPr 等 SDTV 输出。其结构图如下:图 5 视频后端框图软件设计软件设计的整体结构上基本遵循了 Linux 系统的基本结构,即分为用户空间程序与系统内核程序两部分。另外由于涉及到 ARM 与 DSP/协处理器通信的问题,系统的框架还要按照 DVSDK 与 Codec Engine 的结构进行设计。整体框架如图 5 所示。用 户 空 间内 核 空 间 DSP

16、用 户 应 用 程 序GNU C/+库文 件 系 统 工 具系 统 调 用设 备 驱 动 模 块 Codec Engi模 块UARTI2CFILEAUDIOVIDEOEMACUSBSPICMEDSPLINKDMAI/VSA接口ARM H264MPEG4JPEG图 6 软件系统整体框架示意图系统的软件主要分为 ARM 端和 DSP/协处理器设计两大部分,逻辑、控制等功能性软件运行在 ARM 端,编解码等算法程序运行在 DSP/协处理器端。ARM 端用户空间的应用程序通过 DMAI/VISA 调用到内核空间的 Codec Engine 模块,然后相应模块会调用 DSP/协处理器端的算法程序。主要功

17、能1、 网络采集 H264 视频流2、 解码 H264 视频流3、 将隔行视频进行处理成逐行4、 通过模拟输出,PAL 制式显示为了使应用程序结构清晰、最大程度的使用 ARM 端资源,应用程序使用多线程编程,分为接收线程、解码线程、显示线程;各线程之间采用同步机制。网络接收部分开辟一个足够大缓冲区用来存放网络接收到的视频数据;根据 H264 数据格式,检测缓冲区内数据若为一场则将数据送给解码线程,解码线程将 H264 数据解码为 YUV420SP 格式数据送给后端显示模块,最终显示在监视器上。软件流程图如图 7:软件流程图主线程初始化接收线程初始化 U D P 接收解码线程初始化解码器显示线程初始化显示循环接收 H 2 6 4 数据 解码一场数据P A L 显示一场数据YN算法 / 插值图 7 软件流程图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 网络与通信

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报