图2 系统数据流程
4.2嵌入式音视频同步设计
本方法的基本思想是以视频流为主媒体流,音频流为从媒体流,视频的播放速率保持不变,根据本地系统时钟确定的实际显示时间,通过调整音频播放速度来达到音视频同步。整个系统的音视频同步数据流程见图3。首先选择一个本地系统时钟参考(LSCR),要求本地系统时钟参考上的时间是线性递增的。然后将LSCR分送到视频解码器和音频解码器,由这两个解码器根据各帧的PTS值对照本地系统时钟参考产生各帧准确的显示或回放的时间。也就是说,生成输出数据流时依据本地参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时根据本地系统时钟参考上的时间来安排播放。
图3 音视频同步数据流程
基于时间戳的播放过程中,仅仅对早到的或晚到的数据块进行等待或快速处理,往往是不够的。如果想要更加主动并且有效地调节播放性能,就需要引入反馈机制,也就是通过对比音视频的时间戳将当前数据流的播放状态反馈给上层的“源”。如果音频流滞后,就即时通知音频解码器加快音频流输出,但是如果滞后太多,则直接将当前数据丢弃,直接跳到下一帧;如果视频流滞后,就通知音频解码器减慢音频输出速度等待视频流,如滞后太多也直接进行跳帧。数据流首先通过分离器分解为视频数据流和音频数据流,然后经过对应的解码器,同时由本地系统时钟来进行时间戳控制;获得准确显示或回放时间以后进行时间戳比较;若同步则直接输出,不同步则进行音频跳帧或等待,直到同步后输出。
5 总结
本文的创新点是系统具有很好的可移植性,它的实现过程以及核心的代码对类似应用具有很好的可重用性,只需通过较小的修改就能移植到不同的操作系统和平台上,可以广泛使用在各种嵌入式系统中,如PDA,智能手机等方面,具有较高的经济价值,同时也可以为开发其他嵌入式系统软件提供参考意见;其次,本文围绕用户的基本需求,提出了一个基于嵌入式Linux操作系统和图形用户界面QT/Embedded的媒体播放器设计方案。该设计方案具有低耦合、高内聚、可扩展、可移植等良好特点,并在设计的基础上将该方案实现。该媒体播放器支持编码格式为MPEG-1、MPEG-2和MPEG-4的多媒体文件。同时具有存储空间小,响应速度快的性能特点,并支持播放控制、播放列表等功能,可自由切换中英文双语界面,用户可以选择打开任意位置的文件。项目经济效益50万元。