文献标识码: A
文章编号: 0258-7998(2013)07-0124-03
全球信息娱乐技术的快速发展以及现代消费娱乐对车载娱乐的冲击和渗透,给汽车娱乐业带了前所未有的机遇和挑战。依靠传统DVD播放机已很难满足未来高端车系的娱乐需求,因此,集成高端消费娱乐电子产品的先进技术构建车载娱乐系统,以及实现高端便携设备与车载娱乐系统互连等新型设计理念,将成为车载娱乐系统未来新的发展趋势。为此,本研究采用当前先进的硬实时系统QNX为软件平台,提出一种新型的车载立体播放系统方案,以实现微型3D影院的车载化。该方案在提升汽车娱乐性的基础上,对于提高汽车高端品味方面也具有极其重要的意义。
娱乐系统作为区分所有车系品味高低的重要单元,乘客不仅能体验到高品质的视觉冲击感,而且有助于减轻旅途疲劳。目前车载播放系统主要有以下3种模式:(1)完全采用DVD播放机进行音视频解码播放;(2)车载终端集成音视频解码芯片和存储卡,实现硬解码播放;(3)采用便携设备与车载终端互连实现音视频播放。传统低中档汽车内部一般采用第一种模式构建其娱乐系统,由于传输的音视频数据量庞大,极易造成视频帧丢失和播放延时。现代汽车播放系统设计突破传统模式束缚,引进高性能音视频解码芯片实现网络互连,使车载娱乐系统发生了质的飞跃。2007年浙江大学的崔山在车载电脑DVD播放器系统软件设计中[1],详细阐述了传统车载DVD播放系统的应用现状,并提出一种基于WinCE5.0的终端集成型DVD播放控制模块,虽有效提高了音视频播放质量,但该系统平台实时性较差。针对这些不足,2012年QNX软件系统公司在互连汽车参考计划一文中[2],前瞻性地提出便携设备与车载终端互连的发展计划,并为下一代车载娱乐系统设计了各种外围接口,但该计划成本庞大,仍处于评估和实验阶段。
综上,针对车载播放控制单元传统应用的问题,鉴于及现代应用的混杂现状,提出基于微型立体影院的智能车载播放系统架构方案,采用分层逻辑和立体渲染模型的设计策略,不仅从系统原型和软件建模方面进行了规范化的设计,而且引用成熟的开源库进行解码和渲染,有效降低了研发成本,提高了产品的市场竞争力。
1 系统分层逻辑架构
整个系统方案采用分层逻辑的设计策略,上层负责接口逻辑调度,下层负责接口功能实现。主要由解码模块、渲染模块和人机交互模块组成,模块间以消息触发方式实现通信逻辑。其核心处理流程如下:
(1)解码视频流:调用FFMPEG库函数,打开源视频流文件,根据头信息判断视频流的有效性。若为可识别视频流,以时间戳为单位实时读取包数据,并以国际规范组帧到缓存区。
(2)渲染图形帧:以帧为单位,采用GLES图形渲染函数实时绘制左右视频图形帧数据,并按时间戳显示图形到车载终端界面。
(3)播放控制:用户通过终端播放控制界面,触发各功能按钮指令,实现对整个播放系统的功能控制和状态监测。
整套播放系统分层逻辑架构原型如图1所示。
另外,该播放控制系统设计了专门的消息处理机制来协同播放控制指令和内部消息,以保证系统消息的实时处理和用户指令的快速响应。消息处理机制如图2所示。
由于车载播放控制单元对软件系统平台的实时性和可靠性有较高的要求,本方案选用实时性在微秒级的QNX软件系统平台,其调度策略采用高优先级抢占模式,确保任何时刻占用CPU都是优先级最高的任务。同时,所有运行于该系统的进程都采用内存空间保护策略,独立于其他进程单独执行,进而保证一个进程的崩溃不会影响其他空间执行的进程。可见,选用的软件系统平台不仅以微秒级的延迟提高了视频图形帧渲染的实时性,而且充分利用现代新型技术来保证其内核的稳定性和安全性。
综合以上几方向,该播放控制系统方案不仅从软件平台上保证了系统的实时性和可靠性,而且采用分层逻辑和渲染模型构建系统原型,有效提升了整个系统的模块独立性。
2 系统功能模块
针对当前车载播放控制系统高昂的开发成本和较长的开发周期,本系统选用当前成熟的FFMPEG开源库作为视频源的解码模块,采用底层图形渲染库GLES完成视频图形帧的高效渲染。
2.1 视频源解码模块
视频源解码模块作为整个播放控制系统的核心处理单元,主要负责解析已编码压缩的视频源文件。解码后的包数据以帧为单位保存到缓存区,供后端图形渲染模型实时提取绘制。其核心处理流程如下:
(1)注册所有容器格式和编解码器类型;(2)打开视频流源文件;(3)从文件中提取流信息;(4)穷举所有流,查找其中的视频流类型;(5)查找视频流对应的解码器;(6)打开编解码器,并为解码帧分配内存;(7)从码流中循环提取帧数据;(8)判断图形帧类型,并送入视频解码器;(9)解码完后,释放解码器; (10)关闭视频流源文件。
整个视频流解码逻辑的伪代码如下:
void Video_decode_process()
{
av_register_all(); //注册可用的文件和解码器
av_open_input_file(); //打开视频文件
av_find_stream_info(); //取出流信息
for(i=0; i< nb_streams; i++); //遍历所有流
{
if(codec_type==CODEC_TYPE_VIDEO)
//找到视频流,音频流类
break;
}
avcodec_find_decoder(); //寻找相应的解码器
avcodec_open(); //打开解码器
avcodec_alloc_frame(); //给视频帧分配空间
while(av_read_frame()>=0) //读数据
{
if(stream_index==videoStream) //判断流
{
avcodec_decode_video(); //解码
if(frameFinished)
{
img_convert(); //转换图像数据 SaveFrame(); //保存数据
}
}
av_free_packet(&packet); //释放分配给包的空间
}
av_free(pFrame); //释放已分配的内存
avcodec_close(pCodecCtx); //关闭编解码器
av_close_input_file(pFormatCtx); //关闭视频文件
}
可见,系统视频解码逻辑裁剪了大部分冗余处理流程,有效避免了因解码繁杂而造成的延时和丢帧现象,真正做到了解码帧率可控的目的。另外,在设计早期即可通过帧率测试器充分论证图形渲染效率的高低,为快速研发高性能车载视频解码器提供有力的技术保障。
2.2 视频图形渲染模型
系统设计基于GLES2.0的立体渲染模型对视频图形帧进行实时渲染,主要功能逻辑模块包括纹理处理、图形渲染和视域设置,以完成图形数据的预处理、视频帧的渲染和图形显示域的设定。其核心处理流程如下:
(1)开启图形渲染专用线程,并行渲染解码图形帧数据;
(2)初始化图形库相关参数并获取渲染参数;
(3)不断向立体渲染模型输入图形帧数据,完成图形的实时绘制;
(4)收到结束指令后,退出渲染模型;
(5)释放已申请的所有内存资源。
由于3D立体视频源包括多码流图形帧数据,渲染模型根据源码流头信息确定分配的渲染模型个数,每个模型以输入的渲染参数组织图形数据,以同步的方式进行轮询实时渲染,进而满足3D眼镜对多码流视频源的同步实时聚焦,单个模型逻辑结构如图3所示。
从渲染逻辑模型可见,该设计理念以模块的独立性和复用性为基础,实时获取当前播放器的各项参数信息,并根据当前系统属性,传递最新参数到渲染容器,以保证用户和系统消息的快速响应,并提高渲染容器对庞大图形数据的处理效率。
渲染模块以GLES2.0为基础,融入实时逻辑设计理念,封装了一个高效的立体渲染模型,把复杂的计算过程分解到GPU中,显著提高了模块的实时性和复用性。
3 实验结果及评价
本系统采用飞思卡尔车规级新型处理器i.MX6Q系列作为硬件平台,该芯片技术参数为:1 GHz CPU主频,1 GB×32 DDR3(400 MHz),32 MB 16 bit 并行NOR Flash,可扩充的NAND Flash接口,LVDS数字图形输出接口,并集成了基于GLES2.0的GPU图形硬加速处理单元。软件平台选用加拿大哈曼公司开发的QNX硬实时操作系统,并利用其最新的IDE6.5嵌入式开发套件进行逻辑设计和代码测试。
实验采用德尔福集团公司某车型提供的车载信息娱乐终端系统,集成了所研究的立体播放控制单元。立体播放控制单元作为整个娱乐系统终端的一个节点,乘客可通过佩戴特定立体眼镜实现对3D视频的欣赏。输入的多码流视频源经立体播放控制单元解码、渲染、显示等处理逻辑后,左右眼画面同步叠加输出。经立体眼镜过滤,左眼只能看到左放映画面,右眼只能看到右放映画面,这些画面经大脑综合后,即可产生立体视觉。其界面显示效果如图4所示。
本研究针对2D和3D两类车载视频播放单元进行实验对比及社会调查分析,实验结果如表1所示。当其他条件完全相同时,3D模块播放帧率略低于2D模块,但在人的视感范围内,画面质量几乎不受影响;在CPU占用率方面,3D模块近似于2D模块,对整个系统的负载不造成任何影响。另外,社会抽样调查结果显示,人们普遍青睐于3D的超炫视觉体验,在条件许可的情况下,近80%的人更愿意配备3D播放控制单元。因此,所做研究和实验不仅大胆改变传统设计理念,而且以先进的立体科技为依托,为未来车载娱乐的发展提供了重要参考依据。
在现代车载娱乐系统向立体化、集成化、智能化快速转型的背景下,以探索现代高端汽车娱乐系统的高品质、高科技和人性化为研究目标,设计了一套以微型立体影院为基础的智能车载3D播放系统。采用以实时性和安全性著称的QNX系统为软件运行平台,提出分层逻辑方案构建系统原型;引入FFMPEG解码库对多码流视频源进行同步实时解码;设计基于GLES2.0的多码流渲染模型,实现图形帧的实时渲染和显示。下一步工作是丰富立体显示模式,满足更多3D片源格式。
参考文献
[1] 崔山.车载电脑DVD播放器系统软件设计[D].杭州:浙江大学, 2007.
[2] QNX软件系统公司. QNX互连汽车参考(CAR)计划[EB/OL]. [2012-06]. http://www.qnx.com.