基于TMS320DM6446的数字电影放映系统实现方案
到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机顶盒、网络摄像机、医学图像处理、视频会议等。
- 面向数字视频的达芬奇技术(01-24)