当前位置:易博PCB抄板工作室 >> 技术文档 >> SMP86 54的MKV播放器设计与实现

SMP86 54的MKV播放器设计与实现

    随着电子技术和多媒体技术的进步,数字视频的分辨率逐步提高,开始由SD(标准清晰度)向HD(高清晰度)演变。伴随着大屏幕液晶显示技术的发展,高清影片开始逐步进入到广大消费者的视野。高清播放机由于支持众多的视频和音频编码格式,能够流畅播放1080i/p清晰度的高清影片,并且在输出方面支持模拟、数字、HDMI等多种方式。此外在价格和片源方面相对于蓝光播放机有很大优势,将逐步替代VCD、DVD等传统播放器,成为下一代家庭影音娱乐的主流产品。
    MKV是一种新的多媒体封装格式,支持多种视频和音频编码格式,能够将多达16路不同格式的音频和不同语言的字幕流封装到一个文件中,在高清影片中得到了广泛的应用,越来越多的视频和影片采用MKV作为其封装格式。能否支持MKV封装格式是高清播放机性能的一个重要指标。本文提出了一种基于SMP86 54平台的MKV播放器设计与实现方案,并针对嵌入式系统和高清媒体的特点做了进一步优化,能够提供对MKV文件的流畅播放。
    1 MKV封装格式
    MKV全称为Matroska Video,是一种新的多媒体封装格式。多媒体封装格式也称多媒体容器(Multimedia CONtainer),pcb抄板它不同于H264、MPEG-2、MPEG-4这类编码格式,它只是为多媒体编码提供了一个“外壳”,本身不涉及编码。MKV是由开源组织Matroska Development team制定的一个标准,总共包括三部分:MKV(Matroska video)、MKA(Matroska Audio)和MKS(Matroska Su^itles),后两种格式分别针对音频和字幕,应用较少。MKV的目的是代替AVI等传统封装格式。AVI是Microsoft于1992年推出一种封装格式。其含义是audio Video InteracTIve,就是把视频和音频编码混合在一起储存。微软在1996年推出了AVI的改进版本AVl2.0。AVI格式上限制比较多,只能有一个视频轨道和一个音频轨道,还可以有一些附加轨道,如文字等。AVI格式不提供任何控制功能。总体而言,AVI为主的传统封装格式结构陈旧,只能包含少数几种音视频格式,并且不够开放,可扩展性差。正因为如此,才促成了Matroska这类新的多媒体封装格式的诞生。
    MKV相对于传统的封装格式,有如下优点:支持可变比特率(VBR),支持错误检测以及修复软字幕,支持流式传输,强大的开放性和跨平台兼容性,支持16路以上的音频流和字幕流等。Matroska最大的特点是能容纳几乎所有类型的视频、音频及字幕流,除H.264以外,也可包括MPEG4、MPEG2、Ac3、AAC等其他视频和音频格式,即使是非常封闭的RealMedia及QuicklTime也被它包括进去了,并将它们的音视频进行了重新组织来达到更好的效果。
    由于MKV封装格式本身具有众多优点,随着互联网和高清影片的流行,MKV格式得到了广泛的应用,互联网上越来越多的高清影片采用MKV格式。然而,MKV是一个由开源组织制定和推广的标准,缺乏大商业公司的支持,导致MKV文件的播放缺乏一个完整和有效的设计实现。在性能和资源受限的嵌入式平台上,这个问题尤为严重。虽然目前有很多高清播放机都提供了对MKV格式的支持,但是大部分实现方案都存在支持不完善、播放效率比较低的问题,播放高码率的影片时会出现不流畅、画面卡顿等问题,影响观看效果。本文提出了一种基于SMP8*平台的MKV播放器的设计与实现方案,并针对嵌入式系统的特点做了优化,较好地达到了MKV文件流畅播放的要求。
    2 硬件平台和软件总体设计
    硬件平台以SMP86 54芯片为核心,通过总线与RAM、SATA硬盘、Flash闪存、输入输出设备等外设相连。SMP86 54是Sigma Design公司推出的多媒体播放SoC解决方案,集成了一个强大的多媒体处理器、强健的内容保障系统、新的DDR2内存控制器、多个片上CPU以及完备的系统外围设备接口。从媒体播放角度看,SMP86 54提供了一个完整支持高清晰度视频解码的先进解码引擎,能够支持对MPEGl、MPEG-2、MPEG-4、H.264、WMV9、VCl以及AVS等格式的硬件解码,支持高效能的图形加速,支持多标准音频解码和先进的显示处理能力。Siena Design公司为方便第三方厂商开发应用,提供了与芯片相关的开发工具包和开发框架。本文的工作也基于这个框架进行二次开发。软件平台方面,由于一个完善的播放系统已经相当复杂,不适合直接操纵底层硬件来完成功能,需要操作系统的支持。本项目中操作系统采用uclinux,文件系统采用Romfs。uclinux是专为嵌入式系统定制的一款Linux,它具有标准Linux操作系统的稳定性、强大网络功能等主要优点,但是却不像标准Li-nux那样复杂,主要针对没有MMU(内存管理单元)的微控制器。Romfs是一款专门为嵌入式系统设计的文件系统,体积小、可靠性好、读取速度快,是嵌入式系统常用的文件系统。