APP下载

串联式缓冲池技术研究与应用

2010-01-08胡晓岽何加铭

关键词:串联式解码器数组

胡晓岽,何加铭,陈 平

(宁波大学通信技术研究所,浙江宁波315211)

串联式缓冲池技术研究与应用

胡晓岽,何加铭,陈 平

(宁波大学通信技术研究所,浙江宁波315211)

为有效解决流媒体点播无线数据下载不稳定性问题。该文提出一种串联式缓冲池结构模型,该模型在网络数据接收端与解码器之间,实现有效数据缓冲,屏蔽数据传输速率不稳定。经主频小于200MHz终端平台上测试,实现媒体音乐点播流畅播放,效果良好。

流媒体;缓冲池;解码

0 引 言

缓冲池技术思想是开辟在客户端的一处内存空间,当某进程需要使用缓冲区时,提出申请,由管理程序分配给它,用完后释放缓冲区.这样可用少量的缓冲区为更多的进程服务。随着宽带网络发展,特别是宽带接入技术的发展,网络传输的瓶颈不断打破,为网络传输多媒体数据提供了很好的支撑环境。由普通GSM网络9Kbps的传输速率,到GPRS网络115kbps传输速度的明显提升,而近年来升级到EDGE网络的传输速率理论峰值达到384kbps。手持设备硬件性能的大幅提升与智能平台丰富的应用。在智能系统实现基于RTSP协议的流媒体点播系统已日趋完善,市场也趋于饱和。但是在非智能平台的在线点播技术并不成熟,应用程序甚少。本文设计实现一种基于MTK平台6225处理芯片的在线AMR[1]格式音乐点播软件,同时带有播放控制与换肤等个性化功能。

1 常见缓冲池技术

缓冲池技术模型应用广泛,从大型服务器到小型移动终端,从系统内部体系结构到数据库技术,都应用到缓冲池技术思想。

CPU,通道和I/O设备之间,由于计算机外设的发展,会产生通道不足而产生的“瓶颈”现象,使并行程度受限制,因此引入了缓冲技术以改善CPU和I/O设备之间速度不匹配的情况和减少I/O设备对CPU的中断次数及放宽对CPU的终端响应要求。

DB2中的缓冲池是内存中的一块存储区域,用于临时读入和更改数据库页。而从内存访问数据要比从磁盘访问数据速度更快,由于连接至数据库的应用程序的大多数数据操作都在缓冲池中进行,而因此缓冲池的存在可以有效提高数据库系统的性能。

2 移动终端缓冲池模型研究

本文缓冲池开辟基于手机系统平台,版本为08A,手机芯片为6225,处理器ARM 7EJ,处理主频104MHz,16M ROM与4M RAM,其中文件系统占用2M。可以看出可供用户使用的RAM和ROM极其有限,因此要实现流畅音频点播需要克服以上问题。鉴于6225芯片处理能力较弱,因此音频统一采用AMR-NB编码格式。传输协议选用HTTP协议。流媒体点播系统平台概述如表1所示。

表1 缓冲池应用终端概况

2.1 传统缓冲池原理及缺陷

通用的缓冲池设计只开辟一个内存空间,根据终端可用内存大小以及处理能力强弱,选择开辟一定的内存。待缓冲池缓冲溢出后,开始向解码器发送数据。在网络情况良好的条件下,同时保证缓冲池大于所点播内容,那么可以保证播放的流畅性。一旦网络状况出现问题,不稳定或者速率不够,则会使用户等待时间过长。其次点播内容大于缓冲池空间时,中间会出现停顿现象。因此以上情况都会严重影响用户的使用体验。

其次由于非智能机可用内存空间极其有限,以本文所用平台为例,可用内存总计16M,出去系统本身以及应用程序所占内存,可供用户使用的内存极其有限。开辟一个大于媒体内容的内存空间很不现实。因此传统缓冲池设计思想不适用于非智能机的流媒体系统设计。

2.2 串联式缓冲池结构模型

鉴于传统缓冲池的存在问题,本文提出了全新的本文设计了一个串联式缓冲池[2]结构模型。开辟4个连续内存空间,即相对于普通单个缓冲池而言,有4个缓冲池以串联方式排列。考虑到目前点播媒体AMR音乐文件在100k左右,同时考虑到点播系统扩展性,后续媒体文件多在300k左右,因此在开辟缓冲池内存时每个缓冲池大小为100k,地址连续。在接收服务器媒体数据时,从第一个内存地址开始依次接收,待缓冲池接收满,则由下一个缓冲池开始接收。依次类推,直至最后的缓冲池。

同时要实现在线点播以及保证其播放的流畅性,必须使AMR数据包的下载速率与AMR解码速率保持基本一致,甚至是下载速率可以略大于解码速率。自适应多速率[2](AdaptiveMu lti-Rate,AMR)是一种音频编码文件格式。解码速率从最低的4.75kb到最高12.2kb。解码速率基本与无线网络匹配。

由于无线网络的不稳定性,会根据地点、信号强弱等问题影响下载速率,因此必须考虑其实际各地点与条件下的平均下载速率。当点击播放请求按钮时,socket[3]建立,并开始获取数据。AMR数据包[4]直接下载至各个缓冲池而非解码器,而是先存至缓冲池,待第一个缓冲池存满后,提示可以开始播放,点击播放则解码器开始从缓冲池中读取AMR数据包。同时其他缓冲池保持数据包下载,直至数据结束标志位,则关闭Socket,停止下载。因此在第一个缓冲池满后,播放已经开始,之后即使网络不够稳定,在已经播放的前提下,后台同时进行下载,因此整个过程始终保持流畅进行。

结构模型如图1所示:

本文独创的串联式缓冲池模型非常有效地解决了无线网络下载的不稳定性,保证播放连续性。相对于以往单个缓冲池有更好的抗不稳定性,尤其适合无线网络数据接收。

图1 串联式缓冲池结构模型框图

2.3 缓冲池动态内存分配

常见内存分配主要有3种方式:静态内存分配、栈分配和堆分配。而由于手机内存资源通常极其有限,因此采用静态内存分配实现缓冲池极大影响手机运行效率和速度。本文实现的缓冲池采用动态内存分配方式。在每个缓冲池数据存满并且被送至解码器后,内存空间即即使动态释放,投入队列等待接收数据。

本文分配内存于缓冲池时,首先申请一大块内存作为内存池,根据平台内存的剩余空间,本文申请了400kB的内存大小,来作为整个缓冲池的内存总和,也即内存池。之后在点播系统运行过程中,所有内存请求都不再需要通过联系系统的malloc或者new得到,而是通过从自己分配内存从内存池中分配得到4个100kB的缓冲池内存空间,避免了频繁的malloc操作所造成的低效,以及伴随产生内存泄露的可能。

如图2所示,为本系统内存池中缓冲池的内存分配。

图2 内存池示意图

同时本文使用一个指针数组数据结构来管理空闲内存块。数组的指针分别指向不同大小的内存空闲块。4个数组大小一致。如图3所示。

图3 空闲指针数组

每块的大小=2×(数组下标+4),也就是说,数组0的指针指向大小为16Byte(16=2×(0+4)。整个内存分配过程,是将空闲区指针传给用户,而不是调用系统的malloc或者new,因此效率很高。解码器只是频率申请读写Buffer,由于本文的串联式缓冲池每个缓冲池大小固定,这样对Buffer的频繁申请,基本都能从空闲数组中快速读取,而其操作不过是从数组中取得相应的指针而已,不但高效,而且避免了调用malloc失败的风险。只有当内存池不能满足用户需求时,才需充分调研系统malloc(或者new)来重新分配内存。之后的实现过程完全一致。

3 测试数据及结论

AMR解码速率和GPRS[5]理论与实测下载速率比较如表2所示。

表2 实测下载速率与AMR解码速率对比

缓冲池缓冲时间及播放流畅性测试如表3所示。

表3 缓冲池缓冲等待时间及流畅性测试

由表3可以看出,文件大小超过100k时,需要等待的缓冲时间都是一致的,并不会因为超过容量大而需要增加等待时间。因此本文提出的这种全新串联式缓冲池模型,相对于普通缓冲池,能更有效解决无线网络数据连接不稳定性问题,更适用于可用内存极其有限的非智能机平台,在占用内存很小的前提下,保证了播放的流程性。

[1]邹丽恒.AMR在下一代网络中的研究和改进[D].北京:北京邮电大学,2006.

[2]李玉萍.AMR语音编解码的研究与实现[D].北京:北京交通大学,2008.

[3]姜毅,王兆青,曹丽.基于HTTP的实时信息传输方法[J].计算机工程与设计,2008,4(20):12-15.

[4]Ingemar Johansson.Bandwidth efficient AMR operation for VoIP[M].Lulel:Sweden,2003:3-4.

[5]廖旭金.浅谈HTTP协议与XML技术的信息交换[J].科技咨询导报,2007,15(11):19-21.

Research and Implementation of Online Music Player HU Xiao-dong,HE Jia-m ing,CHEN Ping

(Instituteof Communication,Ningbo University,Ningbo Zhejiang315211,China)

To resolve thewireless stream ingmedia on-demand data download problem of instability effectively.This paper proposesa tandem buffer poolmodel,which between the receiver and decoder,to achievedatabuffereffectively and shield the data transfer rate instability.The test ismade on terminal platform which the frequency is less than 200Mhz.The effect is absolutely good.

stream player;buffer pool;decode

TP391

A

1001-9146(2010)05-0089-04

2010-07-20

科技部公共服务平台创新基金资助项目(C26243314159);浙江省科技计划资助项目(C31107);国际科技合作资助项目(DFA12120)

胡晓岽(1985-),男,浙江杭州人,在读研究生,通信终端嵌入式系统核心技术.

猜你喜欢

串联式解码器数组
JAVA稀疏矩阵算法
科学解码器(一)
科学解码器(二)
科学解码器(三)
JAVA玩转数学之二维数组排序
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
微写作和阅读课堂有机契合的五种形式
小学数学“串联式”复习题组设计例谈
Excel数组公式在林业多条件求和中的应用
军用混合动力越野汽车技术特点分析