基于TMS320DM6446的数字电影放映系统设计
摘要: 为了满足我国的实际需求,本文在达芬奇系统硬件平台的基础上,利用达芬奇软件技术,提出了开发数字电影放映系统的方案及其具体实现方法。该方案有利于缩短产品的研发周期,更快地占领市场。
关键字: 数字电影放映系统, TMS320DM6446
数字电影,是指以数字技术和设备摄制、制作、存储,并通过卫星、光纤、磁盘、光盘等物理媒体传送,将数字信号还原成符合电影技术标准的影像与声音,放映在银幕上的影视作品。与传统电影相比,它具有画面清晰、稳定性高、节约成本、利于环保等特点。从国际上来看,经过初期阶段的摸索,数字电影技术已经相对成熟,创作人员已从过去单纯地运用数字特技逐步转化为将其与传统摄制、传统特技融为一体的表现手法。在国内,数字电影经历了引进、消化、模仿、创新的过程。为了鼓励和推动我国数字电影的发展进程,国家投入了大量的资金,在全国建设了100多个数字影院。根据我国国情,首先是普及和推进我国社区及农村地区的数字电影的发展,因此,需要大量的低端配置的流动数字电影放映设备。
达芬奇技术是一种内涵丰富的技术综合体,是美国TI公司推出的针对数字多媒体应用而定制的基于DSP的系统解决方案组件的集合,其为多媒体设备开发者简化设计并加速产品创新提供了集成的处理器、软件与工具。TI公司在达芬奇平台上专门为音视频编解码(Codec)多媒体应用精心设计了系统框架,提供了丰富的系统程序接口(SPI)、应用程序接口(API)以及视频、图像、话音和音频千余种流媒体算法组件。应用系统开发者只需将它们封装成运行包,就能轻松地设计出高可用性和高可靠性的数字视频产品。
为了满足我国的实际需求,本文在达芬奇系统硬件平台的基础上,利用达芬奇软件技术,提出了开发数字电影放映系统的方案及其具体实现方法。该方案有利于缩短产品的研发周期,更快地占领市场。
1 硬件设计
数字电影放映系统主要是以数字多媒体处理器TMS320DM6446为核心来实现的。TMS320DM6446是TI公司的高集成度视频处理芯片,业界称为达芬奇(DaVinci)数字媒体片上系统(Digital Media system-on-Chip,DMSoC)。图1为TMS320DM6446功能结构框图。
如图1所示,DMSoC包括ARM子系统、DSP子系统、视频处理子系统(VPSS)、系统控制模块、电源管理模块、外部存储接口、外围控制模块和交换中心资源(SCR)等。其中,ARM子系统主要负责TMS320DM6446系统的整体配置和模块功能控制,以及调用视频算法。工作频率近600 MHz的DSP子系统负责视频算法的执行,其最大处理能力可以达到4800MIPS,极大地增强了音频和视频的解码能力。视频处理子系统包括1个视频前端输入接口(VPFE)和1个视频末端输出接口(VPBE),视频前端输入接口用于捕获视频信号,视频末端输出接口将图像输出到OSD上显示。
本系统的结构框图如图2所示。系统通过异步外部存储器接口(EMIF)外接64 MB的NAND Flash,用于存储启动代码和数据,以引导加载ARM Linux操作系统。利用ATA控制器接口外接160 GB 2.5 in的ATA硬盘,主要用于Linux系统的文件系统、应用程序和大量数字影片文件的存储。由于ATA硬盘输出的是3.3 V电压信号,而TMS320DM6446硬盘控制器输出的电压信号为1.8 V,为使硬盘与主CPU正常连接,需要电压转换芯片来保证硬盘的正常工作。此外,为了方便改变视频节目及便于实验的测试,本系统还通过MMC/SD存储卡接口扩展了2 GB的SD卡和USB2.0接口。利用TMS320DM6446的32位DDR2控制器接256 MB DDR2型SDRAM缓冲视频输入图形数据,作为OSD的缓冲器来存储ARM和DSP代码。
系统的视频前端输入接口(VPFE)支持复合视频(C
2 软件设计
数字电影放映系统的软件设计主要是在Linux系统环境下,利用达芬奇软件框架结构来完成的。通过将符合数字媒体标准(xDM)的音频和视频算法打包在由CodecEngine(代码引擎)管理的Codec Server(代码服务器)里,ARM端的应用程序就可以调用集成在Codec Server里的音频和视频算法,解码来自Linux文件系统的音频、视频、语音数据,输出到TMS320DM6446上控制视频和语音外设的Linux器件驱动器。
2.1 达芬奇软件开发方法
在进行本系统软件开发时,软件开发流程如图3所示。
软件开发具体步骤如下:
①DSP端,在TI公司推出的CCS3.3开发环境下,把音视频解码算法修改成符合数字媒体标准(xDM)的形式,并编译生成一个算法的库文件*.lib(等同于Linux环境下的*.a64P,直接在Linux环境下修改文件后缀名即可)。
②生成一个在DSP上运行的可执行程序*.x64P(即.out文件),也就是Codec Server。本系统的Codec Server里集成了MPEG-2、MPEG-4、H.264、AAC、MP3、G.71l多种形式的音视频解码器。
③根据Codec Server的名称及其中包含的具体的音视频解码算法,创建Codec Engine的配置文件*.cfg,包括Engine的不同配置、名称,每个Engine里包括的Codec以及每个Codec运行在ARM还是DSP端等。例如,在.cfg文件中,可以修改取得Codec模块的相关语句,按需要引用Codec模块。取得不同模块的语句如下;
代码模块可以自己开发,也可以充分利用第三方的软件技术,任何与xDM兼容的算法都可以集成到Codec Server中。这样就避免了开发的重复性,降低了开发的难度。
④将收集到的不同音视频Codec包、Codec Server和Engine配置文件*.cfg以及应用程序通过编译、链接,最终生成ARM端可执行文件。
2.2 达芬奇中间框架Codec Engine
Codec Engine是介于应用程序和代码服务器的中间层,是利用DaVinci技术简化数字产品开发的关键组件。它为应用程序提供了VISA接口,在不必考虑复杂的视频、图像、话音和语音处理算法(VISA)的前提下,利用Codec Engine提供的API,应用程序可以方便地调用符合xDM的算法组件。
2.3 ARM端解码应用程序的设计
本系统的应用程序是在Linux系统环境下,利用DaVinci技术的Codec Engine提供的API来完成的。应用程序运行在TMS320DM6446双核处理器的ARM端,解码存储在硬盘里的音频、视频、语音数据,通过视频末端输出接口(VPBE)输出,在OSD上实时显示。
解码线程的流程如图4所示。
应用程序主要包括5个POSIX线程:主线程(控制线程)、视频线程、显示线程、语音线程以及音频线程。从图4中可以看到,视频、语音、音频线程在主线程变成控制线程之前产生。显示线程由视频线程产生。“MSP430+IR”用来接收用户输入的命令,只有在命令行里提供了一个视频文件时,才能建立视频线程。同时,由于音频和语音要求同样的外设(AIC33),因此,不能同时解码音频和语音文件。此外,所有的线程都是抢占式的,基于优先级的时序(SCHED_FIFO),其中,显示线程具有最高的优先级,接下来是视频线程,控制线程的优先级最低。线程的初始化由Rendezvous公用程序模块来同步。该模块使用POSIX的条件来同步线程的初始化。每个线程执行其初始化后,通知Rendezvous的对象。所有的线程都结束初始化后,同时解锁,开始执行主循环。
3 测试结果
本系统的软件开发是在虚拟机上的Linux操作系统下进行的,Linux操作系统的版本为Monta Vista Linux Professional Edition v4。测试前,用交叉网线将硬件平台通过交换机与主机相连,并配置NFS(Network File System,网络文件系统)服务,使得开发板和主机可以互相访问;同时,在主机的Windows环境下,将开发板与主机用串口线相连,设置超级终端,通过超级终端监控硬件系统的启动情况,并设置命令参数。
测试时,在超级终端里输入解码命令,硬件系统通过MSP430解析输入的命令,读取存储在HDD(硬盘)里的音视频数据,利用OSD在线显示解码的影片。图5~图7分别为对MPEG-2、MPEG-4、H.264音视频的解码图像。
结语
本文结合达芬奇数字多媒体技术提出了数字电影放映系统的硬件解决方案及软件设计方法。利用达芬奇对高层Linux的支持、标准化的API以及产品化的底层驱动器,大大降低了设计数字视频系统的复杂性,缩短了产品的开发周期。测试表明,所设计的数字电影放映系统支持多种格式的数字影片的高清播放,且具有高稳定性和高可靠性。该设计方案还可以用于其他数字产品的开发,如IP机顶盒、网络摄像机、医学图像处理、视频会议等。
暂无评论