包含cpu处理器接口的可编程变长解码器的制作方法

文档序号:7505325阅读:183来源:国知局
专利名称:包含cpu处理器接口的可编程变长解码器的制作方法
技术领域
本发明有关于一种有效解码压缩编码图像数据的解码设备,更具体地讲,有关于一种用于解码已被压缩为变长代码(VLC)的图像数据的可编程变长解码器。
背景技术
数据压缩技术已经广泛用于有效地存储并传送图像、语音、以及数据。此类数据压缩技术包含变长编码。根据该技术,较经常出现的数据由较短的码字表示,较不经常出现的数据由较长的码字表示。结果,变长代码(VLC)的平均代码长度短于原来的数据,从而获得数据压缩。
VLC目前应用于运动图像专家组(MPEG)压缩标准,例如MPEG-1、MPEG-2、或者MPEG-4。压缩标准MPEG-4满足高效压缩与低比特速度的需求,这在移动通信系统与有线/无线多媒体应用中是重要的特性。因此,变长解码器必须能够高速处理数据,包含低功耗电路配置,并且作为程序处理各种头部(header)语法。
图1为现有变长解码器的方框图。以下将参照图1描述现有变长解码器的配置与操作。
现有的变长解码器包含外部存储缓冲器10、解码单元30、以及接口单元20。外部存储缓冲器10暂时存储通过数据通道接收的变长码字的串行比特流,并且输出所存储的比特流。解码单元30将连续变长码字解码为原始定长码字,并且作为对读取信号的响应,输出该定长码字。接口单元20将外部存储缓冲器10与解码单元30接口,并且向解码单元3提供从外部存储缓冲器10输出的串行比特流。
接口单元20包括第一触发器21、第二触发器22、第一桶型(barrel)移位器24、加法器26、以及累积寄存器28。第一触发器21与第二触发器22暂时存储从外部存储缓冲器10输出的数据,并且输出所存储的数据。加法器26将从解码单元30输出的当前解码的码字的长度与先前解码的码字的长度相加。如果该总和超过最大码字长度,则加法器26生成进位信号。然后,累积寄存器28存储加法器26的总和。第一桶型移位器24接收来自外部存储缓冲器10、第一触发器21、以及第二触发器22的数据,基于加法器26的总和移位所接收的数据,并且向解码单元30输出已移位数据。
解码单元30包含第三触发器31、第四触发器32、第五触发器33、第二桶型移位器34、以及变长码表35。第四触发器32暂时存储从接口单元20的第一桶型移位器24输出的数据。变长码表35包含码字表36、码长度表37、以及已解码码字表38。变长码表35是可编程的,其解码连续变长码字及其长度,并且输出串行比特流。第五触发器33存储已解码码字的长度。根据从第五触发器33输出的已解码码字长度,第二桶型移位器34将从第三触发器31与第四触发器32输出的数据移位。然后,第二桶型移位器34将已移位数据输出给变长码表35。第三触发器31接收第二桶型移位器34的输出。
此后将描述现有的变长解码器的操作。
外部存储缓冲器10存储通过数据通道接收的变长码字的串行比特流。根据从解码单元130的第五触发器33输出的已解码码字的长度,通过接口单元20将变长码字输出给解码单元30。然后,解码单元30将连续变长码字解码为定长码字。对于表示未定变长码字的比特输入序列,解码单元30的变长码表35输出相应于变长码字的定长码字及变长码字的长度。变长码表35包含表查找存储器。通过使用变长码表35的表查找存储器,提供解码单元30的第二桶型移位器34的输出,作为用于产生下一已解码码字的输入。第二桶型移位器34由从第五触发器33输出的已解码码字的长度控制。
第二桶型移位器34接收来自第三触发器31与第四触发器32的数据。第三触发器31与第四触发器32每个都具有等于最大码字长度的比特容量。第二桶型移位器34的输出连接到变长码表35的表查找存储器。当接口单元20提供数据给第四触发器32时,第二桶型移位器34连接到第三触发器31。在每个时钟周期,第二桶型移位器34向变长码表35提供相应于串行比特流中最大码字长度的比特数目,其等于存储在第三触发器31与第四触发器32中的最大码字长度的两倍。
变长码表35输出码字长度与来自表查找存储器的相应的已解码码字给第五触发器33。码字长度相应于第二桶型移位器34的输出。
第五触发器33向第二桶型移位器34提供从变长码表35接收的、先前已解码变长码字的长度。这些长度相应于下一个待解码的变长码字。换而言之,第二桶型移位器34的输出被移位等于从第五触发器33输出的先前已解码码字的长度的总和的数目,然后从下一个待解码的变长码字的第一比特开始。
因为在每个时钟周期都转换第三触发器31中的比特,所以在每个时钟周期都向第四触发器32提供从接口单元20输出的数据。因此,从已解码码字开始的比特流被提供给第二桶型移位器34。
第四触发器32接收接口单元20的第一桶型移位器24的输出。
第一桶型移位器24接收来自外部存储缓冲器10、第一触发器21、以及第二触发器22的数据。向第一触发器21提供来自外部存储缓冲器10的数据。然后,第二触发器22存储和输出来自第一触发器21的数据。第一触发器21与以及第二触发器22中存储的变长码字的长度等于最大码字长度。
第一桶型移位器24的输出由加法器26的总和控制。该总和通过将从解码单元30输出的当前解码的码字的长度与先前解码的码字的长度相加而获得。换而言之,根据先前解码的码字的长度,移位第一桶型移位器24的输出。第一桶型移位器24的输出与解码单元30的第二桶型移位器34的输出构成比特流。先前解码的码字的长度可能超过最大码字长度,即,加法器生成进位信号。此类事件指示将存储在第二触发器22中的所有比特传送给解码单元30。换而言之,当生成进位信号时,第一触发器21的内容被传送给第二触发器22,并且因此,外部存储缓冲器10的输出被传送到第二触发器22中。同时,下一个定长比特数据段由外部存储缓冲器10检测。
通过这种方法,根据先前已解码码字的长度,第一桶型移位器24移位依次从外部存储缓冲器10输出的数据,并且将已移位数据输出给解码单元30。随后,解码单元30以上述方法解码变长码字。
现有的变长解码器使用两个桶型移位器,并且以硬件处理所有的语法,即可编程逻辑阵列(PLA)。相应地,使用两个桶型移位器而不是一个桶型移位器导致了大量的计算,并且使变长解码器的电路配置复杂化。

发明内容
本发明提供了一种可编程变长解码器,其与中央处理单元(CPU)处理器接口,通过使用CPU处理器进行部分变长解码操作,并且通过使用一个桶型移位器减少了计算量及其电路规模两者。
根据本发明的一个方面,提供了一种与外部处理器接口的可编程变长解码器,该可编程变长解码器包含存储缓冲器、锁存单元、多路复用单元、第一桶型移位器、解码单元、以及控制单元。存储缓冲器存储用于以定长数据段解码的、输入的串行比特流数据,并且作为对第一控制信号的响应,输出所存储的比特流数据。锁存单元暂时存储从存储缓冲器输出的数据,并且作为对第一控制信号的响应,输出所存储的数据。多路复用单元选择来自锁存单元的数据,并且输出所选择的数据。第一桶型移位器将从多路复用单元输出的所选择的数据移位第二控制信号值,并且输出已移位数据。解码单元解码第一桶型移位器的输出,并且输出已解码码字与已解码码字的比特长度。控制单元将当前解码码字的比特长度与先前解码码字的比特长度相加,存储总和,根据该总和生成第一控制信号与第二控制信号,并且向锁存单元与第一桶型移位器输出第一控制信号与第二控制信号。
优选地,该可编程变长解码器还包含处理器数据接口单元,其将第一桶型移位器的输出传送给外部处理器,从而可以在外部处理器中进行第一桶型移位器到外部处理器的变长解码。该处理器数据接口单元包含第二桶型移位器,该第二桶型移位器将第一桶型移位器的输出移位由外部处理器提供的比特长度,并且输出已移位数据。
锁存单元包含第一锁存器、第二锁存器、以及第三锁存器。第一锁存器暂时存储存储缓冲器的输出,并且作为对第一控制信号的响应,输出所存储的数据。第二锁存器暂时存储第一锁存器的输出,并且作为对第一控制信号的响应,输出所存储的数据。第三锁存器暂时存储第二锁存器的输出,并且作为对第一控制信号的响应,输出所存储的数据。
优选地,多路复用单元包含第一多路复用器与第二多路复用器。作为对选择控制信号的响应,第一多路复用器选择第一锁存器的输出或者第二锁存器的输出,并且向第一桶型移位器输出所选择的数据作为低位比特。作为对选择控制信号的响应,第二多路复用器选择第二锁存器的输出或者第三锁存器的输出,并且向第一桶型移位器输出所选择的数据作为高位比特。
优选地,解码单元包含码元解码器与长度解码器。码元解码器解码第一桶型移位器的输出,并且将所检测的变长码字转换为定长码字。长度解码器向控制单元输出所检测的变长码字的比特长度。
优选地,解码单元还包含包括可编程逻辑阵列的码字表,并且根据码字表,码元解码器将第一桶型移位器的输出解码为码字,将已解码码字表示为预定值,并且输出该预定值。
优选地,控制单元包含第三多路复用器、加法器、累积寄存器、以及进位寄存器。第三多路复用器选择从长度解码器输出的、所检测的变长码字的比特长度或者由外部处理器提供的比特长度。加法器将当前解码码字的所选择的比特长度与先前解码码字的比特长度相加。累积寄存器存储加法器的总和,即先前解码码字比特长度与当前解码码字的所选择的比特长度的总和,输出加法器的总和至第一桶型移位器作为第二控制信号,以及作为先前解码码字比特长度。进位寄存器暂时存储在加法器操作期间生成的进位信号,并且输出该进位信号至存储缓冲器与锁存单元作为第一控制信号。
优选地,存储缓冲器以16比特的格式存储输入的比特流数据。


图1为现有变长解码器的方框图;图2为根据本发明的可编程变长解码器的方框图;图3显示存储在存储缓冲器中的比特流数据的实施方式;图4显示图2每个单元中数据的实施方式。
<标号说明>
100存储缓冲器200锁存单元300多路复用单元 400第一桶型移位器500处理器数据接口单元600解码单元604码元解码器606长度解码器700控制单元具体实施方式
以下将参照附图更全面地描述本发明,在附图中显示了本发明的优选实施方式。
图2为根据本发明的可编程变长解码器的方框图。
参照图2,该可编程变长解码器包含存储缓冲器100、锁存单元200、多路复用单元300、第一桶型移位器400、解码单元600、以及控制单元700。可选地,该可编程变长解码器可以包含处理器数据接口单元500。
存储缓冲器100存储预定数目比特(例如16比特)的输入比特流,并且作为对从控制单元700输出的第一控制信号的响应,输出所存储的比特流。
锁存单元200包含第一锁存器202、第二锁存器204、以及第三锁存器206。第一锁存器202暂时存储从存储缓冲器100输出的数据,并且作为对来自控制单元700的第一控制信号的响应,输出所存储的数据。第二锁存器204暂时存储从第一锁存器202输出的数据,并且对第一控制信号的响应,输出所存储的数据。第三锁存器206暂时存储从第二锁存器204输出的数据,并且对第一控制信号的响应,输出所存储的数据。换而言之,作为对从控制单元700输出的第一控制信号的响应,从第二锁存器204输出的数据被传送给第三锁存器206,从第一锁存器202输出的数据被传送给第二锁存器204,并且从存储缓冲器100输出的数据被传送给第一锁存器202。
根据数据划分模式DP_MODE,多路复用单元300选择来自锁存单元200的数据,并且输出所选择的数据给第一桶型移位器400。即,第一锁存器202与第二锁存器204的输出构成低位数据302,而第二锁存器204与第三锁存器206的输出构成高位数据304。当数据划分模式DP_MODE为“0”时,从第三锁存器206输出的数据构成高位数据304,并且从第二锁存器204输出的数据构成低位数据302,当数据划分模式DP_MODE为“1”时,从第二锁存器204输出的数据构成高位数据304,并且从第一锁存器202输出的数据构成低位数据302。
多路复用器306包含第一多路复用器(未显示)以及第二多路复用器(未显示)。根据数据划分模式DP_MODE,第一多路复用器选择从第一锁存器202输出的数据或者从第二锁存器204输出的数据,并且输出低位数据302。根据数据划分模式DP_MODE,第二多路复用器选择从第二锁存器204或者从第三锁存器206输出的数据,并且输出高位数据304。换而言之,当数据划分模式DP_MODE为“0”时,第一多路复用器选择从第二锁存器204输出的数据,并且输出所选择的数据作为至第一桶型移位器400的输入的低16位,而第二多路复用器选择从第三锁存器206输出的数据,并且输出所选择的数据作为至第一桶型移位器400的输入的高16位。当数据划分模式DP_MODE为“1”时,第一多路复用器选择从第一锁存器202输出的数据,并且输出所选择的数据作为至第一桶型移位器400的输入的低16位,而第二多路复用器选择从第二锁存器204输出的数据,并且输出所选择的数据作为至第一桶型移位器400的输入的高16位。
第一桶型移位器400将从多路复用单元300输出的数据移位从控制单元700输出的第二控制信号的值,并且将已移位数据输出给解码单元600。
处理器数据接口单元500将第一桶型移位器400的输出提供给外部处理器,例如中央处理单元(CPU)处理器,以进行VLC解码。处理器数据接口单元500包含第二桶型移位器502与将已移位数据传送给外部处理器的已移位数据504。第二桶型移位器502将第一桶型移位器400的输出移位由外部处理器提供的比特长度“cmd”,并且将已移位数据504输出给外部处理器。
通过包含处理器数据接口单元500,外部处理器可以处理变长解码器的头部语法,并且变长解码器的硬件可以处理大量的计算。本发明的变长解码器配置外部处理器,使得外部处理器进行头部语法分析。另外,本发明的变长解码器只包含一个桶型移位器,从而可以降低变长解码器的计算量与总体规模。
解码单元600包含码字表602、码元解码器604、以及长度解码器606。解码单元600解码第一桶型移位器400的输出,并且输出已解码码字与比特长度L。码元解码器604解码第一桶型移位器400的输出,并且将所检测的变长码字转换为定长码字。换而言之,根据码字表602,码元解码器604将第一桶型移位器400的输出解码为码字,将已解码码字表示为预定值,并且输出该预定值。码字表602可以采用可编程逻辑阵列(PLA)的形式。长度解码器606向控制单元700输出相应于所检测的变长码字的比特长度L。
控制单元700包含第三多路复用器702、加法器704、累积寄存器706、以及进位寄存器708。加法器704将当前解码码字的比特长度L与先前存储的比特长度714相加,并且存储加法器704的总和。根据加法器704的总和,控制单元700生成第一控制信号712以及第二控制信号714,并且将这些信号输出给存储缓冲器100、锁存单元200、以及第一桶型移位器400。
第三多路复用器702选择从长度解码器606输出的比特长度L或者由外部处理器提供的比特长度“cmd”。当进行头部分析时,外部处理器提供比特长度“cmd”。第三多路复用器702输出当前比特长度716。
加法器704将当前比特长度716与先前存储的比特长度714相加。
累积寄存器706存储加法器704的总和,即先前解码码字的比特长度。累积寄存器706将加法器704的总和向第一桶型移位器400输出作为第二控制信号714,并且向加法器704提供加法器704的总和作为先前存储的比特长度714。
进位寄存器708暂时存储在加法器704操作期间生成的进位信号,并且向存储缓冲器100以及锁存单元200输出进位信号作为第一控制信号712。
在本发明中,存储或输出16位数据,但是比特数目不限于16。此后,将参照图3与图4描述该变长解码器的操作。
图3显示存储在存储缓冲器100中的比特流数据的实施方式。图4显示图2每个单元中数据的实施方式。图3显示在存储缓冲器100中的比特流数据以及该比特流地址的配置。当图3所示的比特流输入到存储缓冲器100时,第一锁存器202初始化为“7F7F”,如图4所示。
在第一时钟周期,第三多路复用器702接收来自外部处理器的、搜索开始码的命令,并且输出当前比特长度为“8”,直至发现开始码。
在第二时钟周期,生成进位信号“1”。然后,从存储缓冲器100中读取相应于地址“0”的比特流数据“7F00”,并且存储在第一锁存器202中。同时,存储在第一锁存器202中的数据,即“7F7F”,被传送给第二锁存器204,并且存储在第二锁存器204中的数据,即“0000”,被传送给第三锁存器206。在图4中,数据划分模式DP_MODE被设置为“0”。在这种情况下,多路复用单元300的输出包含第三锁存器206的输出,其构成高位数据204,以及第二锁存器204的输出,其构成低位数据302。多路复用单元300的输出“0000_7F7F”输入第一桶型移位器400。因为累积寄存器706输出“0”,所以第一桶型移位器400将“0000_7F7F”移位“0”,并且输出“0000”。
在第三时钟周期,因为累积寄存器706输出“8”,所以第一桶型移位器400将“0000_7F7F”移位“8”,并且输出“007F”。
在第四时钟周期,输出进位信号“1”。然后,从存储缓冲器100读取相应于地址“1”的比特流数据“0001”,并且存储在第一锁存器202中。同时,存储在第一锁存器202中的数据,即“7F00”,被传送给第二锁存器204,并且存储在第二锁存器204中的数据,即“7F7F”,被传送给第三锁存器206。第一桶型移位器400接收“7F7F_7F00”。因为累积寄存器706输出“0”,所以第一桶型移位器400将“7F7F_7F00”移位“0”,并且输出“7F7F”。
在第六时钟周期,输出进位信号“1”。然后,从存储缓冲器100读取相应于地址“2”的比特流数据“B610”,并且存储在第一锁存器202中。同时,存储在第一锁存器202中的数据,即“0001”,被传送给第二锁存器204,并且存储在第二锁存器204中的数据,即“7F00”,被传送给第三锁存器206。第一桶型移位器400接收“7F00_0001”。因为累积寄存器706输出“0”,所以第一桶型移位器400将“7F00_0001”移位“0”,并且输出“7F00”。在第八时钟周期,输出进位信号“1”。然后,从存储缓冲器100读取相应于地址“3”的比特流数据“0018”,并且存储在第一锁存器202中。同时,存储在第一锁存器202中的数据,即“B610”,被传送给第二锁存器204,并且存储在第二锁存器204中的数据,即“0001”,被传送给第三锁存器206。第一桶型移位器400接收“0001_B610”。因为累积寄存器706输出“8”(如果已经找到开始码,则累积寄存器706保持“8”),所以第一桶型移位器400将“0001_B610”移位“8”,并且输出“01B6”。通知外部处理器发现了开始码。此后,根据当前比特长度716,获得比特流,并且从第10至第7时钟周期期间将该比特流提供给处理器数据接口单元500。
在第十时钟周期,第一桶型移位器400输出“4000”,并且第二桶型移位器502将“4000”移位等于“2”的比特长度“cmd”。第二桶型移位器502输出“1”作为已移位数据504。外部处理器接收该已移位数据504,并且利用它进行头部分析。
在第十一时钟周期,当外部处理器向第二桶型移位器502输出“1”作为比特长度“cmd”时,当前比特长度716为“1”。因此,第一桶型移位器400输出“8000”,第二桶型移位器502接收“8000”,将“8000”移位“1”,并且输出“1”作为已移位数据504。通过这种方式,外部处理器进行变长解码。
解码单元600的PLA形成已解码码字。变长解码器在解码单元600中处理已解码码字的码长度。
在第十八时钟周期,因为当前比特长度为“3”,所以累积寄存器706输出“8”。因此,第一桶型移位器400将所接收的“7B63_32F9”移位“8”并输出“6332”。解码单元600解码“6332”,并通知控制单元700在第十九时钟周期使用1比特码字长度。
在本发明中,一部分头部分析实现为程序,并且在硬件中进行小于宏块的单元的解码。
虽然参照其示范性实施方式具体显示并描述了本发明,但是本领域技术人员应该理解在不脱离权利要求所限定的本发明的精神与范围的前提下可以进行各种形式与细节的修改。
工业实用性根据本发明的可编程变长解码器,可以通过只使用一个桶型移位器,减小变长解码器的计算量与总体规模。因为变长解码器与外部处理接口,所以外部处理器可以进行一部分变长解码。具体地讲,可以分别进行MPEG语法头部分析以及宏块的VLC分析。因此,通过与外部处理器接口,变长解码器可以处理头部语法。
权利要求
1.一种与外部处理器接口的可编程变长解码器,该可编程变长解码器包含存储缓冲器,其存储用于以定长数据段解码的、输入的串行比特流数据,并且作为对第一控制信号的响应、输出所存储的比特流数据;锁存单元,其暂时存储从存储缓冲器输出的数据,并且作为对第一控制信号的响应、输出所存储的数据;多路复用单元,其选择来自锁存单元的数据,并且输出所选择的数据;第一桶型移位器,其将从多路复用单元输出的所选择的数据移位第二控制信号值,并且输出已移位数据;解码单元,其解码第一桶型移位器的输出,并且输出已解码码字与已解码码字的比特长度;以及控制单元,其将当前解码码字的比特长度与先前解码码字的比特长度相加,存储总和,根据该总和生成第一控制信号与第二控制信号,并且向锁存单元与第一桶型移位器输出第一控制信号与第二控制信号。
2.根据权利要求1的可编程变长解码器,包含处理器数据接口单元,其将第一桶型移位器的输出传送给外部处理器,从而可以在外部处理器中进行第一桶型移位器到外部处理器的变长解码,其中处理器数据接口单元包含第二桶型移位器,该第二桶型移位器将第一桶型移位器的输出移位由外部处理器提供的比特长度,并且输出已移位数据。
3.根据权利要求1的可编程变长解码器,其中锁存单元包含第一锁存器,其暂时存储存储缓冲器的输出,并且作为对第一控制信号的响应,输出所存储的数据;第二锁存器,其暂时存储第一锁存器的输出,并且作为对第一控制信号的响应,输出所存储的数据;以及第三锁存器,其暂时存储第二锁存器的输出,并且作为对第一控制信号的响应,输出所存储的数据。
4.根据权利要求1的可编程变长解码器,其中多路复用单元包含第一多路复用器,其作为对选择控制信号的响应,选择第一锁存器的输出或者第二锁存器的输出,并且向第一桶型移位器输出所选择的数据作为低位比特;以及第二多路复用器,其作为对选择控制信号的响应,选择第二锁存器的输出或者第三锁存器的输出,并且向第一桶型移位器输出所选择的数据作为高位比特。
5.根据权利要求1的可编程变长解码器,其中解码单元包含码元解码器,其解码第一桶型移位器的输出,并且将所检测的变长码字转换为定长码字;以及长度解码器,其向控制单元输出所检测的变长码字的比特长度。
6.根据权利要求5的可编程变长解码器,其中解码单元还包含包括可编程逻辑阵列的码字表,并且根据码字表,码元解码器将第一桶型移位器的输出解码为码字,将已解码码字表示为预定值,并且输出该预定值。
7.根据权利要求5的可编程变长解码器,其中控制单元包含第三多路复用器,其选择从长度解码器输出的、所检测的变长码字的比特长度或者由外部处理器提供的比特长度;加法器,其将当前解码码字的所选择的比特长度与先前解码码字的比特长度相加;累积寄存器,其存储加法器的总和,即先前解码码字比特长度与当前解码码字的所选择的比特长度的总和,输出加法器的总和至第一桶型移位器作为第二控制信号,以及作为先前解码码字比特长度;以及进位寄存器,其暂时存储在加法器操作期间生成的进位信号,并且输出该进位信号至存储缓冲器与锁存单元作为第一控制信号。
8.根据权利要求1的可编程变长解码器,其中存储缓冲器以16比特的格式存储输入的比特流数据。
全文摘要
提供了一种与外部处理器接口的可编程变长解码器。该可编程变长解码器包含存储缓冲器、锁存单元、多路复用单元、第一桶型移位器、解码单元、以及控制单元。存储缓冲器存储用于以定长数据段解码的、输入的串行比特流数据,并且作为对第一控制信号的响应、输出所存储的比特流数据。锁存单元暂时存储从存储缓冲器输出的数据,并且作为对第一控制信号的响应、输出所存储的数据。多路复用单元选择来自锁存单元的数据,并且输出所选择的数据。第一桶型移位器将多路复用单元的输出移位第二控制信号值,并且输出已移位数据。解码单元解码第一桶型移位器的输出,并且输出已解码码字与已解码码字的比特长度。控制单元将当前解码码字的比特长度与先前解码码字的比特长度相加,存储总和,根据该总和生成第一控制信号与第二控制信号,并且向锁存单元与第一桶型移位器输出第一控制信号与第二控制信号。
文档编号H03M7/42GK1653698SQ03811277
公开日2005年8月10日 申请日期2003年5月16日 优先权日2002年5月17日
发明者具本台, 金翼均 申请人:韩国电子通信研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1