发明内容
本发明的目的在于改变传统的单纯由手机终端实现多媒体播放功能的方式,提供一种通过SIM卡在手机终端实现多媒体播放的方法,该方法将手机终端的多媒体功能分为两部分来实现,其中一部分功能,如显示和播放,仍旧由手机终端来实现;另一部分功能,主要是解码功能,则转移到SIM卡中来实现。同时,本发明还要提供一种适用于这种方法的新的系统。
为了实现上述目的,本发明的技术方案是:一种通过SIM卡在手机终端实现多媒体播放的方法,包括以下步骤:
(1)手机终端通过文件系统访问并获取多媒体数据文件列表,选中待播放的文件,将文件路径名通过APDU(Application Protocol Data Unit,应用协议数据单元)指令形式传给SIM卡;
(2)对手机终端与SIM卡之间的数据传输通道以及相关的数据缓冲区进行初始化,然后由手机终端向SIM卡发送开始解码指令,SIM卡接收到指令后进行解码;
(3)手机终端向SIM卡发送读数据指令,SIM卡接收到读数据指令后,将解码后的多媒体数据基本参数发往手机终端,手机终端利用这些基本参数初始化自身的播放设备,所述的基本参数包括采样率、声道模式、比特深度等;
(4)手机终端根据播放设备的要求,以一定的速率从SIM卡中读取数据流并送往播放设备进行播放。
上述通过SIM卡在手机终端实现多媒体播放的方法中所说的SIM包含GSM系统中的SIM、CDMA系统中UIM(User Identity Model,用户识别模块)、PHS系统中的PIM(Personal Identity Module,个人识别模块)以及3G系统中的USIM(Universal Subscriber Identity Module)。
上述通过SIM卡在手机终端实现多媒体播放的方法中,手机终端和SIM卡之间的数据传输通道分为信令通道和数据通道,信令通道用于传送多媒体播放控制信号,数据通道用于传输多媒体数据流。
信令通道采用ISO/IEC 7816-3的传输协议,通过扩展ISO/IEC 7816 APDU指令集的方式来实现,即将多媒体操作指令封装成ISO/IEC 7816 APDU指令的形式进行传输;也可以采用USB、SD、SDIO或MMC之一的高速数据传输总线协议来实现。
数据通道采用USB、SD、SDIO或MMC之一的高速数据传输总线协议来实现。
上述通过SIM卡在手机终端实现多媒体播放的方法中,步骤(2)中SIM卡接收到解码指令后的处理过程如下:
(a)打开选定的多媒体文件,读取一帧数据并解码;
(b)解完一帧后,将解码完成后输出的PCM码流存放到数据缓冲区DATA_buffer中,将多媒体数据基本参数(如采样率、声道模式、比特深度等)存放在参数缓冲区PARA_buffer中;
(c)设置专门的标志用以表明数据缓冲区DATA_buffer是否空闲;若存在空闲,解码继续,否则解码暂停。
上述通过SIM卡在手机终端实现多媒体播放的方法中,步骤(4)中手机终端播放多媒体数据的过程如下:
(i)手机终端向SIM卡发送读PCM码流指令;
(ii)SIM卡接受到数据读取指令后,将数据缓冲区DATA_buffer中的数据送往数据通道,然后将数据缓冲区的标志置为空闲状态;若此时为解码暂停状态,则继续解码;
(iii)手机终端接受SIM卡传送过来的数据,并将PCM码流送往多媒体播放设备;
(iv)若手机终端读取数据失败或收到SIM卡传送过来的解码结束信号,则结束播放;否则,循环执行上述的过程(i)至(iii)。
上述通过SIM卡在手机终端实现多媒体播放的方法中,在SIM卡中实现多媒体解码的方法是采用软硬结合的方式,用软件来实现解码功能,在用软件来实现解码功能时将浮点的解码算法变为定点的解码算法,同时,用硬件来加速实现其中的复杂计算。
上述通过SIM卡在手机终端实现多媒体播放的方法中,所述的多媒体数据文件可以存储在SIM卡中,直接在SIM卡中进行解码;也可以存储在手机终端或其扩展存储卡上,通过信令通道和数据通道传输到SIM卡中进行解码。
针对上述方法,本发明提出了一种通过SIM卡在手机终端实现多媒体播放的系统,包括手机终端和置于手机终端内的SIM卡,SIM卡中设有用于对多媒体数据文件进行解码的多媒体解码器和用于接收多媒体播放操作命令并控制多媒体解码器进行相应操作的命令解析器,多媒体数据通过手机终端和SIM卡之间的数据传输通道进行传输。
上述手机终端和SIM卡之间的数据传输通道包括用于传送多媒体播放控制信号的信令通道和用于传输多媒体数据流的数据通道。
通过本发明的SIM卡在手机终端实现多媒体播放的方法,可以得到如下有益效果:
对移动运营商而言,由于SIM卡的研制周期和成本远小于手机的研制周期和成本,因此,通过定制SIM卡的多媒体播放功能,可以低成本、高效、快速地布署多媒体增值服务;而且还能更有效地与DRM结合起来,形成一个统一的平台,加强对内容和知识产权的保护,强化运营商的控制手段和控制能力,这样,运营商更容易掌控市场发展态势,拉近与用户的密切关系,提升自己的品牌服务价值。
对手机厂商而言,由于不需要为手机增加多媒体处理功能,避免了与多媒体协处理器的配合问题,不仅可以简化手机终端的结构,降低手机终端的研发难度,而且可以缩短开发周期、降低开发成本,从而可以更快地将新产品投放市场,吸引更多的用户买家,实现市场利润的最大化;
对手机用户而言,真正需要的功能并没有减少,但却是一次投资,终身享用。一旦拥有了带多媒体功能的SIM卡,就拥有了终身的多媒体播放器,即使更换手机终端,也不需要购买带有多媒体解码功能的手机终端,避免了为手机终端增加多媒体功能而重复投资,从而节约购机成本;而且,如果多媒体播放功能绑定在手机终端的话,则各种手机终端的媒体播放器使用方法和操作流程也会不一样,这样,导致用户每换一次手机终端,无论是新机还是旧机,就必须重新学习和掌握新的媒体播放器的使用方法和操作流程,给使用带来极大的不便;如果将多媒体功能放在SIM卡里实现,则完全可以避免这一现象,即方便了使用,又节约了时间和精力,降低了使用代价。并且,通过在SIM卡里实现多种通信协议(SD、MMC、USB),用户不需要专用的智能卡读写器就可以读取SIM卡中的部分内容或者向SIM卡中传输数据,极大地方便了使用。
具体实施方式
下面结合附图和实施例对本发明作进一步详细的描述。
如图1所示,本发明所述的通过SIM卡在手机终端实现多媒体播放的系统采用客户端/服务器架构,包括手机终端、信令通道、数据通道、SIM卡四部分。其中,手机终端作为客户端,通过信令通道向SIM卡发送有关多媒体操作的命令,如播放、快进、后退、循环等;SIM卡作为服务器,接收和解析由手机终端通过信令通道发送的多媒体操作命令,并控制多媒体解码器读取和解码多媒体数据文件;信令通道和数据通道作为手机终端与SIM卡的通信通道,主要负责传送多媒体播放控制命令和数据流,前者主要用于低速率数据通信,后者则用于高速率数据通信。
另外,本发明所述的通过SIM卡在手机终端实现多媒体播放的系统也适用于浏览器/服务器的架构。
上述的手机终端中的客户端程序主要是多媒体播放器,主要实现如下四项功能:
1)提供播放显示界面。未启动解码器之前用于显示所有的多媒体文件列表以供用户选择播放文件,用户选定文件后则显示选定的播放文件列表;一旦开始解码和播放后,同时还要显示有关正在播放的文件的一些信息(如文件属性、多媒体类型、播放时间长度等)和内容(如歌词、台词等),以及播放进度/比例;
2)提供图形化的播放操作界面。用户既可以选择播放文件,也可以控制播放状态和进度,如快进、后退、循环、连续播放、自由拖动播放、按时间比例播放、定点播放等;
3)将用户的操作动作,转换为多媒体控制命令(序列),发往SIM卡;
4)输出控制功能,即将SIM卡解码后输出的多媒体数据流输出到多媒体播放设备(如屏幕、喇叭等)中,完成最终的播放功能。
信令通道主要用于传送多媒体播放控制命令,其传输的数据量较小,对实时性要求不高。由于SIM卡采用的是ISO/IEC 7816-3的传输协议,其速率较低,因此,可以作为信令传输协议来使用,通过扩展ISO/IEC 7816 APDU指令集的方式来实现,即将多媒体操作指令封装成ISO/IEC 7816 APDU指令的形式进行传输。除此之外,也可以采用其它数据总线协议,如USB、SD、SDIO、MMC等,以文件传输的方式进行,即将将多媒体控制命令封装成文件后再传输。
命令解析器是服务器程序,负责接收手机终端发过来的多媒体播放操作命令,并根据操作命令指挥和控制多媒体解码器进行相应的操作。比如,如果接收的是文件列表显示命令,则从SIM卡中将所有多媒体文件的列表传递给手机终端;如果接收的是播放命令,则首先根据播放列表来选择播放文件,然后启动解码工作;如果接收的是快进命令,则控制解码器向前跳过规定的帧数后再进行解码。
多媒体解码器接受命令解析器的操作指令,读取多媒体数据文件(既可以是在SIM卡内的,也可以是在手机终端中的)并解码,然后将解码结果传送到手机终端。解码器的实现采用软硬结合和定点计算的方案:用软件来实现解码功能,在用软件来实现解码功能时将浮点的解码算法变为定点的解码算法,同时,用硬件来加速实现其中的复杂计算,如矢量乘和矢量乘加运算。
定点算法的核心思想是使用定点数代替浮点数,并使用定点运算代替浮点运算。同浮点运算相比,嵌入式系统的定点处理能力较加强,如ARM 7 TDMI(英国ARM公司生产的一种通用的嵌入式处理器)可以支持32位定点整数的算术和逻辑运算,以及高达64位定点乘法和乘加运算,因此,定点算法可以提高嵌入式系统的解码性能。
下面以在ARM公司的ARM 7 TDMI嵌入式处理器上实现MP3解码为例进行说明。
高音质的MP3浮点软解码需要大量的计算,一般来说会使用浮点协处理器(FPU)或(浮点/定点)DSP来完成实时解码。但是在嵌入式应用中,FPU/DSP意味着大量的芯片面积开销和系统成本增加。浮点MP3解码算法需要大量的计算时间,不适合在嵌入式环境下应用。因此必须将浮点的MP3解码算法变为定点算法,使之能够在一个整数内核上运行。
由式(1)可以将浮点数表示成定点数值。其中I表示定点整数,受机器字长影响;F表示浮点数;NF表示浮点数的扩大倍数;[]表示取整运算。这样,浮点运算就可以表示为整数计算及其移位,比如两个浮点数的乘法就可以表示为两个整数乘法以及移位,如式(2)所示。ARM 7 TDMI指令集可以在一个节拍内实现运算和移位操作,因此ARM 7 TDMI处理器内核可以高效地执行这类运算,定点数值计算可以直接使用整数或长整数运算指令实现。
MP3解码算法主要包括:Huffman解码、反量化、立体声解码、反锯齿波、IMDCT(Inverse Modified Discrete Cosine Transform,反向改进型离散余弦变换)和子带合成。除了Huffman解码之外,其它几个子程序都需要复杂的浮点运算。经过定点转换,MP3定点算法计算时间只需原来浮点算法的20%左右,即使这样,用纯软件的方法仍然不能实现实时解码。在对MP3解码过程及所占用的CPU时间进行分析后发现,在MP3解码的各个模块中,计算量主要集中在反量化采样、IMDCT和子带合成滤波模块,并且以后两者的计算量为最大,70%以上的CPU时间用于最后进行的IMDCT和子带合成运算。IMDCT和子带合成中包含了大量乘法和乘加运算,其计算速度直接关系到MP3帧的解码速度,对MP3的解码性能影响极大。因此,对于这些运算则利用ARM 7 TDMI处理器提供的乘加指令和64位长整数乘加指令,将大量乘法运算变换为矢量乘加和矢量乘两种运算,采用硬件方式来实现这两种运算,并使用长整数乘加指令重写矢量乘法函数。
数据通道主要用于将解码后的原始多媒体数据流传送到手机终端直接进行播放,其传送的数据量比较大,而且速度和同步性要求也比较高,因此,采用高速数据总线协议,如USB、SD、SDIO、MMC等来实现,如图2所示。
由于多媒体数据类型比较多,包括MP3、MP4、AAC、WMA等。本发明仅以播放MP3为例进行描述。其他数据类型依同理实施。
如前所述,手机终端与SIM卡间必须拥有高带宽的数据传送通道,如USB、SD、MMC等数据传输方式。若使用USB通道,最好采用同步传输模式。
为减少数据传输量和提高效率,建议将多媒体文件存储在SIM卡中的;如果是存储在手机终端中的,则可以通过信令/数据通道将其传入到SIM卡中。由于两种情况的存储状况对于本发明而言无本质上区别,因此本发明仅以多媒体文件存储在SIM卡中的情况为例进行描述。
●工作流程
多媒体播放的工作流程如图3所示,主要分为文件选择、解码初始化、播放设备初始化、播放四个过程。详细的工作流程和实现机制如图4、图5所示。
A.文件选择阶段
手机终端通过文件系统访问并获取SIM卡上存储的多媒体数据文件列表,选中待播放的文件,将文件路径名等相关结果通过APDU指令形式(信令通道)传给SIM卡。
B.解码初始化
I)初始化手机终端与SIM卡之间的数据传输通道以及相关的数据缓冲区;
II)手机终端向SIM卡发送开始解码指令;
III)SIM卡接受到解码指令后,进行如下工作:
第一,打开选定的多媒体文件,读取一帧数据并解码;
第二,解完一帧后,将解码完成后输出的PCM(Pulse Code Modulation,脉码调制)码流存放到数据缓冲区DATA_buffer中,将音频基本参数存放在参数缓冲区PARA_buffer中,所述的基本参数包括采样率、声道模式和比特深度;
第三,设置专门的标志用以表明数据缓冲区DATA_buffer是否空闲,若存在空闲,解码继续,否则解码暂停。
C.初始化播放设备
I)手机终端向数据通道发送第一条读数据指令;
II)SIM卡接受到第一条读数据指令后,将参数缓冲区PARA_buffer中的音频基本参数发往数据传输通道;
III)手机终端通过数据通道获取这些音频基本参数后,利用它们初始化播放设备(如音频/视频设备)。
D.播放过程
手机终端根据播放设备的要求,以一定的速率从数据传输通道读取PCM码流并送往播放设备进行研究播放。其实现过程就是循环执行以下步骤:
I)手机终端向数据通道发送读PCM码流指令;
II)SIM卡接受到数据读取指令后,将数据缓冲区DATA_buffer中的数据送往数据通道,然后将数据缓冲区的标志置为空闲状态;若此时为解码暂停状态,则继续解码;
III)手机终端接受SIM卡传送过来的数据并将PCM码流送往音频设备播放。
IV)若手机终端读数据失败或收到SIM卡传送过来的解码结束信号,结束播放。
●实现机制
A.手机终端与SIM卡间数据的同步
手机终端与SIM卡间的数据同步是通过查看数据缓冲区DATA_buffer的“忙闲”状态来实现的。若数据缓冲区DATA_buffer空闲,则解码继续;若数据缓冲区DATA_buffer忙,则解码暂停。
初始时,数据缓冲区DATA_buffer处于“空闲”状态;启动解码器后,解码开始,将解码输出写入数据缓冲区DATA_buffer。写满后,数据缓冲区DATA_buffer处于“忙”状态。
当收到手机的读数据指令后,SIM卡将数据缓冲区DATA_buffer中的数据传送给数据通道;若传送完毕,则数据缓冲区DATA_buffer又将返回到“空闲”状态。
具体实现时,可采用多重/块数据缓冲区,只要系统中还存在空闲的数据缓冲区,解码继续;只有当所有数据缓冲区都已被占用,处于“忙”状态时,解码才暂停。
B.播放控制实现机制
控制多媒体播放状态的操作类型主要有暂停、快进、后退、停止等几类。音量控制由手机单独实现,不需要SIM卡参与。详细的播放控制实现机制如图5所示。
I)暂停实现
当用户向手机终端输入暂停播放命令(如按下暂停键)后,手机终端停止向SIM卡读取数据。SIM卡继续解码,直到所有数据缓冲区DATA_buffer都被填满,处在“忙”状态时,解码暂停。
II)快进、后退实现
当用户向手机输入“快进”或“后退”播放命令后,手机通过信令通道向SIM卡发送预先定义好的扩展的APDU指令。SIM卡接受到指令后,进行解析,根据要求向前或向后跳过一定数量的帧,即移动待解码文件的指针到一个新的位置,然后从此处开始解码。
III)停止实现
停止有以下两种情况:
(1)用户向手机输入停止命令,(2)播放正常结束。
对第(1)种情况,当用户向手机输入停止命令后,手机通过向SIM卡发送预先定义的扩展的APDU指令;SIM卡接受到该指令后,退出解码程序;同时手机终端停止向数据通道发送读数据指令。
对第(2)种情况,SIM卡解码结束后,可在数据缓冲区DATA_buffer置特殊标记,然后退出解码程序;手机读取数据时,发现特殊标记后,停止向数据通道读取数据,播放停止。