MPEG-2视频解码器及其输入缓冲器的控制方法 本发明涉及视频解码技术,具体地涉及到MPEG-2视频解码器及其输入缓冲器的控制方法。
当前,通用的数字高清晰度电视编码技术是MPEG-2技术。它由[SO/IEC13818文件描述。在MPEG-2的系统部分(13818-1)中,定义了假想的传输流系统目标视频解码器(T-STD),以描述解码过程。在T-STD中,对视频,音频和系统控制信息均定义了输入缓冲器及其处理过程。在满足一系列假定的前提下,不需采取缓冲器控制措施,输入缓冲器也不会上溢或下溢。
但是,这些假定在实际情况下是不存在的。1,T-STD假定单路视频码流以不高于Rmax的恒定码率输入。由于实际通信网络的关系,输入码流可能间断,也可能在一定时间内以远高于Rmax的码率输入;2,无法精确控制开始解码的时间,开始解码的时刻必定在一帧同步的开始;3,解码显示不是瞬间完成的。因此,在实际应用中,如果对视频输入缓冲器不加控制的话,可能出现输入缓冲器的上溢或下溢。
因此,本发明的目的是提供一种MPEG-2视频解码器及其输入缓冲器的控制方法,以克服上述缺点。
按照本发明的第一个方面的MPEG-2视频解码器,它是一个SDTV视频解码器,它由去复用器,输入缓冲器,视频解码单元和系统控制器组成;其中,输入码流TS被送到去复用器,经过去复用后,送到输入缓冲器中,视频解码单元从输入缓冲器中取出码流进行解码;系统控制器对去复用器,输入缓冲器和视频解码单元进行控制;其特征在于:
系统控制器通过I/O接口与视频解码单元通信,读/写视频解码单元中的寄存器,从而得知输入缓冲器的读写指针,从而可实行对输入缓冲器的控制,使视频解码器进行解码,停止解码,跳帧等。
根据本发明第一个方面的MPEG-2视频解码器的输入缓冲器地控制方法,其中所说视频解码器是一个SDTV视频解码器,它由去复用器,输入缓冲器,视频解码单元和系统控制器组成;其特征在于:所说方法包括下列步骤:
步骤11,在每一帧解码时,系统控制器通过视频解码单元获取所解码帧的帧类型,并暂时存储起来;
步骤12,在每帧解码开始前,系统控制器判断前一解码帧的帧类型是否为I帧,如果前一帧为I帧,则进入步骤13,如果前一帧不是I帧,则重复执行此步骤;
步骤13,系统控制器通过解码单元读取输入缓冲器的读写指针,以便判断缓冲器的充盈度;
步骤14,判断输入缓冲器中的内容是否小于一个P帧的大小,如果是,则缓冲器可能下溢,这时系统控制器控制解码单元停止一帧解码,并重复显示上一帧的内容,然后回到步骤12;如果不是,则进入步骤15;
步骤15,判断输入缓冲器的内容是否连续3帧小于1.2个P帧大小,如果是,则系统控制器控制解码单元停止一帧解码,并重复显示上一帧的内容,然后回到步骤12;如果不是,则进入步骤16;
步骤16,判断输入缓冲器的剩余空间是否小于一个I帧大小,如果是,则系统控制器控制视频解码单元跳过一个B帧,然后回到步骤12;如果不是,则进入步骤17;
步骤17,判断输入缓冲器的剩余空间是否连续3帧小于一个I帧加一个B帧大小,如果是,则系统控制器控制视频解码单元跳过一个B帧,然后回到步骤12;如果不是,则进入步骤18;
步骤18,系统控制器控制视频解码单元执行随后的解码处理。
根据本发明第二方面的MPEG-2视频解码器,所说视频解码器是一个HDTV视频解码器,它包括去复用器,1/4电路,四个输入缓冲器,四个视频解码单元,合成单元,以及系统控制器;其中,输入码流TS被送到去复用器,经过去复用后,被送到1/4电路;在1/4电路中,将HDTV图象分成四个SDTV子图象;由1/4电路分割的四个子图象分别送到在四个视频解码单元之前分别连接的四个输入缓冲器;缓冲后,再由四个SDTV视频解码单元进行平行解码;最后,将分别经过各个视频解码单元解码的这些低分辩率的子图象数字视频信号送到合成单元,以合成为一路高清晰度电视信号;系统控制器控制去复用器,1/4电路,四个输入缓冲器,四个视频解码单元,合成单元;其特征在于:
系统控制器通过I/O接口与视频解码单元通信,读/写视频解码单元中的寄存器,以得知输入缓冲器的读写指针,从而可实行对输入缓冲器的控制,使视频解码器进行解码,停止解码,跳帧等。
根据本发明第二方面的MPEG-2视频解码器的输入缓冲器的控制方法,其中,所说视频解码器是一个HDTV视频解码器,它包括去复用器,1/4电路,四个输入缓冲器,四个视频解码单元,合成单元,以及系统控制器;其特征在于:所说方法包括下列步骤:
步骤21,在第一帧解码前,对四个视频解码单元复位;
步骤22,在每帧解码开始前,系统控制器判断前一解码帧的帧类型是否为I帧,如果前一帧为I帧,则进入步骤23,如果前一帧不是I帧,则重复执行此步骤;
步骤23,系统控制器通过各个视频解码单元读取各个输入缓冲器的读写指针,以便判断各个缓冲器的充盈度;
步骤24,判断各个输入缓冲器中的内容是否至少有一个小于一个P帧的大小,如果是,则缓冲器可能下溢,这时系统控制器控制四个视频解码单元停止一帧解码,并重复显示上一帧的内容,然后回到步骤22;如果不是,则进入步骤25:
步骤25,判断各个输入缓冲器中的内容是否至少一个连续3帧小于1.2个P帧大小,如果是,则系统控制器控制四个解码单元停止一帧解码,并重复显示上一帧的内容,然后回到步骤22;如果不是,则进入步骤26;
步骤26,判断各个输入缓冲器的剩余空间是否至少有一个小于一个1帧大小,如果是,则系统控制器控制四个视频解码单元跳过一个B帧,然后回到步骤22;如果不是,则进入步骤27;
步骤27,判断各个输入缓冲器的剩余空间是否至少有一个连续3帧小于一个I帧加一个B帧大小,如果是,则系统控制器控制四个视频解码单元跳过一个B帧,然后回到步骤22;如果不是,则进入步骤28;
步骤28,系统控制器控制四个视频解码单元执行随后的解码处理。
下面将结合附图对本发明的最佳实施例进行描述。
图1是按照本发明第一实施例的MPEG-2视频解码器的方框图;
图2是按照本发明第一实施例的MPEG-2视频解码器的输入缓冲器的控制方法的流程图。
图3是按照本发明第二实施例的MPEG-2视频解码器的方框图;
图4是按照本发明第二实施例的MPEG-2视频解码器的输入缓冲器的控制方法的流程图。
图1显示了按照本发明第一实施例的MPEG-2视频解码器的结构。它是一个SDTV视频解码单元,它由去复用器1,输入缓冲器2,视频解码单元3和系统控制器4组成。去复用器1可采用专用芯片比如L64007构成,视频解码单元3可以采用专用芯片L64002构成。在该图中,输入码流是TS流,它被送到去复用器1,经过去复用后,以码率R1输出PES流到输入缓冲器2中,视频解码单元3以码率R2从输入缓冲器2中取出码流进行解码。系统控制器4对去复用器1,输入缓冲器2和视频解码单元3进行控制。在本实施例中,对去复用器2的缓冲大小不作要求。因此,根据通信网络的情况,输入码流的码率R1变化会很不均匀。输入缓冲器2的大小为MPEG-2规定的VBV缓冲器最低值。输入缓冲器2由解码单元3控制,它的读写指针存储在解码单元3中。系统控制器4包含有主控芯片(未显示),它通过I/O接口(未显示)与视频解码单元通信,可以读/写视频解码单元中的寄存器(未显示),从而得知输入缓冲器的读写指针。从而可实行对输入缓冲器的控制,使视频解码器开始解码,停止解码,跳帧等。
下面参见图2所示的流程图描述本实施例的MPEG-2视频解码器的输入缓冲器的控制方法。
根据MPEG-2的规定,每帧码流的头部均有帧类型指示。在每一帧解码时,系统控制器4通过视频解码单元3获得当前帧的帧类型,并暂时存储起来。在开始新的一帧解码之前,判断上一帧的帧类型。由于一般开始解码的时刻为帧同步产生的时刻,所以系统控制器4的判断可以在帧消隐期间进行。如果上一帧为I帧,则系统控制器4通过解码单元3去读取输入缓冲器的读写指针,根此可知输入缓冲器2的充盈度。
按照本实施例的MPEG-2视频解码器的输入缓冲器的控制方法具体包括下列步骤:
步骤11,在每一帧解码时,系统控制器4通过视频解码单元3获取所解码帧的帧类型,并暂时存储起来;
步骤12,在每帧解码开始前,系统控制器4判断前一解码帧的帧类型是否为I帧,如果前一帧为I帧,则进入步骤13,如果前一帧不是I帧,则重复执行此步骤;
步骤13,系统控制器4通过解码单元3读取输入缓冲器2的读写指针,以便判断缓冲器的充盈度;
步骤14,判断输入缓冲器2中的内容是否小于一个P帧的大小,如果是,则缓冲器可能下溢,这时系统控制器4控制解码单元3停止一帧解码,并重复显示上一帧的内容,然后回到步骤12;如果不是,则进入步骤15;
步骤15,判断输入缓冲器2的内容是否连续3帧小于1.2个P帧大小,如果是,则系统控制器4控制解码单元3停止一帧解码,并重复显示上一帧的内容,然后回到步骤12;如果不是,则进入步骤16;
步骤16,判断输入缓冲器的剩余空间是否小于一个I帧大小,如果是,则系统控制器4控制视频解码单元3跳过一个B帧,然后回到步骤12;如果不是,则进入步骤17;
步骤17,判断输入缓冲器的剩余空间是否连续3帧小于一个I帧加一个B帧大小,如果是,则系统控制器4控制视频解码单元3跳过一个B帧,然后回到步骤12;如果不是,则进入步骤18;
步骤18,系统控制器4控制视频解码单元3执行随后的解码处理。
这里所指的I,B,P帧大小由前几个GOP的平均值决定。系统控制器4根据每次开始解码前的缓冲器的状态可推知出它们的大小。
按照图1的框图,缓冲器大小为228KB,输入码流为周期的,其周期在30-200之间变化,变化率为20/S。输入码流平均速率为5.25Mbps,码流极不平均。在40ms内,输入码流平均速率为13.5Mbps。突发速率为27Mbps。突发速率维持时间可大于10ms。在另一个40ms内,输入码流可能中断。输入码流I,P,B帧的大小比率可从7∶1∶1变化为3∶1.5∶1。在这种情况下,不采用缓冲器控制方法,在30s之内,缓冲器会上溢或下下溢。采用本发明的缓冲器控制方法,在15分钟内可保持不上溢或下溢。
图3显示了按照本发明另一实施例的MPEG-2视频解码器的方框图。该视频解码器是一个HDTV视频解码器,它包括去复用器12,1/4电路5,四个输入缓冲器21-24,四个视频解码单元31-34,合成单元6,以及系统控制器42。输入码流TS被送到去复用器12。经过去复用后,被送到1/4电路5。鉴于MPEG-2HDTV视频解码器的巨大计算量和计算速度,在1/4电路5中,将HDTV图象分成四个SIDTV子图象。由1/4电路5分割的四个子图象分别送到在四个视频解码单元31-34之前分别连接的四个输入缓冲器21-24。缓冲后,再由四个SDTV视频解码单元31-34进行平行解码。最后,为了显示高清晰度电视画面,将分别经过各个视频解码单元31-34解码的这些低分辩率的子图象数字视频信号送到合成单元6,以合成为一路高清晰度电视信号。系统控制器(一个主控芯片)42控制去复用器12,1/4电路5,四个输入缓冲器21-24,四个视频解码单元31-34,合成单元6。
下面结合图4所示的流程图来描述图3所示的HDTV视频解码器的工作,如下:在第一帧开始解码前,读这四个视频解码单元的帧类型,如果它们不是同一帧,则复位四个输入缓冲器21-24;重新开始解码;执行上述输入缓冲器的控制步骤,如果有一路可能下溢,那么四路均停止解码,重复前一帧,如果有一路可能上溢,那么四路都跳一个B帧。
根据如图4所示的按照本发明第二实施例的MPEG-2视频解码器的输入缓冲器的控制方法的流程图,本实施例的MPEG-2视频解码器的输入缓冲器的控制方法具体包括下列步骤:
步骤21,在第一帧解码前,对四个视频解码单元21-24复位;
步骤22,在每帧解码开始前,系统控制器42判断前一解码帧的帧类型是否为I帧,如果前一帧为I帧,则进入步骤23,如果前一帧不是I帧,则重复执行此步骤;
步骤23,系统控制器42通过各个视频解码单元31-34读取各个输入缓冲器21-24的读写指针,以便判断各个缓冲器的充盈度;
步骤24,判断各个输入缓冲器21-24中的内容是否至少有一个小于一个P帧的大小,如果是,则缓冲器可能下溢,这时系统控制器42控制四个视频解码单元31-34停止一帧解码,并重复显示上一帧的内容,然后回到步骤22;如果不是,则进入步骤25;
步骤25,判断各个输入缓冲器21-24中的内容是否至少一个连续3帧小于1.2个P帧大小,如果是,则系统控制器42控制四个解码单元31-34停止一帧解码,并重复显示上一帧的内容,然后回到步骤22;如果不是,则进入步骤26;
步骤26,判断各个输入缓冲器21-24的剩余空间是否至少有一个小于一个I帧大小,如果是,则系统控制器42控制四个视频解码单元31-34跳过一个B帧,然后回到步骤22;如果不是,则进入步骤27;
步骤27,判断各个输入缓冲器21-24的剩余空间是否至少有一个连续3帧小于一个I帧加一个B帧大小,如果是,则系统控制器42控制四个视频解码单元31-34跳过一个B帧,然后回到步骤22;如果不是,则进入步骤28;
步骤28,系统控制器42控制四个视频解码单元31-34执行随后的解码处理。
本发明的MPEG-2解码器采用了对输入缓冲器进行控制的方法,在I帧解码后,下一帧开始解码前,进行判决;如果输入缓冲器内容小于阈值,可能下溢,则停止一帧解码,重复上一帧,如果输入缓冲器的剩余空间小于阈值,可能上溢,则跳过一个B帧。从而控制输入缓冲器不出现上溢或下溢。本方法实用有效,对主控芯片运算能力要求不高。