通信终端装置、通信终端接收方法、通信系统、网关的制作方法

文档序号:7590826阅读:110来源:国知局
专利名称:通信终端装置、通信终端接收方法、通信系统、网关的制作方法
技术领域
本发明涉及通信终端装置、通信终端接收方法、具有该通信终端装置的通信系统、网关,特别涉及进行IP通信时提高话音质量的技术。
背景技术
经过一段时间的飞速发展,因特网因为其覆盖面积和廉价,已经逐渐成为现在人们通信的一种重要手段,因此在因特网上传送语音数据,支持IP电话业务,已经成为现在一个电话发展的重要方向。VoIP的基本实现原理是将语音通过编码后封装在IP数据包中,然后在因特网上用UDP协议按照尽最大能力转发的方式传送数据包,到终端后,由终端根据数据包本身的顺序去掉IP报头,解码,然后播放语音数据。
由于IP电话的语音数据包是采用UDP协议按照尽最大能力转发方式来传播的,所以必然对语音业务产生一些影响。首先,同一连接的连续几个数据包在发端按照固定的时间间隔发出,如果网络负荷相同,所走的网络路径相同,就会经历相同的时延,在收端也按照固定的时间间隔到达;但是,因特网的特点是尽最大能力转发,并且是一跳一跳发送,没有固定的路由,所以,同样一个连接,不同的数据包走过的可能是不同的路由,而且即使走的是同一条路由,不同时刻网络的拥塞状态也不同,所以前后几个包的排队时延不同,这样必然导致数据包到达终端不再是按照固定的时间间隔,这样,就形成了每个包应该的到达时间和实际的到达时间之间的差值,也就是时延抖动,并且最严重的情况下时延抖动可能大到造成语言数据包乱序和丢失。
图1表示时延抖动的产生原理。其中,Pi表示第i个数据包。
因为电话是一种实时业务,所以延时太大会让用户无法接受。同时前后两个包延时抖动也会破坏语音的质量,间隔变小,后面的语音会覆盖前面的语音;间隔变大,会在语音持续过程中出现空白,并且持续的大间隔造成语音变调。
因为因特网的尽力传输这个特点,时延变大和时延抖动的产生不可避免,所以VoIP通信遇到的最大的问题就是时延和时延抖动的控制,使得语音的质量不被破坏。
图2表示网络中端对端延时的构成,其中Dprop和Dtrans由网络决定,分别代表网络的传播时延和传输时延,Dproc是语音包在放出时需要的机器处理时延,Dplay是语音包放出需要的时间,di是从发送端发送到接受端放出经历的时延,为了维持di成为一个定值来减少时延抖动,所以要调整Dqueuing,也就是在缓冲区的等待时延。
根据时延和时延抖动值的不同,网络被分成两种状态正常(normal)状态和拥塞(spike)状态。图3描述两种状态的不同正常状态下,相邻数据包在网络中的时延值一般并不相同(因为因特网非连接的特点),但是差值也就是时延抖动并不明显。接收端缓冲区的大小也被控制在一定的范围内,不会有很大的改变,更加不会出现数据包被取空的可能。而在拥塞状态下,可以把这种状态分成前后部分。在这个状态的前半区间,因为大多数数据包被网络阻塞,所以这段时间内数据包会延迟到达,缓冲区内的数据包会有被取空的危险,缓冲区变空,会意味无法利用缓冲区来补偿数据包到达时间的抖动。而进入拥塞突发状态的后半区间,因为大多数被网络阻塞的数据包会一起到达,缓冲区内的数据包数目会忽然变的很大,数据包的延迟也会变得很大,进而不可忍受。

发明内容
本发明提供一种本发明涉及通信终端装置、通信终端接收方法、具有通信终端装置的通信系统、网关,能够使进行VoIP通信时的时延稳定,提高话音质量。
本发明的通信终端装置,进行IP电话通信,具备数据包解包单元,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区,用于存储被解包后的数据包;解码单元,用于对所述接收缓冲区中存储的数据包进行解码;播放单元,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元,用于控制数据包解包单元、接收缓冲区和播放单元,其特征在于,所述中央控制单元具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
所述网络状态的判断是,当所述数据包解包单元接收到的数据包的时间延迟大于预定的数据包的延迟时间的第1下限值时,判断网络处于拥塞状态。
所述网络状态的判断是,当所述数据包解包单元所接收到的数据包的时间间隔大于预定的数据包的间隔时间的第1下限值时,判断网络处于拥塞状态。
所述网络状态的判断是,当所述接收缓冲区中存储的数据包的数量小于预定的第1下限值时,判断网络处于拥塞状态,当所述接收缓冲区中存储的数据包的数量大于比第1下限值高的第2下限值时,判断网络处于正常状态。
当所述网络状态判定部判定网络处于拥塞状态时,所述加大缓冲区大小是由所述中央控制单元向接收缓冲区从队列头部插入空包。
当所述网络状态判定部判定网络处于拥塞状态时,所述加大缓冲区大小是由所述中央控制单元向接收缓冲区中的VAD包的位置插入空包。
所述一组数据包单位是一个语音片段(talk spurt)。
当判断网络处于拥塞状态时,用NLMS算法对后续的数据包进行预测。
当缓冲区内的数据包数目超过预定的上限值时,删除缓冲区中的VAD数据包。
本发明的IP电话数据的接收方法,其特征在于,具备以下步骤根据已接收的数据包判断网络是否处于拥塞状态;当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
本发明提供一种网关,连接在路由器和电话之间,进行'电话通信,具备数据包解包单元,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区,用于存储被解包后的数据包;解码单元,用于对所述接收缓冲区中存储的数据包进行解码;播放单元,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元,用于控制数据包解包单元、接收缓冲区和播放单元,其特征在于,所述中央控制单元具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
本发明提供一种通信系统,进行IP电话通信,具备发送装置,接收装置,经由因特网将所述发送装置和接收装置连接的路由器,其特征在于,所述接收装置包括数据包解包单元,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区,用于存储被解包后的数据包;解码单元,用于对所述接收缓冲区中存储的数据包进行解码;播放单元,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元,用于控制数据包解包单元、接收缓冲区和播放单元,其特征在于,所述中央控制单元具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。


图1表示时延抖动的产生原理。
图2表示网络中延时的构成。
图3表示网络的两种不同的状态图4表示IP电话的传播原理。
图5表示本发明的通信终端装置的结构框图。
图6表示RTP包中的时间戳的示意图。
图7表示NLMS算法的模块图。
图8是缓冲区大小简单自适应算法。
图9表示循环队列和插入空包的示意图。
图10表示语言的分段时域特性。
图11表示控制模块进行缓冲区控制的流程图。
具体实施例方式
图4表示一般的IP电话的传播原理。
如图4所示,本发明的通信终端系统由VoIP发送客户端1,VoIP接收客户端2,网关3,路由器4,SIP服务器5和核心因特网组成。其中VoIP客户端即通信终端装置可以是专门的VoIP设备(如装了VoIP软件的电脑或者专门的VoIP电话),也可以是普通电话加上网关构成。在图4中,举例说明了发送客户端用普通电话加上网关构成,而接收客户端采用装了VoIP软件的电脑来构成。但并不限于这种构成,也可以是与上述形态的任一种结构。
发送客户端先用SIP控制信令通过SIP服务器5找到接收客户端,呼叫并与之建立连接。建立连接后,两个通信端通过路由器4及核心网络,传送数据流。
图5表示本发明的通信终端装置的具体结构框图。如图5所示,通信终端装置具备RTP数据包解包单元11,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区13,用于存储被解包后的数据包;解码单元14,用于对接收所述接收缓冲区中存储的数据包进行解码;播放单元15,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元12,用于控制RTP数据包解包单元、接收缓冲区和放出单元。
这里,对于通信终端装置来说,发送方客户端完成的是语音的采集、编码和打包发送;接受端的客户端完成的是接收解包,抖动调整,解码,播放。
发送方客户端设备如果是专门的VoIP设备,则语音的采集、编码和打包发送都在该设备上完成,而如果是普通电话加网关组成,则是语音的采集由电话完成,电话完成64kbpsPCM编码,但是此后再度的压缩编码和打包都在网关处完成。
因此,如果接收方客户端是专门的VoIP设备,其功能模块图与图5相同。而如果接收方客户端是网关加普通电话组成,则网关中除不包括图5中的播放单元外,其余与图5相同。
RTP数据包解包单元采集RTP(实时传输协议)数据包中的时间戳(time stamp),提取信息。接收端每个RTP的包头都包含一个时间戳,这个时间戳表示的是发送端发出这个数据包的本地绝对时间,但是一般来说,接收端和发送端不能做到同步。所以通过将接受端和发送端的本地时间对比得到的时延值并不准确。所以,时延参数的获取要通过比较前后两个数据包的时间戳的差值和前后两个包到达接收端的时间差来获得的时延抖动值。而时延值则需要根据接受端时延抖动值和缓冲区的平均大小得到相对的估计。
控制模块首先会设置一个定时器,按一定的间隔从缓冲区中提取数据包进行播放,并且利用每一次放出一个语音包的定时器来触发自适应修改缓冲区的行为。
为了使进行VoIP通信时的时延稳定,需要先检测网络的状态。检测网络状态的办法有可以有两种第一种是通过判断丢包来断定拥塞状态的开始,一旦连续两个包丢失,也就是在这两个数据包即将放出的时候,仍然没有到达,我们就认为网络进入了拥塞状态。进入拥塞状态后,数据包到达时延预测将会启动,当预测算法监测到网络进入正常状态后,就认为离开拥塞状态。
具体来说,检测网络是否进入拥塞状态,例如可以采用以下方法当数据包解包单元接收到的数据包的时间延迟大于预定的数据包的延迟时间的阈值时,就可以认为网络处于拥塞状态。
或者,当数据包解包单元所接收到的数据包的时间间隔大于预定的数据包的间隔时间的阈值时,判断网络处于拥塞状态。
第二种是通过监测缓冲区大小(即缓冲区中数据包的数量),给缓冲区的大小设置上下两个门限Lhigh和Llow,当缓冲区大小低于Llow后,就认为网络进入拥塞状态,而之后只有在缓冲区大小超过Lhigh后,才认为网络回到了正常状态。
当检测到网络处于正常状态下时,接收端逐个数据包收集RTP包头中的时间戳信息,计算出数据包的到达的相对时延值,然后根据数据包的时延和包丢失情况来判断网络状态,这种方式会给接收端带来一定的计算量负荷,图6表示RTP包中的时间戳的示意图。由于这种方式是公知的技术,所以不再详述。另外,也可以通过监视缓冲区的大小来监视网络情况,这种方式下面,接收端的任务量很小,基本没有额外计算量,因此是较佳的方式。
收集到网络状态后,需要对缓冲区进行调整,这个调整的对象是缓冲区内平均的队列长度,也就是数据包的数目,在网络正常状态下,为了不增加通信终端的计算负担,调整是以一组数据包为单位进行的。例如是按照语音间隙进行的,也就是每一次静音期结束的时候,根据前一个语音片段(talk spurt)期间内网络时延或者缓冲区长度的统计参数来对即将开始的语音片段决定缓冲区大小的设置。
如果用E(vi)表示前一个语音片段内的数据包时延的平均值, 表示前一个语音片段内数据包时延的方差;4是一个安全系数,保证一定百分率的数据包的时延不会超过前面的数值,这样就可以计算出下一个语音片段中应该设置的bi。
bi=E(vi)+4D(vi);]]>当网络处于拥塞状态时,接受端的处理方式网络检测模块一旦检测到网络进入拥塞状态,为了尽快及时根据接收到的数据包对缓冲区中的数据包进行调整,与网络在正常状态下以一组数据包为单位不同地,立即开始逐个数据包收集RTP包头中的时间戳信息,计算出数据包的到达的时延抖动和相对时延值。
收集到这些时延参数后,可以有几种处理办法
1.采用NLMS算法预测时延NLMS(Normalized Least Mean Square归一化最小均方一种估计算法)已经被证明是一种比较好的预测算法,采取合适的参数,对于变化不剧烈的随机过程,可以收敛。本系统设计在进入拥塞突发状态时,接收端采用NLMS根据前面包的延时参数,进行后面数据包可能的延时的预测。
预测之后,利用改进的离散NLMS算法来进行缓冲区参数的调整NLMS本身是一种取值连续的预测算法,但是在实际系统中,系统的放出时间的调整比较难以做到,比较容易做到的是在缓冲的buffer中添加数据包或者删除数据包,所以,当进入拥塞突发状态后,我们采用插入空白语音包的方法来调整数据包的放出时间。而在缓冲区过大的时候,我们通过删除空白语音帧来减小缓冲区的大小。
因此我们的预测值必须也是和包的放出时间成整数倍关系的离散值,在我们用NLMS预测出连续的延时值后,需要对连续的延时值进行离散化,获得离散的数值后用来控制接收缓冲区。
图7表示NLMS算法的模块图。其中 是输入,是当前时刻以前得到的VoIP数据包时延数据, 是输出,是通过以前的时延数据对当前数据包时延的预测,d(i)是当前数据包实际的时延值,e(i)是预测值和实际值之间的差值。上图中的计算方法可以用下面的公式表示di^=W→iTu→i]]>ei=di-d^i]]>w→i+1=w→i+μu→iTu→i+au→iei]]>公式中, 是滤波器系数,μ决定了通过差值对系数修改的快慢,a保证分母不会太小。
2类似TCP流量控制的简单自适应算法这是一个简化的预测控制算法,用于对时延值要求比较小的场合,因为小的时延值就意味着缓冲区内不能存放很多的数据包,因此复杂的调度算法就没有意义,这个时候,就可以采取一些简化的算法。这里提出了一种类似于TCP协议中进行流量控制时重传窗口大小控制的算法一旦系统检测出进入了拥塞突发状态,立即加大缓冲区大小,使数据包的时延变成该种业务可以接收的最大延时值(离散值),然后不断的通过每一个数据包的RTP包头的时间戳和实际的到达时间来检测网络的拥塞状态,一旦发现网络拥塞状态变好,就将增加的缓冲区大小值缩小到原来的一半,这样减小缓冲区大小,直到恢复到正常状态下的大小。这种缓冲区大小简单自适应算法如图8所示。
缓冲区大小的调节方法当进入拥塞突发状态后,在这个状态的前半区间,因为大多数数据包被网络阻塞,所以这段时间内数据包会延迟到达,缓冲区内的数据包会有被取空的危险,缓冲区的大小意味着数据包延时的大小,并且缓冲区变空,会意味无法利用缓冲区来补偿数据包到达时间的抖动。而缓冲区的具体实现采用循环队列,所以当需要加大时延量来补偿时延抖动的时候,就采用向队列头部插入空包的方法来实施。
图9表示循环队列和插入空包的示意图。
这里,空包(dummy packet)是一种由接收端产生的数据包,它本身没有经过网络传输,是在网络出现拥塞时,接收端为了调整数据包的放出时间而自行在缓冲区中插入的没有语音能量的数据包。根据编码格式的不同,它可以包含完全没有语音能量的数据,或者是一种适合人耳听觉的舒适噪音。
插入空包的时候,采取从队列头部插入的办法。缓冲区的大小设置上下两个门限Lhigh和Llow,当缓冲区大小低于Llow后,就认为网络进入拥塞状态,此时就开始在队列头部插入空包,每次插入一个,而之后只有在被阻塞的数据包相继到达,缓冲区大小超过Lhigh后,才认为网络回到了正常状态,停止插入空包。这样出现网络拥塞状态后,语音受到的影响是会在两段语音中出现中断,这样的中断对语音的语意理解的影响非常小。但是传统的插包方法则是在缺数据包的时候插入数据包,这样使得原本连续的语音片段时断时续,对语音内容的理解有很大的影响。
此外,根据发明人的研究得知,插入空包的位置最佳是在VAD包的位置。其理由如下人耳听起来为连续的人类语音,如果把时间范围缩小到毫秒级别,则根据其时域特性可以分成语音片段(talk spurt)和静音片段(silence gaps),其中在语音片段(talk spurt)中,声音的能量不为零,通过语音编码编成相应的数据包进行传输,但在静音片段(silencegaps)中,声音的能量近似为零,不会被发送端编码传输,如图10所示但是即使在一个语音片段(talk spurt)内,可能存在某些时间区域,在这段比较短的时间内,语音的能量非常的低,即使不存在,也基本不会影响人们对语义的理解,但是由于这段时间持续时间很短,因此为了避免系统状态在静音片段(silence gaps)和语音片段(talkspurt)之间的频繁切换,当这样的区域恰好充满一帧时,仍然进行编码,编码得到的帧就被称为VAD帧,这些帧与静音片段(silence gaps)内的数据不同,它们是会被传送的,因此在VAD包的位置插入空包,以及在必要的时候丢弃这些数据包,都不影响语音的质量。
此外,进入拥塞突发状态的前半区间,因为大多数被网络阻塞的数据包会一起到达,缓冲区内的数据包数目会忽然变的很大,数据包的延迟也会变得很大,进而不可忍受。
具体调整的方法可以分成三步
1).如果缓冲区不是非常的大,就采用不再接收VAD(VoiceActivity Detector语音活跃性检测)数据包的方式,在RTP模块一旦检测到接收到的数据包是VAD数据包的时候就立刻丢掉;2).如果第一步效果不明显,就清楚已经在缓冲区内的VAD数据包,减小缓冲区的大小;3).如果拥塞状态特别严重,前两种方法都不够的话,对于时延要求比较小的应用,就只能放弃一部分的语音质量,压缩每个数据包的放出时间,这个压缩是靠减少抽样值完成的。具体就是在每个数据包中按固定的间隔减少语音抽样值,从而缩短了每个数据包的放出时间。
图11表示控制模块进行缓冲区控制的流程图。
通过采用本发明,能够使通信终端装置的语音信息的延迟保持为一定,并使数据包不丢失。
权利要求
1.一种通信终端装置,进行IP电话通信,具备数据包解包单元,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区,用于存储被解包后的数据包;解码单元,用于对所述接收缓冲区中存储的数据包进行解码;播放单元,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元,用于控制数据包解包单元、接收缓冲区和播放单元,其特征在于,所述中央控制单元具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
2.根据权利要求1所述的通信终端装置,所述网络状态的判断是,当所述数据包解包单元接收到的数据包的时间延迟大于预定的数据包的延迟时间的第1下限值时,判断网络处于拥塞状态。
3.根据权利要求1所述的通信终端装置,所述网络状态的判断是,当所述数据包解包单元所接收到的数据包的时间间隔大于预定的数据包的间隔时间的第1下限值时,判断网络处于拥塞状态。
4.根据权利要求1所述的通信终端装置,所述网络状态的判断是,当所述接收缓冲区中存储的数据包的数量小于预定的第1下限值时,判断网络处于拥塞状态,当所述接收缓冲区中存储的数据包的数量大于比第1下限值高的第2下限值时,判断网络处于正常状态。
5.根据权利要求1所述的通信终端装置,当所述网络状态判定部判定网络处于拥塞状态时,所述加大缓冲区大小是由所述中央控制单元向接收缓冲区从队列头部插入空包。
6.根据权利要求1所述的通信终端装置,当所述网络状态判定部判定网络处于拥塞状态时,所述加大缓冲区大小是由所述中央控制单元向接收缓冲区中的VAD包的位置插入空包。
7.根据权利要求1所述的通信终端装置,所述一组数据包单位是一个语音片段(talk spurt)。
8.根据权利要求1所述的通信终端装置,其特征在于,当判断网络处于拥塞状态时,用NLMS算法对后续的数据包进行预测。
9.根据权利要求1所述的通信终端装置,当缓冲区内的数据包数目超过预定的上限值时,删除缓冲区中的VAD数据包。
10.一种IP电话数据的接收方法,其特征在于,具备以下步骤根据已接收的数据包判断网络是否处于拥塞状态;当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
11.根据权利要求8的接收方法,其特征在于,当所述网络状态判定部判定网络处于拥塞状态时,所述加大缓冲区大小是由所述中央控制单元向接收缓冲区从队列头部插入空包。
12.一种网关,连接在路由器和电话之间,进行IP电话通信,具备数据包解包单元,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区,用于存储被解包后的数据包;解码单元,用于对所述接收缓冲区中存储的数据包进行解码;播放单元,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元,用于控制数据包解包单元、接收缓冲区和播放单元,其特征在于,所述中央控制单元具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
13.一种通信系统,进行IP电话通信,具备发送装置,接收装置,经由因特网将所述发送装置和接收装置连接的路由器,其特征在于,所述接收装置包括数据包解包单元,用于对所接收的含有所述语音信息的包进行解包;接收缓冲区,用于存储被解包后的数据包;解码单元,用于对所述接收缓冲区中存储的数据包进行解码;播放单元,用于播放由所述解码单元解码后获得的语音信息;及中央控制单元,用于控制数据包解包单元、接收缓冲区和播放单元,其特征在于,所述中央控制单元具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
全文摘要
本发明提供一种通信终端装置、通信终端接收方法、具有通信终端装置的通信系统、网关,能够使进行VoIP通信时的时延稳定,提高话音质量。具备数据包解包单元,接收缓冲区;解码单元;播放单元;及中央控制单元,具备网络状态判定部,根据已接收的数据包判断网络是否处于拥塞状态,缓冲区调节部,当判断网络处于正常状态时,以一组数据包为单位对后续的数据包进行预测,调节缓冲区的大小;当判断网络处于拥塞状态时,以一个数据包为单位,对后续的数据包进行预测,加大缓冲区大小。
文档编号H04L12/56GK1671124SQ20041003017
公开日2005年9月21日 申请日期2004年3月19日 优先权日2004年3月19日
发明者刘静, 牛志升, 杜文, 田边史朗, 池田博树, 马元琛 申请人:清华大学, 株式会社日立制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1