用于解析多层次数据流的方法、系统和装置的制作方法

文档序号:7916899阅读:172来源:国知局
专利名称:用于解析多层次数据流的方法、系统和装置的制作方法
技术领域
本发明涉及数据处理领域,更具体地说,涉及用于解析多层次数据 流的方法、系统和装置。
背景技术
在对多层次数据流进行解码时,首先需要对该数据流进行解析,然
后才能对解析后的数据进行解码。典型的多层次数据流例如H.264视频 数据流,其中视频数据流分为如下几个层次数据流由数据帧组成,数 据帧由数据片组成,而数据片由数据宏块组成。在对H.264 ^f见频数据流 进行解码时,各数据帧需要最终被解析成数据宏块才能进行后续的解码 工作。在某些应用中,例如在移动终端上,处理器的处理能力有限,单 个的主处理单元(PPU, Primary Processing Unit)无法实现对高比特率 数据流的实时解析。在这种情况下,可以考虑用多个协处理单元(SPU, Synergistic Processing Unit)并行地进行解析工作。
一种简单的想法是基于帧进行并行解析;也就是说,PPU将不同的 帧分配给不同的SPU作解析。但是, 一般来说数据流中前后帧数据在解 码时存在一定的依赖关系,即后一帧的解码需要以前一帧为基础;同时 由于帧与帧之间的差别,对不同帧进行解析所需的时间也不同。在后帧 的解析已经由一个SPU完成而前帧的解析尚未由另一个SPU完成的情 况下,由于无法对前帧进行解码,导致无法对后帧进行解码。这一方面 降低了解码效率,另一方面由于需要对后帧的已解析数据进行緩存,从 而增加了存储要求。此外,在SPU的存储量不足以存储整个数据帧的情 况下,需要PPU将一帧数据分成若干份发送给SPU,当SPU的数目很 大时,PPU和SPU之间的数据调度和传输会变得相当复杂。

发明内容
有鉴于此,本发明提供了用于解析多层次数据流的方法、系统和装 置。所述多层次数据流中,数据帧包括多个数据片,数据片包括多个数 据宏块。
根据本发明所提供的技术方案,调度器分配并初始化预解析器和深
度解析器,分配并初始化共享存储区;
预解析器将所述数据帧预解析为数据片,并将预解析结果放入所述 共享存储区;和
深度解析器从共享存储区中逐个取走所述数据片,并将该数据片深 度解析为所述数据宏块。
本发明的技术方案在同一数据帧中的数据片这一水平进行并行处 理。从数据帧的水平来看,总是满足先完成对前帧的解析再开始对后帧 的解析,因此不会出现后帧已经解析完成而前帧尚未解析完成的情况。 存储量方面,只要求緩存一帧的数据,相比基于帧的并行处理大大减少。 SPU的存储容量通常足以存储一个数据片,因此调度器和解析器之间, 以及预解析器和深度解析器之间的数据调度和传输非常简单。
才艮据本发明进一步的优选实施例,解析器的数目可以变化。 一种情 况是,所述调度器可以在开始对一个数据帧进行解析时,调整解析器的 数目;调度器还可以在对一个数据帧进行解析的过程中动态地增加或减 少解析器的数目。
另一种情况是,解析器的总数不变,但是所述预解析器可以从预解 析模式和深度解析模式之间切换;预解析器从预解析模式切换到深度解 析模式,相当于增加了深度解析器的数目。特别地,预解析器可以在完 成预解析之后,从预解析模式切换到深度解析模式。进一步,预解析器 可以根据共享存储区中的数据量,从预解析模式切换到深度解析模式以 避免共享存储区溢出,或者从深度解析模式切换到预解析模式以避免深 度解析器闲置。
由于解析器的数目可以变化,因此可以在保证解析速度的前提下, 提高解析器的使用效率。


图1是根据本发明实施例的用于解析多层次数据流的系统的框图。
图2是根据本发明实施例的共享存储区的示意图。
图3是根据本发明实施例的用于解析多层次数据流的方法的整体流程图。
图4是根据本发明实施例的对数据片进行深度解析的详细流程图。 图5是根据本发明实施例的解析多层次数据流的示例。
具体实施例方式
以下参照

本发明提供的解析多层次数据流的方法、系统和 装置的具体实施方式
。需要说明的是,在本申请文件中,采用了数据帧、 数据片和数据宏块等名词,但是可以理解,这些名词仅仅是对有包容关 系的多个数据层次的称谓。在本发明应用于不同的多层次数据流时,可 能会有不同的称谓。
图1是根据本发明实施例的用于解析多层次数据流的系统的框图。
如图l所示,根据本发明实施例的用于解析多层次数据流的系统包 括调度器、预解析器、深度解析器和共享存储区。其中预解析器和深 度解析器可以统称为解析器。位于主内存中的共享存储区包括辅助信息 存储区和存储队列。
调度器通常位于PPU上,其用于分配并初始化参与解析工作的预解 析器和深度解析器,并且分配并初始化共享存储区。解析器被映射到SPU 上。
调度器以帧为基础对解析器的数目进行调度,即在每帧开始的时 候,根据前一相同类型帧解析所用时间、前一相同类型帧解析所用的解 析器数目以及实时解析时间来确定解析器的数目。具体而言,如果调度 器发现解析上一相同类型帧所需的时间大于实时解析时间,则调度器可 以在对当前帧解析时增加解析器的数目;相反,如果调度器发现解析上 一相同类型帧所需的时间小于实时解析时间,则调度器可以在对当前帧 解析时增加解析器的数目。实时解析时间表示为了达到实时解析整个视频流,为解析某一类型的帧所设定的基准时间,其可以是一个值,也可
以是一个区间。不同类型的帧的实时解析时间可能不相同,例如在H.264 中,I帧的实时解析时间通常大于P帧,而P帧的实时解析时间通常大 于B帧。当然,如果多层次数据流中的数据帧都具有相同的类型,那么 上述前一相同类型帧就是前一帧,且实时解析时间对于所有数据帧都是 一样的。调度器可以包括一个准动态调度模块来完成以上基于帧的调 度。
进一步,调度器可以在对当前帧的解析过程中,动态地增加或者减 少解析器的数目。作为一个例子,PPU可以在解析过程中定期地计算当 前帧的解析进度,例如当前帧中已经解析出的数据宏块数占当前帧总数 据宏块数的比值,并且计算当前帧已经消耗的解析时间与实时解析时间 的比值,如果前一比值大于后一比值,说明进度超前,则减少解析器的 数目,反之说明进度落后,则增加解析器的数目。这种定期计算和调度 可以按照规定的频率进行;也可以由某类事件触发,比如在每次解析器 向数据队列放入数据或每次解析器从存储队列取走数据时。当然还可以 采用其他的动态调度算法。这种动态调度可以提高解析器的利用效率, 但是需要更大的计算开销。调度器可以包括一个动态调度模块来完成以 上动态调度。
当然,如果不考虑解析器的利用效率,PPU可以只在对多层次数据 流开始解析的时候进行解析器的分配和初始化工作,其设定的解析器数 目在对整个视频流进行解析的过程中都保持不变,这样就可以节省调度 所需的计算开销。
在解析器中,至少一个解析器被初始化为可以在预解析模式和深度 解析模式之间切换并且在一帧数据开始的时候处于预解析模式,该解析 器称为预解析器。换句话说,预解析器包括预解析模块和深度解析模块 以及模式切换控制模块。其余的解析器被初始化为深度解析器。
预解析器将数据帧预解析为数据片,并且将数据片按顺序放入存储 队列中。深度解析器从存储队列的队列头取走一个数据片,对该数据片 进行深度解析以便形成数据宏块,将所生成的数据宏块发送给PPU进行
9后续处理,然后读取下一个数据片。在一帧数据中的所有数据片^皮放入 存储队列后,模式切换控制模块将预解析器从预解析模式切换到深度解 析模式,即停止预解析模块并启动深度解析模块。
实践中,在存储队列的容量不足以同时存储数据帧中的所有数据片 的情况下,可能出现这样的情况,即预解析器向队列中放入数据片的速 度与深度解析器从队列中取走数据片的速度不匹配。如果前者大于后者
超过一定时间,会出现队列溢出的情况;反之,如果前者小于后者超过 一定时间,会出现深度解析器闲置的情况。为了解决这一问题,模式切 换控制模块进一步监测存储队列中的数据量,在存储队列中的数据量超 过第一阈值时,将预解析器从预解析模式切换到深度解析器模式,即停 止预解析模块并启动深度解析模块,按照深度解析器的工作方式进行工 作;当存储队列中的数据量低于第二阈值时,将预解析器从深度解析模 式切换到预解析模式,即停止深度解析模块并启动预解析模块,继续从 数据帧中解析出数据片放入存储队列中。这里,所述阈值可以是绝对的 数据量,也可以是存储队列中的现有数据片的数据量占整个存储队列的 百分比。第一阈值可以等于第二阈值;当然,第一阈值大于第二阈值可 以避免频繁的切才奐。
需要说明的是,模式切换控制模块和深度解析模块并非预解析器的 必要模块,因为在解析器资源充足的情况下,不需要从预解析模式切换 到深度解析模式。
存储队列用于存放由预解析器得到的数据片,根据队列的定义,数 据片在存储队列中是先入先出(FIFO)的,即预解析器得到的数据片从 队列尾进入队列,而深度解析器从队列头取走数据片。辅助信息存储区 存放若干辅助信息。共享存储区的一个例子如图2所示,其详细内容将 在下文中详细描述。
图3是根据本发明实施例的用于解析多层次数据流的方法的整体流 程图。
在步骤301,在一帧数据开始的时候,调度器分配并初始化参与当 前帧解析工作的解析器,以及分配并初始化存储队列。如上所述,解析器的数目可以是在 一 帧开始的时候,根据前 一 相同类型帧解析所用时 间、前一相同类型帧解析所用的解析器数目以及实时解析时间来确定
的。当然,解析器的数目也可以是在解析过程中动态地调整的;解析器 的数目还可以是在对整个多层次数据流的解析过程开始的时候设定并 在整个解析过程中保持不变。
解析器中的至少一个被初始化为可以在预解析模式和深度解析模 式之间切换的预解析器,并且在对一帧数据开始解析的时候处于预解析 模式。其他解析器被初始化为深度解析器。
PPU还分配并初始化共享存储区。特别地,PPU初始化共享存储区 中的辅助信息,具体的初始化方法将在下面详细说明。
在步骤302,预解析器从一帧数据的头部开始,将一帧数据解析为 数据片并放入存储队列中,即图2所示存储队列中的数据片1、数据片 2等。前面说到,辅助信息存储区中存放若干辅助信息。所述辅助信息 例如包括当前帧的标识(FRAMENUMBER)、当前帧中数据片的总数 (MAX SLICE)等。可以由PPU或预解析器设置FRAMENUMBER。 对于MAX SLICE而言,如果帧结构定义数据帧的头部记载该帧的数据 片个数,则PPU或预解析器直接将MAX SLICE初始化为该头部记载的 内容;如果帧结构定义数据帧的头部记载由比特数表示的长度信息,则 PPU或预解析器将MAX SLICE初始化为零,然后由预解析器在每次解 析出一个数据片时将MAX SLICE力口l。也就是说,根据帧结构定义的 不同,MAX SLICE可能是在对一帧数据的解析过程中保持不变的,也 可能是随着解析过程的进行而逐渐增加的。
在步骤303,在存储队列的容量不足以同时存储数据帧中的所有数 据片的情况下,预解析器根据存储队列中的数据量判断是否暂时切换从 预解析模式切换到深度解析模式,以及从深度解析模式切换回预解析模 式。这一步是可以省略的。
在步骤304,预解析器判断预解析是否结束,即判断是否已经解析 出一帧数据的全部数据片。如果是,则从预解析模式切换到深度解析模 式,然后作为深度解析器运行。预解析器例如可以根据数据帧头部记载
ii的数据片个数或数据帧比特数来判断是否已经解析出 一帧数据的全部 数据片。
在步骤305,判断对整个数据帧的解析是否已经完成,如果已经完 成,则进入步骤307,即通知PPU从緩存中取走全部数据宏块,对当前 帧的解析结束;如果尚未完成,则进入步骤306。
在步骤306,深度解析器或者切换到深度解析模式的预解析器从存 储队列取走一个数据片,并且对该数据片进行深度解析。深度解析得到 的数据宏块放入由PPU指定的緩存。
下面以深度解析器为例,参照图4详细说明在步骤305和步骤306 中的操作。切换到深度解析模式的预解析器就步骤305和步骤306而言 与深度解析器相同。
在步骤3051,深度解析器从辅助信息存储区读取FRAME NUMBER、 MAX SLICE 、 LAST FETCHED SLICE 、 CUMULATIVE MB 和SLICE DATA OFFSET等辅助信息。其中FRAME NUMBER、 MAX SLICE是由预解析器设置的。其他辅助信息是由深度解析器在完成一个 数据片的深度解析后设置的。其中,LAST FETCHED SLICE表示当前 帧中已经被深度解析过的数据片个数,其在步骤301中被初始化为零; CUMULATIVE MB表示当前帧中已经得到的数据宏块个数,其在步骤 301中被初始化为零;SLICE DATA OFFSET表示存储队列的队列头的位 置,其在步骤301中被初始化为存储队列的起点。
在步骤3052,深度存储器判断以下条件是否成立CUMULATIVE MB等于MAX MB,且LAST FETCHED SLICE等于MAX SLICE。如 果成立,则进入步骤307;如果不成立,则进入步骤3061。其中MAX MB 是由帧格式定义的当前帧的最大宏块数目。
在步骤3061,深度存储器根据SLICE DATA OFFSET的值,从存储 队列取出一个数据片,并且对该数据片进行深度解析。
在步骤3062,深度存储器修改LAST FETCHED SLICE 、 CUMULATIVE MB和SLICE DATA OFFSET。其中,将LAST FETCHED SLICE力卩1,将CUMULATIVE MB加上对当前数据片进行深度解析所得到的数据宏块数,将SLICE DATA OFFSET设置为存储队列中下一个 数据片所在的位置。除了 CUMULATIVE MB以外,其他两个辅助信息 也可以在对当前数据片进行深度解析之前修改,即在步骤3061之前修改。
最后结合图5说明使用两个解析器来对数据帧0进行解析的例子, 其中横轴表示时间。当然,可以理解,本发明不限于仅有两个解析器的 情况。为了方便描述,在LAST FETCHED SLICE、 CUMULATIVE MB 和SLICE DATA OFFSET这三个辅助信息中,只描述LAST FETCHED SLICE和CUMULATIVE MB这两个辅助信息的变化;并且LAST FETCHED SLICE由深度解析器在进行深度解析之前修改,而 CUMULATIVE MB由深度解析器在进行深度解析之后修改。此外,假 设当前帧有12个数据片。
预解析器为SPU0,其将FRAME NUMBER设置为0。在本例中, 假设数据帧的头部没有记载数据帧中的数据片个数,因此SPUO将MAX SLICE初始化为0。按照步骤302,在从数据帧中解析出第一个数据片 slice 1后,SPUO将MAX SLICE设置为1 。
在时间点A,深度解析器SPU1开始对slice 1进行深度解析,此时, 深度解析器SPU1将LAST FETCHED SLICE从其初始值0修改为1。 CUMULATIVE MB为其初始值0。
在时间点B,深度解析器SPU1完成对slicel的深度解析,SPU1修 改CUMULATIVE MB为60。其中60表示从slicel中深度解析出60个 数据宏块。同样在时间点B,深度解析器SPU1开始对第二个数据片slice2 进行深度解析,将LAST FETCHED SLICE修改为2。此外,在时间点A 和时间点B之间,预解析器SPUO预解析出了数据片slice2-slice6,因此 在时间点B, MAX SLICE的耳又值为6。
在时间点C,深度解析器SPU1尚未完成对slice2的深度解析,因 此CUMULATIVE MB依然为60。此外,在时间点B和时间点C之间, 预解析器SPU0预解析出了数据片slice7-slice12,因此在时间点C,MAX SLICE的取值为12。根据假设,当前帧总共有12个数据片,因此按照步骤302, SPUO切换到深度解析模式,开始对第三个数据片slice3进行 深度解析,同时将LAST FETCHED SLICE修改为3 。
在时间点D,深度解析器SPU1完成对slice2的深度解析,将 CUMULATIVE MB修改为120,即从slice2中也深度解析出60个数据 宏块。同样在时间点D,深度解析器SPU1开始对第四个数据片slice4 进行深度解析,将LAST FETCHED SLICE修改为4。从时间点D开始, 由于预解析已经完成,因此MAX SLICE的取值保持为12。
此后,深度解析器SPU1和处于深度解析模式的SPUO对剩余的数 据片进行深度解析。并且检查CUMULATIVE MB是否达到帧格式所规 定的当前幀的最大宏块数目8160。
在时间点J,深度解析器SPU1发现CUMULATIVE MB是否达到帧 格式所规定的当前帧的最大宏块数目8160,由此判断对当前帧的解析已 经完成,从而通知PPU进行后续的处理。
虽然已经图示和描述了本发明的若干示例性实施例,不过本领域技 术人员可以理解的是,在不偏离本发明原则和精神的前提下,可以对这 些实施例进行改变,本发明的范围由权利要求书及其等价变换所限定。
1权利要求
1、一种用于解析多层次数据流的方法,在所述多层次数据流中,数据帧包括多个数据片,数据片包括多个数据宏块,其特征在于,在对各数据帧进行解析的过程中,该方法包括调度器分配并初始化预解析器和深度解析器,分配并初始化共享存储区;预解析器将当前数据帧预解析为数据片,并将预解析结果放入所述共享存储区;和深度解析器从共享存储区中逐个取走所述数据片,并将所取走的数据片深度解析为数据宏块。
2、 根据权利要求1所述的方法,其特征在于,所述调度器分配并 初始化预解析器和深度解析器包括调度器在开始对当前数据帧进行解析时,确定解析器的数目;和 调度器根据所确定的数目分配并初始化预解析器和深度解析器。
3、 根据权利要求2所述的方法,其特征在于,所述确定解析器的 数目包括如果解析上一数据帧所需的时间多于基准时间,则增加用于当前数 据帧的解析器的数目;如果解析上一数据帧所需的时间少于基准时间, 则减少用于当前数据帧的解析器的数目。
4、 根据权利要求3所述的方法,其特征在于,所述多层次数据流 中的数据帧具有不同的类型,所述解析上一数据帧所需的时间为解析上 一相同类型数据帧所需的时间,所述基准时间为与该类型对应的基准时 间。
5、 才艮据权利要求1至4中任意一项所述的方法,其特征在于,该 方法进一步包括在对数据帧进行解析的过程中动态地增加或减少解析器的数目。
6、 根据权利要求5所述的方法,其特征在于,所述在对各数据帧 进行解析的过程中动态地增加或减少解析器的数目包括计算对当前数据帧的解析进度,在进度落后时增加解析器的数目,在进度超前时减少解析器的数目。
7、 根据权利要求1至6中任意一项所述的方法,其特征在于,该 方法进一步包括预解析器在已经得到所述数据帧中所有数据片时,从预解析^t式切 换到深度解析模式。
8、 根据权利要求1至7中任意一项所述的方法,其特征在于,该 方法进一步包括预解析器根据所述共享存储区中的数据量在预解析模式和深度解 析模式之间切换。
9、 根据权利要求8所述的方法,其特征在于,所述预解析器根据所述共享存储区中的数据量在预解析模式和深度解析模式之间切换包 括在共享存储区中的数据量超过第一阈值时,预解析器从预解析模式切换到深度解析器模式;当共享存储区中的数据量低于第二阈值时,预 解析器从深度解析模式切换到预解析模式。
10、 一种用于解析多层次数据流的方法,在所述多层次数据流中, 数据帧包括多个数据片,数据片包括多个数据宏块,其特征在于,预解 析器将当前数据帧预解析为数据片,并在已经得到所述当前数据帧中所 有数据片时,从预解析模式切换到深度解析模式。
11、 根据权利要求10所述的方法,其特征在于,该方法进一步包括预解析器将预解析结果放入共享存储区,并根据所述共享存储区中的数 据量在预解析模式和深度解析模式之间切换。
12、 根据权利要求11所述的方法,其特征在于,所述预解析器根据 所述共享存储区中的数据量在预解析模式和深度解析模式之间切换包 括在共享存储区中的数据量超过第一阈值时,预解析器从预解析模式 切换到深度解析器模式;当共享存储区中的数据量低于第二阔值时,预 解析器从深度解析模式切换到预解析模式。
13、 一种用于解析多层次数据流的系统,在所述多层次lt据流中,数据帧包括多个数据片,数据片包括多个数据宏块,其特征在于,该系统包括调度器,用于分配并初始化解析器,分配并初始化共享存储区,所 述解析器包括预解析器和深度解析器;预解析器,包括预解析模块,用于将所述数据帧预解析为数据片, 并将预解析结果;^丈入所述共享存储区;深度解析器,用于从共享存储区中逐个取走所述数据片,并将该数 据片深度解析为数据宏块;和共享存储区,用于存放所述预解析器所得到的所述数据片。
14、 根据权利要求13所述的系统,其特征在于,所述调度器包括 准动态调度模块,用于在开始对各数据帧进行解析的时候确定解析器的 数目,并根据所确定的数目分配并初始化预解析器和深度解析器。
15、 根据权利要求14所述的系统,其特征在于,所述准调度模块 比较解析上一数据帧所需的时间和基准时间,如果解析上一数据帧所需 的时间多于基准时间,则增加用于当前数据帧的解析器的数目;如果解 析上一数据帧所需的时间少于基准时间,则减少用于当前数据帧的解析 器的l丈目。
16、 根据权利要求13至15中任意一项所述的系统,其特征在于, 所述调度器包括动态调度模块,用于在对各数据帧进行解析的过程中动 态地增加或减少解析器的数目。
17、 根据权利要求16所述的系统,其特征在于,所述动态调度模 块计算对当前数据帧的解析进度,在进度落后时增加解析器的数目,在 进度超前时减少解析器的数目。
18、 根据权利要求13至17中任意一项所述的系统,其特征在于, 所述预解析器进一步包括深度解析模块,用于从共享存储区中取走所述数据片,并将该数据 片预解析为所述数据宏块;和模式切换控制模块,用于在所述预解析器已经得到所述数据帧中所 有数据片时,停止所述预解析模块并启动所述深度解析模块。
19、 根据权利要求13至18中任意一项所述的系统,其特征在于, 所述预解析器进一步包括深度解析模块,用于从共享存储区中取走所述数据片,并将该数据 片预解析为所述数据宏块;和模式切换控制模块,用于根据所述共享存储区中的数据量,停止所 述预解析和所述深度解析模块中的一个并启动另一个。
20、 根据权利要求19所述的系统,所述模式切换控制模块在共享 存储区中的数据量超过第一阈值时,停止所述预解析模块并启动所述深 度解析器模块,在共享存储区中的数据量低于第二阈值时,停止所述深 度解析模块并启动所述预解析模块。
21、 一种用于解析多层次数据流的预解析器,在所述多层次数据流 中,数据帧包括多个数据片,数据片包括多个数据宏块,其特征在于, 该预解析器包 括预解析模块,用于将所述数据帧预解析为数据片,并将预解析结果 放入所述共享存储区;深度解析模块,用于从共享存储区中取走所述数据片,并将该数据 片预解析为所述数据宏块;和模式切换控制模块,用于在所述预解析器已经得到所述数据帧中所 有数据片时,停止所述预解析模块并启动所述深度解析模块。
22、 根据权利要求21所述的预解析器,其特征在于,所述模式切 换控制模块进一步用于根据所述共享存储区中的数据量,停止所述预解 析和所述深度解析模块中的一个并启动另一个。
23、 根据权利要求22所述的预解析器,其特征在于,所述模式切 换控制模块在共享存储区中的数据量超过第一阈值时,停止所述预解析 模块并启动所述深度解析器模块,在共享存储区中的数据量低于第二阈 值时,停止所述深度解析模块并启动所述预解析模块。
全文摘要
本发明提供了用于解析多层次数据流的方法、系统和装置。根据本发明的技术方案,调度器分配并初始化预解析器和深度解析器,分配并初始化共享存储区;预解析器将多层次数据流中的数据帧预解析为数据片,并将预解析结果放入所述共享存储区;深度解析器,从共享存储区中逐个取走所述数据片,并将该数据片深度解析为数据宏块。这样就不会出现后帧已经解析完成而前帧尚未解析完成的情况。同时,在存储量和数据传输的复杂度方面也得到了优化。此外解析器的数目可以变化,从而可以在保证解析速度的前提下提高解析器的利用效率。
文档编号H04N7/26GK101621686SQ200810131789
公开日2010年1月6日 申请日期2008年6月30日 优先权日2008年6月30日
发明者星 刘, 晟 徐, 李获鼎, 杨雨东, 昱 袁, 凌 邵, 蓉 阎 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1