引言 嵌入式播放器被广泛应用于Intenet-TV、iDVD、(2)
2013-07-06 01:18
导读:3 软件设计 3.1 开发环境 音视频的播放需要DSP 核进行解码,并由ARM 核完成系统的管理和控制,因此需要在宿主机上建立一套ARM 端的交叉编译环境以及DSP
3 软件设计
3.1 开发环境
音视频的播放需要DSP 核进行解码,并由ARM 核完成系统的管理和控制,因此需要在宿主机上建立一套ARM 端的交叉编译环境以及DSP 端的DSP/BIOS 链接编译环境,具体环境参数如下:
宿主机操作系统Ubuntu 8.10;
交叉编译编译工具链ARM GNU/Linux EABI 2012q1;
OMAP35x-PSP-SDK-02.01.03.11;
DVSDK_3_00_02_44。
由系统总体结构可见,软件设计主要包括以下几个方面:移植和构建系统的软件平台,包括引导程序和嵌入式Linux 移植、驱动程序的开发以及图形化文件系统的构建;移植嵌入式浏览器;开发音视频播放插件。
3.2 引导程序的移植
引导程序由 X-Loader 和U-Boot 两级组成,本系统中使用的版本分别为X-Loader-1.41和U-Boot 1.3.3。X-Loader 作为一级引导程序,在系统上电后由CPU 内部ROM 自动复制到内部RAM 并执行。主要作用为初始化CPU,根据启动方式从NAND Flash 或MMC/SD 复制U-Boot 到内存中,然后把控制权交给U-Boot;二级引导程序U-Boot 主要用于和用户进行交互,提供映像更新、引导内核等功能。
3.3 angstrom 桌面环境的构建
angstrom 项目由原来效力于OpenEmbedded,OpenZaurus 和OpenSimpad 项目的一小组成员所启动,旨在制作一个稳定的,界面友好的嵌入式发行版本,用于手持设备,机顶盒和网络存储设备等嵌入式设备[3]。angstrom 系统中的提供了各种软件,包括文档编辑,上网浏览,音频视频播放及图形编辑等功能,并可用USB 键盘鼠标对此系统进行操作控制。为此本系统采用在OMAP3530 上构建angstrom系统来简化嵌入式Linux 移植、驱动程序的开发、图形化文件系统的构建以及嵌入式浏览器移植等工作。angstr0m 系统通过在线构建,配置参数如表1 所示。
(科教作文网http://zw.ΝsΕAc.Com编辑整理) 由于 angstrom 系统中提供了可选的嵌入式Minefield 浏览器组件,嵌入式Minefield 浏览器支持一套NPAPI 的标准插件接口[4],通过实现这套接口可完成播放插件的调用。
3.4 音视频插件的设计
从物理形式上看,音视频插件可视为独立于浏览器的一个动态链接库,在Minefield 启动时会从指定的文件夹获取播放器插件的描述信息和对应的MIME 类型,并根据获取的信息在浏览器中进行注册。当碰到自身无法解析的资源名称时,Minefield 会查询插件注册信息,当MIME 类型与播放器插件匹配时,则将该插件链接库载入内存。
当插件被载入后,浏览器将为插件分配内存并初始化实例的共享资源,然后将媒体资源的URL 以参数的形式传递给播放插件,直到浏览器完成数据传输或者数据传输被异常终止时才释放数据流占用的相关资源并销毁实例、释放插件的共享资源。
播放插件由一个主线程和数据接收子线程、音频解码子线程、视频解码子线程、输出子线程和用户接口子线程组成。首先主线程对获取的URL 参数进行处理,主要是去除URL 中的冗余信息,并将参数进行字符集转换,并且根据媒体数据流的传输速度确定缓冲区大小。
在完成编解码引擎运行时(Codec Engine Runtime)和达芬奇多媒体应用接口[5](DavinciMultimedia Application Interface)的初始化等工作后开启各子线程;当传送的数据量达到最小缓冲数据量时,数据接收子线程对获取的媒体数据进行解析,通过剥离数据包头文件来确认媒体数据类型,从而实现音视频的分离,最后将分离后的数据分别封装成DMAI 需要的Buffer_Handle格式并分别送入音频解码FIFO 和视频解码FIFO;音频(视频)解码子线程首先根据不同的数据类型,创建相应的解码器,然后从解码FIFO 取出数据解码,将解码后数据送入音频(视频)显示FIFO;输出子线程以音频为基准完成音视频同步后将数据分别送至音视频输出设备实现播放输出。播放、暂停、停止等功能在UI 子线程中实现。