去块效应滤波器的滤波方法与系统的制作方法

文档序号:7966854阅读:149来源:国知局
专利名称:去块效应滤波器的滤波方法与系统的制作方法
技术领域
本发明涉及视频编解码的集成电路设计领域。
背景技术
H.264标准是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像专家组)的联合视频组(JVT,Joint Video Team)开发的视频编码标准。这是目前最新的视频编码标准,与先前的标准相同,都是采用基于块变换的混合编码方案。在H.264视频编码标准中,解码器反变换量化之后的图像会出现“块效应”,这是基于块编码的压缩算法常见的人工瑕疵。其产生的原因有两个一个原因在于基于块的帧内和帧间预测残差的DCT变换;第二个原因来自于运动补偿预测。
为了去除解码器反变换量化之后的图像出现的块效应,H.264标准引入了去块效应滤波器,对块的边界进行滤波。经过滤波处理,减少了块效应,而图像的质量基本不受影响,因此主观质量大大改善。如果不采用去块效应滤波,同样的主观质量,需要多出5%~10%的码率。在有效地改善视频图像质量和压缩效率的同时,去块效应滤波也引入了极大的计算复杂度,其运算量大约占到了解码器计算总量的1/3。另一方面,去块效应滤波过程需要反复从片外的存储器中读出待滤波的像素数据,并将滤波后的像素数据写入片外存储器,频繁的读写操作往往成为制约滤波处理能力的瓶颈。
下面介绍H.264标准中的去块效应滤波过程滤波对象和顺序H.264的去块效应滤波是基于宏块基础上进行的,应用于每一个已解码完成的宏块,对每个宏块内的每个4×4块的4个边(整幅图像的边缘除外)都要进行。图1中的虚线表示每个宏块中需要滤波的边界,其中a、b、c、d、i、j、m、n是竖直边界,e、f、g、h、k、l、o、p是水平边界。具体的滤波顺序就是按照字母顺序进行,即a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p。
边界滤波强度边界滤波强度(BS)决定了滤波器选择的滤波参数,控制去块效应滤波的强度。对所有的4×4亮度块的边界,边界滤波强度的数值r与边界两边相邻块的性质有关。假定边界两边的图像块为P和Q,可以得到确定r值的判决树如图2所示。判断时按照从上到下的顺序对图中的条件进行判断,直到满足某一条件,就给出r的相应值。
虚假边界的判断去方块滤波的作用是去除H.264编解码算法带来的块效应,但是块的边界如果正好是图像的边界,如家具边缘等,若不加以判断而误认为是块效应并进行了滤波,则可能造成新的误差。所以,在滤波之前,首先应该判断该边界是图像的真实边界还是块效应形成的虚假边界,对真实边界不进行滤波处理。H.264标准中设定了两个门限α和β来判断虚假边界。α表示块间的边界门限,β表示块内的边界门限,高于门限就判定为真实边界,否则就判定为虚假边界。α和β的取值取决于量化步长的大小,当量化步长大时,量化误差大,块效应明显,因此门限值随之变大,反之量化值步长小时门限值随之变小。
滤波计算在确定了边界的滤波强度之后,就可以按照图1所示的滤波顺序依次完成各个边界的滤波计算。在每个竖直边界或者水平边界两边相邻的两个块中,取出图3所示的与边界垂直的8个像素点p0~p3和q0~q3,作为待滤波的数据,根据边界的滤波强度的不同采用不同的滤波过程,得到滤波后的数据。

发明内容
本发明的目的在于提出了一种将对外部存储器的读写操作与滤波计算并行执行的滤波方法,并给出了该方法的电路实现。
本发明的思路在于1)将滤波过程的中间数据全部缓存,只将滤波后的最终结果输出,可以达到对片外存储器的读写次数的下限,从而将外部存储器的带宽对处理能力的影响降到最小。2)基于一种改进的滤波顺序,相对于基本的滤波顺序,可以减小片内缓存的中间数据量,从而减小电路规模。3)将对外部存储器的读写操作与滤波计算并行执行,减少了整个滤波过程需要的时钟周期数,从而提高了处理能力。
以下详细说明这三个思路1)对外部存储器读写次数的下限对一个宏块内所有需要滤波的4×4大小的块进行标记,如图4所示,其中字母a-p标记的是相邻的参考块,字母A-Y标记的是宏块内的块。为了减少对外部存储器的读写次数,应该避免把滤波过程的中间数据写入外部存储器中,而只将每个块滤波后的最终结果写入外部存储器。设定外部存储器的位宽为32bit,每次可以读出或写入一个块的同一行的4个像素点的数据,那么从外部存储器中读出图4所示的待滤波数据需要4×40=160个时钟周期,将滤波后的最终结果写入外部存储器也需要4×40=160个时钟周期。由于将所有中间数据都缓存在片内,所以160个时钟周期就是一个宏块的滤波过程对外部存储器读写次数的下限。
2)需要缓存的中间数据量根据图1所示的滤波顺序,得到基本的去块效应滤波顺序,如图5a所示,其中的数字表示边界的滤波顺序。该顺序不利于尽早得到滤波后的最终结果,增加了对中间数据缓存的需求。一种改进后的滤波顺序,如图5b所示,其中的数字表示边界的滤波顺序。改进的滤波顺序能够尽早地完成同一个块的4个边界的滤波,从而减少了需要缓存的中间数据量。以图4的亮度宏块中的块A为例,说明两种不同的滤波顺序需要缓存的中间数据量的不同。按照图5a所示的基本的滤波顺序,最早在完成第21个边界的滤波之后才能得到该块滤波后的最终结果,需要缓存整个宏块内的块A~P的中间数据,即16个4×4大小的块;而按照图5b所示的改进后的滤波顺序,最早在完成第11个边界的滤波之后就能得到该块滤波后的最终结果,需要缓存的中间数据最多为A、B、C、D、E、F这6个块,即6×4×4×8=768bit。
3)读写操作与滤波计算并行执行使得对外部存储器的读写操作与滤波计算并行执行,可以减少滤波过程需要的时钟周期数,从而提高处理能力。由于每次读出或写入的是一个4×4大小的块同一行的4个像素点的数据,所以块的读操作和写操作可以和该块的竖直边界的滤波计算并行执行,而不能和该块的水平边界的滤波计算并行执行。所以,对图4和图5b所示的亮度宏块,从外部存储器中读出块A~P的操作可以分别和竖直边界1、2、4、6、9、10、12、14、17、18、20、22、25、26、28、30的滤波计算并行执行;将块e、f、g、h的滤波后的最终结果写入外部存储器的操作可以分别和竖直边界1、9、17、25的滤波操作并行执行。另外,如果块的水平边界滤波之后得到该块滤波后的最终结果,那么将该结果写入外部存储器的操作可以和下一个边界的滤波计算或者下一个块的读操作并行执行。所以,对图4和图5b所示的亮度宏块,将a、b、c、A、B、C、E、F、G、I、J、K这12个块的滤波后的最终结果写入外部存储器的操作可以分别和边界4、6、8、12、14、16、20、22、24、28、30、32的滤波操作并行执行;将块d、D、H的滤波后的最终结果写入外部存储器的操作可以分别和读出块f、g、h的操作并行执行。
根据以上三个思路,本发明提出了具体的滤波方法,其流程如图6所示,并且本发明还给出了该滤波方法的电路实现,如图7和图8所示。
本发明的特征在于1.所述方法是根据H.264标准利用大规模集成电路设计去块效应滤波器,对每个宏块内的每个4×4块的除去整幅图像边缘的4个边界进行滤波的方法,该方法又分为亮度宏块的滤波方法和色度宏块的滤波方法,其中亮度宏块的滤波方法依次有以下步骤
步骤(1).对亮度宏块进行标记并存入外部存储器亮度宏块内每一行的4×4块从左到右依次标记为A,B,C,D;E,F,G, H;I,J,K,L,以及M,N,O,P;与A,B,C,D从左到右依次水平相邻的参考块分别标记为a,b,c,d;与A,E,I,M从上到下依次垂直相邻的参考块分别标记为e,f,g,h;分别把参考块e,f,g,h和亮度宏块内的块A,E,I,M间的竖直边界从上到下依次标记为1,9,17,25;分别把块A,E,I,M和块B,F,J,N之间,把块B,F,J,N和块C,G, K,O之间,把块C,G,K,O和块D,H,L,P之间的竖直边界从上到下依次各标记为2,10,18,26;4,12,20,28;6,14,22,30;分别把参考块a,b,c,d和亮度宏块内的块A,B,C,D间的水平边界从左到右依次标记为3,5,7,8;分别把块A,B,C,D和块E,F,G,H之间,把块E,F,G,H和块I,J,K,L之间,把块I,J,K,L和块M,N,O,P之间的水平边界从左到右依次各标记为11,13,15,16;19,21,23,24;27,29,31,32;步骤(2).从外部存储器中读出参考块a、b、c、d并通过数据缓存选择器存入中间数据缓存器中;步骤(3).按以下步骤,分别从外部存储器中依次读出参考块e和块A,B,C,D,完成边界1~8的滤波计算,把参考块e、a、b、c、d的最终滤波结果写入外部存储器;步骤(3.1).从外部存储器中读出参考块e并通过数据缓存选择器存入中间数据缓存器中;步骤(3.2).从外部存储器中读出块A,依次经过数据缓存选择器和中间数据缓存器后,送往多路选择器,再由多路选择器送到边界滤波器完成边界1的滤波计算,同时将计算结果作为参考块e的最终滤波结果和块A的中间数据分别写入外部存储器和经数据缓存选择器写入中间数据缓存器;步骤(3.3).从外部存储器中读出块B,按照步骤(3.2)所述途径送往边界滤波器,完成边界2的滤波计算,同时将计算结果作为块A的中间数据和块B的中间数据经数据缓存选择器写入中间数据缓存器;步骤(3.4).所述边界滤波器完成边界3的滤波计算,同时将计算结果作为参考块a的最终滤波结果和块A的中间数据按照步骤(3.2)的方式处理;步骤(3.5).从外部存储器中读出块C,按照步骤(3.2)所述途径送往边界滤波器,完成边界4的滤波计算,同时将计算结果作为块B的中间数据和块C的中间数据经数据缓存选择器写入中间数据缓存器,并且将参考块a的最终滤波结果写入外部存储器;步骤(3.6).所述边界滤波器完成边界5的滤波计算,同时将计算结果作为参考块b的最终滤波结果和块B的中间数据按照步骤(3.2)的方式处理;
步骤(3.7).从外部存储器中读出块D,按照步骤(3.2)所述途径送往边界滤波器,完成边界6的滤波计算,同时将计算结果作为块C的中间数据和块D的中间数据经数据缓存选择器写入中间数据缓存器,并且将参考块b的最终滤波结果写入外部存储器;步骤(3.8).所述边界滤波器完成边界7的滤波计算,同时将计算结果作为参考块c的最终滤波结果和块C的中间数据按照步骤(3.2)的方式处理;步骤(3.9).所述边界滤波器完成边界8的滤波计算,同时将计算结果作为参考块d的最终滤波结果和块D的中间数据经数据缓存选择器写入中间数据缓存器,并且将参考块c的最终滤波结果写入外部存储器;步骤(3.10).将参考块d的最终滤波结果写入外部存储器;步骤(4).从外部存储器中读出参考块f和块E,F,G,H,按照步骤(3)所述方法完成边界9~16的滤波计算,将参考块f和块A,B,C,D的最终滤波结果写入外部存储器;步骤(5).从外部存储器中读出参考块g和块I,J,K,L,按照步骤(3)所述方法完成边界17~24的滤波计算,将参考块g和块E,F,G,H的最终滤波结果写入外部存储器;步骤(6).从外部存储器中读出参考块h和块M,N,O,P,按照步骤(3)所述方法完成边界25~32的滤波计算,将参考块h和块I,J,K,L的最终滤波结果写入外部存储器;步骤(7).将块M、N、O、P的最终滤波结果写入外部存储器;所述的边界滤波器是通过一个输出选择与缓存器把各块的最终滤波结果送往外部存储器的。
2.根据权利要求,所述的去块效应滤波器的滤波方法,其特征在于所述方法是通过一个控制器采用下述的三级流水线的并行结构实现的在第一级流水线中,待滤波数据和滤波过程的中间数据通过控制信号,经过数据缓存选择器存储在中间数据缓存器中;在第二级流水线中,控制器将中间数据缓存器中存储的数据通过一个多路选择器送给边界滤波器完成一个边界的滤波,并将得到的滤波过程的中间数据送回给数据缓存选择器;在第三级流水线中,在控制器的控制下,最终滤波结果由输出选择与缓存器选择已经完成滤波的像素点输出。
本设计硬件上用FGPA实现,用Matlab进行行为级建模,用Verilog进行RTL级编码和功能仿真。基于SMIC 0.18μm最坏的工艺,综合后的电路的关键路径最大时延为7ns,即时钟频率达到140MHz,电路规模约为1.62万门。完成一个宏块的滤波过程需要348个时钟周期,能够以111.7帧/s的帧率对1280×720分辨率的图像进行滤波处理。与现有的设计相比,本发明减小了电路规模,并且减少了完成一个宏块的去块效应滤波过程的时钟周期数,从而提高了处理能力。


图1滤波对象和顺序;图2确定边界滤波强度的判决树;图3竖直边界与水平边界;图4宏块的块标记;图5基本的和改进的滤波顺序;(a)基本的滤波顺序;(b)改进的滤波顺序;图6滤波流程图;图7去块效应滤波器的结构图;图8边界滤波器的结构图。
具体实施例方式
按照图5b所示的滤波顺序,对于图4中的亮度宏块,按照图6所示的流程依次完成宏内所有边界的滤波,其具体步骤说明如下步骤0从外部存储器中读出块a、b、c、d并缓存;步骤1从外部存储器中读出块e、A、B、C、D,完成边界1~8的滤波计算,将块e、a、b、c、d滤波后的最终结果写入外部存储器;步骤2从外部存储器中读出块f、E、F、G、H,完成边界9~16的滤波计算,将块f、A、B、C、D滤波后的最终结果写入外部存储器;步骤3从外部存储器中读出块g、I、J、K、L,完成边界17~24的滤波计算,将块g、E、F、G、H滤波后的最终结果写入外部存储器;步骤4从外部存储器中读出块h、M、N、O、P,完成边界25~32的滤波计算,将块h、I、J、K、L滤波后的最终结果写入外部存储器;步骤5将块M、N、O、P滤波后的最终结果写入外部存储器。
由于数据的相关性,步骤O的读操作和步骤5的写操作都不能与滤波计算并行执行。步骤1、2、3、4中的读写操作与滤波计算可以并行执行,并且这4个步骤是类似的,只是处理的块不同。下面只讨论步骤1的具体实现过程,步骤2、3、4可以采用与其类似的过程完成。步骤1的具体过程如下1)从外部存储器中读出块e并缓存;2)从外部存储器中读出块A,完成边界1的滤波计算,同时将块e滤波后的最终结果写入外部存储器,缓存块A的中间数据;3)从外部存储器中读出块B,完成边界2的滤波计算,缓存块A和块B的中间数据;
4)完成边界3的滤波计算,缓存块a滤波后的最终结果和块A的中间数据;5)从外部存储器中读出块C,完成边界4的滤波计算,同时将块a滤波后的最终结果写入外部存储器,缓存块B和块C的中间数据;6)完成边界5的滤波计算,缓存块b滤波后的最终结果和块B的中间数据;7)从外部存储器中读出块D,完成边界6的滤波计算,同时将块b滤波后的最终结果写入外部存储器,缓存块C和块D的中间数据;8)完成边界7的滤波计算,缓存块c滤波后的最终结果和块C的中间数据;9)完成边界8的滤波计算,同时将块c滤波后的最终结果写入外部存储器,缓存块d滤波后的最终结果和块D的中间数据。
10)将块d滤波后的最终结果写入外部存储器,该操作与步骤2的第1)步并行执行。
按照图5b所示的滤波顺序,对于图4中的一个色度宏块,滤波方法的具体步骤如下步骤0从外部存储器中读出块i、j并缓存;步骤1从外部存储器中读出块k、R、S,完成边界33~36的滤波计算,将块k、i、j滤波后的最终结果写入外部存储器;步骤2从外部存储器中读出块l、T、U,完成边界37~40的滤波计算,将块l、R、S滤波后的最终结果写入外部存储器;步骤3将块T、U滤波后的最终结果写入存储器。
根据本发明提出的滤波流程图,可以得到去块效应滤波器的系统如图7所示,这是一个三级流水线加旁路的并行处理结构,其中带箭头的细线表示控制信号,带箭头的粗线表示数据流,数据流的位宽都是32bit。
第一级流水线中,待滤波数据和滤波过程的中间数据通过数据缓存选择器存储在中间数据缓存器中。中间数据缓存器是6个4×32bit大小的寄存器,数据缓存选择器根据控制信号,将数据存入中间数据缓存器的不同存储单元中。
第二级流水线中,缓存的数据通过多路选择器送给边界滤波器完成一个边界的滤波,并将得到的滤波过程的中间数据经旁路送回第一级流水线。其中边界滤波器的结构如图8所示,它完成对图3所示的竖直边界或水平边界的滤波计算。图8中的控制信号给出了滤波计算模块所需要的滤波参数,(p0,p1,p2,p3)和(q0,q1,q2,q3)是待滤波的像素点,(p0′,p1′,p2′,p3′)和(q0′,q1′,q2′,q3′)是滤波后的像素点,滤波计算模块按照H.264标准中规定的计算过程在控制信号的控制下分别完成(p0′,q0′)、(p1′,q1′)、(p2′,q2′)、(p3′,q3′)的计算。为了减小电路的关键路径长度,边界滤波器的输出通过一级寄存器缓存,所以输出相对于输入会有1个时钟周期的延迟,于是完成一个边界的滤波需要5个时钟周期。图8所示的边界滤波器每个时钟周期处理8个像素点,所以完成一个边界的32个像素点的处理需要4个时钟周期。
第三级流水线中,如果Out_1与Out_2中有一路得到了滤波后的最终结果,就通过输出选择与缓存器选择该路缓存并输出,缓存的大小是1个4×32bit的寄存器。
统计各个步骤需要的时钟周期数,可以得到,完成一个亮度宏块的滤波需要212个时钟周期,完成一个色度宏块的滤波需要68个时钟周期。所以,完成一个包含亮度分量和色度分量的宏块的滤波一共需要212+68×2=348个时钟周期。
权利要求
1.去块效应滤波器的滤波方法,其特征在于所述方法是根据H.264标准利用大规模集成电路设计去块效应滤波器,对每个宏块内的每个4×4块的除去整幅图像边缘的4个边界进行滤波的方法,该方法又分为亮度宏块的滤波方法和色度宏块的滤波方法,其中亮度宏块的滤波方法依次有以下步骤步骤(1).对亮度宏块进行标记并存入外部存储器亮度宏块内每一行的4×4块从左到右依次标记为A,B,C,D;E,F,G,H;I,J,K,L,以及M,N,O,P;与A,B,C,D从左到右依次水平相邻的参考块分别标记为a,b,c,d;与A,E,I,M从上到下依次垂直相邻的参考块分别标记为e,f,g,h;分别把参考块e,f,g,h和亮度宏块内的块A,E,I,M间的竖直边界从上到下依次标记为1,9,17,25;分别把块A,E,I,M和块B,F,J,N之间,把块B,F,J,N和块C,G,K,O之间,把块C,G,K,O和块D,H,L,P之间的竖直边界从上到下依次各标记为2,10,18,26;4,12,20,28;6,14,22,30;分别把参考块a,b,c,d和亮度宏块内的块A,B,C,D间的水平边界从左到右依次标记为3,5,7,8;分别把块A,B,C,D和块E,F,G,H之间,把块E,F,G,H和块I,J,K,L之间,把块I,J,K,L和块M,N,O,P之间的水平边界从左到右依次各标记为11,13,15,16;19,21,23,24;27,29,31,32;步骤(2).从外部存储器中读出参考块a、b、c、d并通过数据缓存选择器存入中间数据缓存器中;步骤(3).按以下步骤,分别从外部存储器中依次读出参考块e和块A,B,C,D,完成边界1~8的滤波计算,把参考块e、a、b、c、d的最终滤波结果写入外部存储器;步骤(3.1).从外部存储器中读出参考块e并通过数据缓存选择器存入中间数据缓存器中;步骤(3.2).从外部存储器中读出块A,依次经过数据缓存选择器和中间数据缓存器后,送往多路选择器,再由多路选择器送到边界滤波器完成边界1的滤波计算,同时将计算结果作为参考块e的最终滤波结果和块A的中间数据分别写入外部存储器和经数据缓存选择器写入中间数据缓存器;步骤(3.3).从外部存储器中读出块B,按照步骤(3.2)所述途径送往边界滤波器,完成边界2的滤波计算,同时将计算结果作为块A的中间数据和块B的中间数据经数据缓存选择器写入中间数据缓存器;步骤(3.4).所述边界滤波器完成边界3的滤波计算,同时将计算结果作为参考块a的最终滤波结果和块A的中间数据按照步骤(3.2)的方式处理;步骤(3.5).从外部存储器中读出块C,按照步骤(3.2)所述途径送往边界滤波器,完成边界4的滤波计算,同时将计算结果作为块B的中间数据和块C的中间数据经数据缓存选择器写入中间数据缓存器,并且将参考块a的最终滤波结果写入外部存储器;步骤(3.6).所述边界滤波器完成边界5的滤波计算,同时将计算结果作为参考块b的最终滤波结果和块B的中间数据按照步骤(3.2)的方式处理;步骤(3.7).从外部存储器中读出块D,按照步骤(3.2)所述途径送往边界滤波器,完成边界6的滤波计算,同时将计算结果作为块C的中间数据和块D的中间数据经数据缓存选择器写入中间数据缓存器,并且将参考块b的最终滤波结果写入外部存储器;步骤(3.8).所述边界滤波器完成边界7的滤波计算,同时将计算结果作为参考块c的最终滤波结果和块C的中间数据按照步骤(3.2)的方式处理;步骤(3.9).所述边界滤波器完成边界8的滤波计算,同时将计算结果作为参考块d的最终滤波结果和块D的中间数据经数据缓存选择器写入中间数据缓存器,并且将参考块c的最终滤波结果写入外部存储器;步骤(3.10).将参考块d的最终滤波结果写入外部存储器;步骤(4).从外部存储器中读出参考块f和块E,F,G,H,按照步骤(3)所述方法完成边界9~16的滤波计算,将参考块f和块A,B,C,D的最终滤波结果写入外部存储器;步骤(5).从外部存储器中读出参考块g和块I,J,K,L,按照步骤(3)所述方法完成边界17~24的滤波计算,将参考块g和块E,F,G,H的最终滤波结果写入外部存储器;步骤(6).从外部存储器中读出参考块h和块M,N,O,P,按照步骤(3)所述方法完成边界25~32的滤波计算,将参考块h和块I,J,K,L的最终滤波结果写入外部存储器;步骤(7).将块M、N、O、P的最终滤波结果写入外部存储器;所述的边界滤波器是通过一个输出选择与缓存器把各块的最终滤波结果送往外部存储器的。
2.根据权利要求,所述的去块效应滤波器的滤波方法,其特征在于所述方法是通过一个控制器采用下述的三级流水线的并行结构实现的在第一级流水线中,待滤波数据和滤波过程的中间数据通过控制信号,经过数据缓存选择器存储在中间数据缓存器中;在第二级流水线中,控制器将中间数据缓存器中存储的数据通过一个多路选择器送给边界滤波器完成一个边界的滤波,并将得到的滤波过程的中间数据送回给数据缓存选择器;在第三级流水线中,在控制器的控制下,最终滤波结果由输出选择与缓存器选择已经完成滤波的像素点输出。
全文摘要
本发明属于视频编解码的集成电路设计领域,提出了一种将对外部存储器的读写操作与滤波计算并行执行的滤波方法,并给出了该方法的电路结构,来完成符合H.264视频编码标准的去块效应滤波计算。其特征在于1)将滤波过程的中间数据全部缓存,只将滤波后的最终结果输出,可以达到对片外存储器的读写次数的下限,从而将外部存储器的带宽对处理能力的影响降到最小。2)基于一种改进的滤波顺序,相对于基本的滤波顺序,可以减小片内缓存的中间数据量,从而减小电路规模。3)将对外部存储器的读写操作与滤波计算并行执行,减少了整个滤波过程需要的时钟周期数,从而提高了处理能力。因而,本发明减小了电路规模,降低了对外部存储器的带宽要求,提高了数据的吞吐率。
文档编号H04N9/77GK1921625SQ20061011311
公开日2007年2月28日 申请日期2006年9月15日 优先权日2006年9月15日
发明者李树国, 杨晨 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1