APP下载

带优先级状态机管理的轻量级无线音乐路由器

2016-07-19胡志坤宋菁烨李晓聪廖远勤廖北平

计算机应用与软件 2016年6期
关键词:音频文件状态机播放器

胡志坤 江 浩* 宋菁烨 李晓聪 廖远勤 廖北平

1(中南大学物理与电子学院 湖南 长沙 410083)2(醴陵恒茂电子科技有限公司 湖南 醴陵 412200)



带优先级状态机管理的轻量级无线音乐路由器

胡志坤1江浩1*宋菁烨1李晓聪1廖远勤2廖北平2

1(中南大学物理与电子学院湖南 长沙 410083)2(醴陵恒茂电子科技有限公司湖南 醴陵 412200)

摘要为了解决目前无线音乐路由器性能不稳定问题,研究开发一个基于mips架构的轻量级无线音乐路由器。基于DLNA标准,采用Platinum架构设计并实现了轻量级DLNA控制点与设备交互发现模块。设计了一个有优先级的状态机管理机制来管理交互控制模块的命令序列,来避免频繁音乐控制导致控制信号混乱的问题。设计了一个高保真无损音频播放器,实现设备自动下载音频文件序列表到本地,并采用基于ALSA的高级Linux声音架构来实现音乐的高保真解码,确保高品质的音乐输出至音响设备。采用Chariot和Iperf软件进行对音乐路由器与手机端的真实测试,吞吐量和用户数据报协议的测试结果表明控制信号的无线传输性能高效稳定,音质测试结果表明能够得到高质量的音频信号。

关键词无线音乐路由器DLNAPlatinum优先级状态机音频播放器

0引言

随着无线传输技术的发展和数字媒体的流行,家庭网络成为数字化的一个重要组成部分[1]。家庭音乐共享方面,目前有无线音箱和无线音乐路由器。消费者希望在家中的任何地方都能享受到丰富的多媒体内容,而不考虑这些媒体数据存储在什么地方。目前,常用的无线WiFi音箱具有体积大、成本高,且控制部分与音箱直接集成,音质的好坏跟音响本身的关联性很大,不利于音乐爱好者对音响的个性化需求。

数字生活网络联盟DLNA[2]是目前国际上主流的标准,以TCP/IP协议和UPnP[3]技术为基础,可以实现家庭内部各种信息终端的自动发现、智能共享和协同服务[4]。文献[5]详细分析了DLNA标准协议的基本原理和框架,搭建简单的实验平台,验证了DLNA协议在家庭媒体共享中的可行性;文献[6]将DLNA协议用于某一通信设备上,提出了共享多媒体内容的一个软件实现方案;文献[7]提出了一个扩展的DLNA媒体共享架构,访问和共享家庭网络与外部网络的各种媒体内容;文献[8]提出了一个安全的用户代理访问控制系统,有效地保护DLNA设备免受非认证控制点控制。目前,基于DLNA标准[9,10]的无线音乐路由器,主要是:(1) 由于DLNA标准的多媒体播放设备与多媒体控制服务器之间的传输状态仅由一个全局的变量来识别,没有严格的状态机管理机制,当出现偶尔局域网无线信号不好时,用户往往会频繁操作控制点,导致设备端出现执行动作和控制命令错乱的现象;(2) 播放器性能较差,无法播放如WAV、FLAC、APE等格式的高保真无损音频文件。

本文研究并开发一种不集成音响、只提供一个音频输出接口、具有网络中继的轻量级音乐路由器。采用Platinum架构构建轻量级的DLNA多媒体播放设备,设计了一个带优先级的状态机管理机制来确保音乐路由器的控制指令有效达到音响,并设计了一个高保真无损音乐播放器。方案最终在Realtek公司的rtl8196e路由器上实现并测试,测试结果验证了其正确性和可靠性。

1方案设计

本文设计研发了一种带优先级状态机管理的轻量级无线音乐路由器,可实现在WiFi环境下音乐的无线推送功能,描述如下:将路由器音频输出接口与音箱输入接口连接,打开手机终端音乐播放软件DLNA功能,无线连接到路由器上的DLNA设备后即可推送手机上的音乐至音箱,实现音乐的共享并能够无线控制音箱的播放、暂停、快进、下一曲等功能。其应用场景如图1所示。

图1 无线音乐路由器应用场景

以Realtek公司提供的RTL8196E路由器为硬件基础,加上水晶公司的音频解码芯片CS4398,构建硬件环境。其硬件架构如图2所示。

图2 无线音乐路由器硬件架构

RTL8196E主芯片为MIPS架构,500MHz的主频,内带16KBCache;外带128KB的SRAM,256MB的DDR;最大支持32MB的Flash存储。RTL8196E的RGMII接口用于MAC层与PHY层的通信和管理,SPI接口连接FLASH存储器,另有GPIO、I2C、UART接口未被占用。无线通信模块采用高性能单芯片集成方案,在60×60(MM)空间内集成了无线路由器的主要器件,支持无线路由模式(Router)、无线接入点(AP)、中继模式(Repeater)三种工作模式。CS4398音频解码芯片提供了一个完善的立体声24位/192千赫数字至模拟(D/A)转换系统,可实现120分贝动态范围和0.0005%总谐波失真加噪音(THD+N)。整个系统的硬件架构简洁、体积小、便于扩展。

为了实现上述无线音乐路由器的设计,目前不少采用rygel[11]架构,通过内部的“playbin”部件,运用GStreamer开源多媒体框架库,来构造DLNA多媒体播放设备,但其开发不灵活,依赖的库达到30余个,严重增加了系统功耗,拉低系统性能,且容易出现播放错乱现象。Platinum软件开发包SDK(SoftwareDevelopmentKit)提供了开发DLNA设备的基本框架,设备的寻址、发现过程被封装在一个交互发现模块中,通过裁剪该模块,可以实现设备和控制点之间的互发现。本方案采用Platinum架构,构建出DLNA控制点和DLNA/UPnP设备。但要实现两者之间的交互控制,还需要在此基础上进行代码重构和重写,构建交互控制模块,并设计一个高保真无损音频播放器。

系统整体设计方案如图3所示。

图3 系统整体设计方案

系统主要分为三层,底层为硬件层;中间层为Linux内核和硬件驱动程序;上层为应用程序,即为图3中大虚线框内的部分,主要包括三个部分:DLNA设备搭建、高保真无损音频播放器设计、DLNA设备和播放器之间的信息交互。

整个系统的运行包括如下四个部分:

(1) 设备发现过程,即当设备加入到网络中,该设备向控制点广播自己的存在及能够提供的服务,并建立连接。

(2) 设备控制过程,即当设备连接到手机控制端后,可以向该设备发送控制消息,其中包括手机端音频文件的URL地址等,通过获取该控制消息,并以参数的形式传递给播放器。

(3) 下载播放过程,即播放器远程下载模块从手机端下载音频文件,解码后经Linux音频驱动模块输出播放。

(4) 信息交互过程,即服务在运行时,可能改变某些变量的值,如音频播放时间,这时需要及时地更新给手机控制点,保证手机端音乐播放器界面进度条正确显示当前播放时间。

2DLNA设备

为了满足不同用户的开发需要,Platinum架构提供了针对不同DLNA设备的通用开发框架,以及过于细节化的DLNA标准支持,导致开发某一特定设备时系统资源冗余,增大系统内耗,因此本方案通过裁剪,保留音频播放设备的基本特点,构建轻量级DLNA设备与控制点的交互发现模块,并设计了一个带有优先级状态机管理机制的交互控制模块。

2.1UPnP AV框架工作过程

DLNA标准的协议结构中最重要的一层是设备的发现、控制和媒体管理,采用UPnPAV(Audio/Video,AV)[12]应用框架,该架构能够发现家庭网络上存在的其他设备和服务,并可以实现设备和应用对家庭网络中媒体内容的识别、管理和分发。图4是UPnPAV框架工作过程。

图4 UPnP AV框架工作过程

从以上UPnP框架的工作过程可以看出,MediaServer端(手机音乐播放器后台)提供以下几个服务。

1) 内容目录服务CDS(ContentDirectoryService),让用户浏览音乐播放器媒体文件的目录,包括有Browserd等动作。

2) 连接管理服务(ConnectionManagerService),负责建立和管理接收端设备的网络连接。

3) 传输控制服务AVT(AVTransportService),实现暂停、快进等功能。

MediaRenderer端(无线音乐路由器)可以提供以下几个服务。

1) 播放控制服务RCS(RendereringControlService),让用户调整播放的效果,如音量等。

2) 连接管理服务(ConnectionManagerService),负责建立和管理接收端设备的网络连接。

3) 传输控制服务AVT(AVTransportService),实现暂停、快进等功能。

ControlPoint(手机音乐播放器操作界面)主要为用户提供操作界面,它提供的服务大多是接收用户的操作指令,然后通过调用MediaServer和MediaRender的服务来实现。

2.2Media Render端交互控制模块

基于DLNA标准,设计了一个轻量级的交互控制模块,该模块包括连接管理服务、播放控制服务与媒体传输控制服务三个部分。连接管理服务提供与匹配的MediaServer的连接信息管理;播放控制服务接收控制点发送过来的设备控制信息,如亮度调节、音量大小等;媒体传输控制服务接收控制点发送过来的设置媒体URL、播放、暂停、快进等控制动作。MediaRender功能模块设计如图5所示。

图5 Medea Render功能模块设计

MediaRender保存了一个状态机用来记录当前正在执行的动作,状态机中定义了播放、暂停、上/下一曲、快进/退、音量大小设置等所有MediaRender可能处于的执行状态。MediaRender的另一个重要组件就是播放器,接收控制点的设置和播放控制。

为了实现播放控制服务和媒体传输控制服务,需要获取手机端的控制信息和参数信息,涉及的数据结构如下:

typedefstructStateVariableValue{

NPT_Stringmetadata;

NPT_Stringuri;

NPT_Stringcurrenturi;

NPT_Stringtarget;

Char*action;

}StateVariableValue;

其中,metadata为音频文件头信息,用于MediaRender读取当前播放音频文件的名称、格式、大小、频率和比特率等信息;uri和currenturi分别为音频文件URL地址列表和当前音频文件URL地址,用于MediaRender下载音频文件;target为进度条拖拉目标位置,用户实现快进/退功能;action为动作指令名,用于MdediaRender执行动作并且更新状态机状态。

为了实现对设备的实际控制,还需要在MediaRender媒体播放模块上定义一个PLT_MediaRenderer类,含播放、下一曲、快进等动作,建立了对设备的控制框架。

交互控制模块的连接管理服务保证控制点与设备间的通信隧道正常,播放控制服务和媒体传输控制服务则实时监控控制点发送过来的有效指令,如当控制点发出暂停指令时,媒体传输控制服务接收指令请求,提取出相应参数,并传递给PLT_MediaRenderer类中定义的暂停动作函数,该函数通过关闭音频数据流输出接口实现暂停功能。

本文根据以上过程,将对MediaRender设备的所有控制功能封装在类PLT_MediaRenderer类定义到的动作函数中,实现了控制点与设备间交互控制模块的设计。

2.3带优先级的状态机管理方案

目前几乎所有的方案都没有为设备设计一个全面的状态机管理架构,导致当服务和动作量突发性增大时,设备端容易出现执行动作与控制指令紊乱。因此,在交互控制模块中,设计了一个带有优先级的状态机管理方案,管理流程如图6所示。

图6 状态机管理方案设计

设备加电启动后,初始化任务链表并将状态机初始状态设置为wait,等待控制点控制命令。当控制点发起控制动作时,由上节中提到的交互控制模块获取相应的控制参数,并判断动作的优先级,如果优先级为1,则加入到任务链表的表头,反之,则加入表尾。另外,程序初始化时,会循环监听状态机当前状态,如果状态为wait且任务链表不为空,则从表头取出一个任务节点,由交互控制模块中定义的动作函数完成动作执行,此时改变状态机的状态为当前动作状态,执行完毕后,恢复wait状态,继续执行下一个任务。图7是状态机的状态转移图。

图7 状态机状态转移图

当控制点频繁操作,大量的动作指令涌入到设备端,为了提高系统的用户感受,给所有的动作定义了优先级别。如播放、暂停动作优先级高,下一曲、上一曲动作优先级低等。这样避免了当用户在频繁发出下一曲指令后再次发出播放/暂停指令时由于系统延迟而带来的指令暂时无效现象。动作指令的优先级设计如表1所示。

表1 不同动作指令权重值

3高保真无损音频播放器及交互模块

MediaRender的另一个重要组件就是播放器,可以接受交互控制模块的设置和播放控制。同时,播放器在接收到状态机改变时,也会对外发出自己的最新状态,以便其他控制点得到最新的状态。

嵌入式系统播放MP3等有损压缩格式的技术已经比较成熟,但支持无损压缩格式的很少。为了提高无线音乐路由器输出音频质量,在ALSA声音架构[13]上添加了支持WAV、FLAC和APE三种无损压缩格式音频文件的解码模块,实现支持高保真无损音乐播放功能,并在播放器上开发了远程下载功能。

3.1播放器工作流程

编写高保真无损音乐播放器程序的思路是:下载控制端音频文件到本地,根据不同的编码格式解码,然后将所得音频数据送入声卡设备即可实现播放。具体流程如图8所示。

图8 播放器工作流程图

图8中虚线框内为远程下载模块,当手机端音乐播放软件控制MediaRender播放音乐时,负责从手机端无线下载音频文件到本地,并存储到临时文件中,播放器通过读取临时文件,获取播放文件信息,经移植的ALSA音频模块解码后播放。

3.2远程下载模块

播放器的远程下载模块是在其主体函数中编写了一个远程下载函数,实现无线下载功能。函数基于libcurl库编写,它是一个简单易用的基于URL传输的客户端开发库。函数的流程如图9所示。

图9 远程下载函数流程图

当MediaRender接收到控制点播放指令时,远程下载模块会先开辟一段内存单元,用于存储下载的音频文件,然后初始化一系列变量,包括音频文件url地址、文件读取指针、函数执行最长时间、最大下载速度等,接着处理由交互控制模块获取的音频文件地址并开始下载,下载的音频数据流经处理后回调给文件指针指向的文件。接下来的文件读取和解码再由播放器的其他模块完成。

3.3MediaRender与播放器之间的信息交互模块

为了保证手机端音乐播放软件界面时间进度条显示的实时性,需要MediaSever、MediaRender和播放器三个进程之间周期性地传递时间信息,该过程采用socket编程机制完成,通信流程如图10所示。

图10 进程间时间信息通信

播放器计算音频文件总时长和当前播放时间,MediaRender获得该时间信息,然后发送到手机端音乐播放软件后台服务器,以进度条的形式显示到手机界面。

4方案实现与测试

4.1DLNA设备端与控制点互联测试

整个方案实现并移植到开发板后,用Xshell终端模拟软件以串口形式登录开发板,开机启动,后台运行如图11所示,可以看到DLNA设备正常运行。

图11 系统启动界面

图12 手机端DLNA设备列表

手机端连接到音乐路由器WiFi,打开KuGou音乐播放器(任何支持DLNA功能的音乐播放器均可),开启DLNA功能,点击播放界面左上角DLNA按钮,路由器端的DLNA软件设备MusicRouter-8196E会出现在手机端列表中,如图12所示。

点击选择MusicRouter-8196E,手机(DLNA控制点)与音乐路由器(DLNA设备端)建立无线连接,此时通过手机端Kugou音乐播放器,可以控制路由器上的DLNA设备进行相应动作。播放延迟半秒左右,音质清晰。此时路由器上系统运行情况如图13所示。

图13 播放状态路由器系统后台界面

图14为方案实物图。

图14 方案实物图

4.2音质测试

用SoundTechnology公司出品的SpectraLAB4.32音频测试软件进行音质检测。图15为无线音乐路由器播放频率1KHz的音频文件得到的频谱图。从图中可以看出在中高频段以下(0~900Hz)比较平直,变化幅度小于2db;在1K谐波曲线上表现为:左右声道音色表现比较平衡;由基波1K到2K频段谐波衰减速度比较快。总体来说音质很不错。

图15 SpectraLAB 4.32音质测试频谱图

4.3网络性能测试

吞吐量测试表示在单位时间内通过某个网络(或信道、接口)的数据量,是评价网络承载能力和传输性能的一个参数。开启无线音乐路由器NAT功能且关闭防火墙,用两台安装有Chariot软件的电脑,一台接路由器WAN口,另一台接LAN口,通过统计一个预定长度和格式的脚本文件无差错的从一台电脑传输到另一台电脑的时间来计算路由器的吞吐量。图16中,Chariot软件测试吞吐量平均值为22.5Mb/s;图17中Iperf软件测试结果为平均22.4Mb/s。可知无线音乐路由器吞吐量稳定在22.5Mb/s左右,与原始的8196E路由器的23Mb/s相差仅0.5Mb/s,证明了没有因在系统中运行了DLNA设备而影响到路由器网络性能。

图16 Charoit测试吞吐量

图17 Iperf测试吞吐量

利用Iperf软件统计了无线音乐路由器中用户数据报协议UDP(UserDatagramProtocol)测试信息,如图18所示。UDP包延迟平均时间(Jitter)是0.137ms,带宽(BandWidth)是1.05M/s,丢包率0。

图18 UDP测试的统计信息

以上测试表明了系统具有高效且稳定的网络性能。

5结语

本文在Realtek公司的8196E路由器上,添加音频解码芯片,移植ALSA高级Linux声音架构,搭建控制点与设备端交互发现模块,设计了带有优先级状态机管理的交互控制模块,以及设计了一个高保真无损嵌入式音频播放器,完成了带优先级状态机管理的轻量级无线音乐路由器的开发。采用Chariot和Iperf软件进行吞吐量和用户数据协议(UDP)测试,结果表明网络性能高效稳定;采用SpectraLAB软件进行音质测试,结果表明音频质量满足用户需要。

参考文献

[1] 吴佳兴,李爱国.基于云计算的智能家居系统[J].计算机应用与软件,2013,30(7):240-243,314.

[2]HiroakiGoto,HidekiShimada,KenyaSato.DesignofNetworkArchitectureUsingMobileGatewaysforDLNADevicesinWideAreaNetworks[J].CommunicationsandNetwork,2012,43(11):404-408.

[3] 吴兆立.UPnP基本原理以及在NAT中的应用[J].网络安全技术与应用,2014,11(2):73-74,76.

[4]WangLian.Digitallivingnetworkalliance-baseddesignforcross-networkmediaresourcesharing[J].JournalofComputerApplications,2014(S1):35-40.

[5]TeoChangSheng,LawSieYong,KimHanJong.AccessingofDigitalMediaContentswithDLNAProtocolinConjunctionwithDSIWSTPProtocol[J].IEEEInternationalConferenceonConsumerElectronics,2008,9(1):1-2.

[6]LoncarevicM,BogicevicB,HlavacJ.OnesoftwaresolutionforsharingmultimediacontentviaDLNAprotocolonAndroidoperatingsystem[J].TelecommunicationsForum(TELFOR),2012,20(9):1246-1253.

[7]OhYJ,LeeHK,KimJT,etal.Designofanextendedarchitectureforsharingdlnacomplianthomemediafromoutsidethehome[J].IEEETransactionsonConsumerElectronics,2007,53(2):542-547.

[8]IslamMZ,HossainMM,HaqueS,etal.User-agentbasedaccesscontrolforDLNAdevices[C]//KnowledgeandSmartTechnology(KST),2014 6thInternationalConferenceon.IEEE,2014,30(1):7-11.

[9]YumikoMatsuura,MitsuhiroKihara.Standardizationactivitiesinthedigitallivingnetworkalliance(DLNA)[J].NTTTechnicalReview,2007,22(2):231-235.

[10] 维华,黄晓琳.物联网智能家居技术与标准化综述[J].信息技术与标准化,2012,16(7):35-37.

[11]MurrayComming.RygelforaDLNAPlayer[EB/OL].(2011-12-19).[2012-6-15].http://www.murrayc.com/permalink/2012/06/22/rygel-for-a-dlna-player.

[12] 王保保,陶鹏.UPnPAV架构的数字多媒体家庭网络[J].微电子学与计算机,2012,26(7):125-128,133.

[13] 丁勇,周余,都思丹.基于Linux2.6的嵌入式ASoC架构音频驱动研究与实现[J].计算机应用与软件,2010,27(4):267-270,273.

A LIGHTWEIGHT WIRELESS MUSIC ROUTER WITH PRIORITY STATEMACHINEMANAGEMENT

Hu Zhikun1Jiang Hao1*Song Jingye1Li Xiaocong1Liao Yuanqin2Liao Beiping2

1(School of Physics and Electronics,Central South University,Changsha 410083,Hunan,China)2(Liling Hengmao Electronic Technology Co., Ltd.,Liling 412200,Hunan,Chin)

AbstractIn order to solve the problem that the performance of wireless music router is unstable, we studied and designed a mips architecture-based lightweight wireless music router. Based on DLNA standard, we used the Platinum framework to design and implement the lightweight module for interactive discovery of DLNA control point and device, and designed a state machine management mechanism with priority to manage the order sequence of interactive control module so as to avoid the problem of unordered control signals caused by frequent music controls. We designed a high fidelity and lossless audio player, it realises the automatic download of audio files to local by DLNA devices. Moreover we used the ALSA-based advanced Linux sound architecture to achieve high fidelity music decoding and thus ensured the high quality music output to audio equipment. We used the software Chariot and Iperf in real tests of music router and mobile phone, test results of throughput and user datagram protocol showed that the wireless transmission performance of control signal was efficient and stable, test result of sound quality also showed that it was able to obtain high quality audio signal.

KeywordsWireless music routerDigital Living Network Alliance (DLNA)PlatinumPriorityState machineAudio player

收稿日期:2015-02-17。国家自然科学基金项目(61273159);湖南省自然科学基金株洲联合基金项目(13JJ9038);湖南省科技计划项目(2013GK3005)。胡志坤,教授,主研领域:复杂系统状态监测和故障诊断。江浩,硕士生。宋菁烨,硕士生。李晓聪,硕士生。廖远勤,本科生。廖北平,高工。

中图分类号TP393.05

文献标识码A

DOI:10.3969/j.issn.1000-386x.2016.06.025

猜你喜欢

音频文件状态机播放器
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
音频录编任我行
基于有限状态机的交会对接飞行任务规划方法
基于STM32的MP3播放器设计
Moon ACE播放器/放大器一体机
基于Android手机的音频文件取证技术研究
播放器背板注塑模具设计
提取APP中的音频文件
双口RAM读写正确性自动测试的有限状态机控制器设计方法
基于反熔丝FPGA的有限状态机加固设计