基于ADSP-BF532嵌入式网络视频服务器研究
视频输出UART接口:利用ADSP-BF532提供的UART口,加快调试过程。
串行SPI和网络接口设备MPC860的编程:利用SPI接口,将ADSP-BF532作为传输数据的主设备,MPC800作为从设备,将数据传送给MPC860处理,接收视频数据并提供网络接口。其中网口、SPI接口接收数据的流程如图2所示。
3.2 视频编码
考虑到压缩效率和码率,视频服务器的核心采用了MPEG-4 Simple Profile标准进行视频压缩编码。只进行帧内编码(I帧)和帧间预测编码(P帧),而不进行双向预测编码(B帧),适合矩形视频对象(Video Object)编码。
其中的核心算法有DCT和IDCT,它采用2D 8×8DCT,并且采用循环缓冲,充分利用了Blackfin DSP的优势,减少了循环体内部的指令执行数;MPEG-4采用两种方法确定量化步长,一是采用TM5速率控制方式,二是采用MPEG-4中定义的速率控制模型,它们都是通过码流速率大小以及图像质量的要求来改变量化系数。MPEG-4的直流系数量化采用非线性量化方式,交流系数既可以选择H.263量化也可以使用MPEG量化,这里采用H.263模式。
运动预测使用条块SAD(当前的图像与预测图像的绝对差值和)最小搜索出最匹配的宏块,而且Blackfin DSP提供了一条视频专用指令SAA,大大提高了速度;最后用边界填充(PADDING)减少在宏块边界上的运动误差。
3.3 视频网络传输的实现
经过视频采集、压缩后的视频数据通过网络进行传输,其传输层用TCP传输协议传输信息包很小的操作控制命令,用UDP传输协议传输视频图像数据。因为TCP这种传统的连接协议必须要求数据无误地顺序传输到客户端的应用层,可以利用TCP传输协议传输网络监控中的控制命令,信号服务器和客户端正确接收到操作命令。UDP传输协议没有提供网络流量控制和数据包丢失、出错处理,在高级压缩算法如MPEG-4采用了帧间压缩的方法,数据包丢失可能影响到连续几帧视频图像。所以,基于UDP传输协议的应用程序必须靠设计解决可靠性问题。
上端软件提供友好的用户界面,用Visual C++6.0实现,根据用户的需求,通过网络从远程终端接收视频数据,包括MPEG-4的解码过程、网络传输控制和网络命令编码等。有两种编写方式,第一种需要专门写一个服务器/客户端软件来发送和接收视频图像数据;第二种可以采用服务器/浏览器模式,即将客户端软件做成控件,嵌入到网页中,做成基于WEB的数字视频服务器。本文采用第一种方式。
网络通讯模块采用组播技术,提高程序的效率。系统IP网络数据通信流程图如图3所示。本文为实现组播服务特别写了一个类Cmulticast,它是专门为视频传输而封装的类,用于服务器和客户机两端。下面对此类的公共访问函数进行介绍。
class CMulticast :publicCobject
{
public:
void Close(); //关闭创建的套接字
BOOL IsConnect();
Static Void Unintilize();//Winsock终止
Static Void Initilize(); //从指定组的指定端口读取数据
Int Send(char* lpData,int size)//向目的地址发送消息
BOOL Create(Cstring lpstrADDR,unsigned short port,HWND HWND);//创建和绑发送或接收套接字并把该套接字加入组插组,并设置了消息回调机制
CMulticast();
Virtual ~CMulticast()
Public:
HWND m_hWnd; //用于消息传递的窗口句柄
SOCKET m_hWnd; //用于消息传递的窗口句柄
SOCKET m_hSocket;//发送或接收用套接字
BOOL m_bConnected;//是否已经加入到一个组
SOCKADDR_IN addr;//发送套接字地址SOCKADDR_IN srcaddr; //接收或发送的目址
}
3.3 系统级优化
Blackfin软件开发平台的编译系统支持ANSI C以及C++编译,其系统还提供了大量的多媒体操作指令。在针对系统软件开发时,可以根据硬件的特点研究和开发调试过程中的经验,对代码的编译和具体任务的处理进行优化。以及针对要缩短显示模块代码执行时间而进行上端软件的设计优化。
4 实验结果
在该实验的基础上,经过对ADV7183采集的视频序列(帧率为30fps,CIF格式)进行测试,结果表明:(1)DSP可通过SPI接口实时传输视频图像编码数据,数据不丢失,不出错;(2)在对MPEG-4视频压缩编码测试时重建图像质量保真度接近1;(3)在局域网上作模拟实验,可以实时传输CIF尺寸视频图像,传输延迟控制在0.5s以内;(4)UART接口能够完成本地视频输出。基于ADSP-BF532的嵌入式网络视频服务器的设计方案是可行的,但是某些技术指标仍然无法胜任实际的应用场合,需要进一步提高视频压缩的测试结果,增加大容量的硬盘存储系统来存储视频数据。
ADSP-BF532 视频服务器 嵌入式网络 相关文章:
- 视频服务器软件MJPG-streamer在嵌入式多媒体数据处理中的应用(05-25)
- 基于Android系统的H.264视频压缩技术实现(12-23)
- 基于单片机的嵌入式系统网络设计方案(03-01)
- 基于ARM9 AT91RM9200T的嵌入式网络接口设计(04-10)