一种mpeg-2编码复用的方法

文档序号:7721275阅读:162来源:国知局
专利名称:一种mpeg-2编码复用的方法
技术领域
本发明涉及数字电视技术领域,尤其涉及一种MPEG-2编码复用的方法。
背景技术
伴随科学技术的发展,“数字化”席卷全球。由于数字电视具有不可比拟的优越性, 广播电视从模拟向数字全面转变已经成为不可抗拒的发展潮流。由于人们对节目、业务和 各种增值服务的需求始终在增长,因此如何利用技术更好地提高图像质量,并保证节目在 网络上可靠传输成为具有价值和吸引力的研究课题。在数字电视系统中,MPEG-2编码复用器是系统传输的核心环节,所有的节目、数据 以及各种增值服务都是通过复用打包成传输流(Transport Stream, TS)传输出去的。目 前,只有国外少数公司掌握复用器的核心算法技术,能够保证高质量图像传输,但进口设备 价格极其昂贵,而且算法都较为复杂,无法保证软硬件的简单实现。由于目前正处广播电视 全面向数字化过渡期间,市场潜力巨大,因此对复用器以及码率控制算法的研究开发非常 重要。目前的技术方案是以传输流的节目时钟参考(Program Clock Reference,PCR)数 据包为基准来进行计算。首先设定一个恒定的TS流码率,再根据码率值,以及相邻两个PCR 数据包的差值,估算出这两个PCR数据包之间应该包含的TS数据包个数,然后将估算出的 TS数据包个数跟实际的TS数据包个数相减,得到的差值即为要添加的空包数目。这个技术方案虽然总体上能很好地控制码率,但是由于没有考虑到帧级的控制策 略,导致显示时间标签(Play Time Stamp,PTS)和解码时间标签(DecodeTime Stamp,DTS) 的值有时会小于PCR数据包的值,使得图像产生马赛克和抖动等现象。

发明内容
本发明的目的在于提出一种MPEG-2编码复用的方法,能够快速高效地生成恒定 码率的传输流,并且提高图像的主观质量。为达此目的,本发明采用以下技术方案一种MPEG-2编码复用的方法,包括以下步骤A、从输入的基本流文件的基本流数据中检测出帧头;B、插入节目关联表数据包和节目映射表数据包;C、插入含有打包的基本流数据包头和基本流数据的传输流数据包,其中所述打包 的基本流数据包头包括显示时间标签和解码时间标签;D、插入节目时钟参考数据包;E、判断当前帧的基本流数据是否处理完毕,如果否,则继续将剩余的基本流数据 打包成传输流数据包,直到当前帧的基本流数据处理完毕,形成传输流数据帧,转至步骤F, 如果是,则形成传输流数据帧,转至步骤F ;F、在每个图组的传输流数据帧中插入空包,使得图组的大小固定为一个预设值;
G、判断基本流文件是否处理完毕,如果是,则输出打包后的传输流文件,完成复用,如果否,则返回到步骤A,继续检测帧头。步骤C中,显示时间标签和解码时间标签的生成进一步包括以下步骤计算一帧图像的帧历时,计算公式为frame_time = 90000/frame_rate,其中 frame_time是帧历时,90000赫兹是27兆赫兹系统时钟的1/300,frame_rate是帧率;从快进快退模块传来的参数得到初始参考值,包括显示时间标签初始参考值 PTS(I)和解码时间标签初始参考值DTS(I);此后传输流数据帧中第i帧图像的显示时间标签PTS(i)和解码时间标签DTS(i) 通过以下计算公式获得
<formula>formula see original document page 5</formula>其中 N 是第 i 帧所在图组的图组 头之前帧的总数,temp_ref是第i帧图像头中IObit字段的十进制值,表示在这个图组中 第i帧所在的位置。显示时间标签和解码时间标签每隔700毫秒至少出现1次。节目时钟参考数据包包括33位的节目时钟参考基准pcr_base和9位的节目时钟 参考扩展pcr_ext。节目时钟参考数据包在传输流数据帧中每隔40毫秒至少出现1次。节目时钟参考基准pcr_base以27兆赫兹的1/300为基准,即90千赫兹,节目时 钟参考扩展pcr_ext以27兆赫兹系统时钟为基准,节目时钟参考的值根据当前所在传输流 数据包的包号和传输码率采用以下计算公式来确定<formula>formula see original document page 5</formula>其中tS_paCket_num是当前所在传输流数据包的包号,ts_rate是传输流传输码率。传输流数据包包括4个字节的包头和184个字节的基本流数据。步骤F进一步包括以下步骤预先设定图组大小G0P_size ;根据基本流原始的图组大小G0P_siZe_org和预先设定图组大小G0P_size的 差值,算出当前图组平均每个传输流数据帧应该插入的空包数量average_um,average, num = (G0P_size-G0P_size_org)/188,其中188是一个传输流数据包中的字节个数,并对 average_num取整,得到每个传输流数据帧插入的空包数量;在每个传输流数据帧插入所述空包数量的空包;在图组的最后一个传输流数据帧,根据预先设定图组大小G0P_size和图组当前 已经打包了的传输流数据包的个数totalnum之间的差值,得出最后一个传输流数据帧末 尾应该插入的空包数量stuff_num,stuff_num = G0P_size/188-total_num,从而使得图组 的大小固定。采用了本发明的技术方案,通过对TS流复用过程中的码率、PCR、PTS和DTS值的 调整,能够快速高效地生成恒定码率的TS流,复用的效率大幅提高,码率波动较小,解决了马赛克和图像抖动的问题,图像主观质量较高。


图1是本发明具体实施方式
中MPEG-2编码复用的流程图。
具体实施例方式下面结合附图并通过具体实施方式
来进一步说明本发明的技术方案。图1是本发明具体实施方式
中MPEG-2编码复用的流程图。如图1所示,该MPEG-2 编码复用的流程包括以下步骤步骤101、输入基本流文件,并对输入的基本流数据进行检测,判断是否帧头,如果 是帧头,则转至步骤102,否则循环检测基本流数据,直到检测到第一个帧头。步骤102、在每帧的开始插入一个节目关联表(Program AssociationTable, PAT) 数据包。每个传输流必须有一完整有效的PAT,PAT给出了节目号(program number)和带 有此节目数据的传输流分组PID (PMT_PID)之间的对应关系。步骤103、在PAT数据包后插入一个节目映射表(Program Map Table, PMT)数据 包。节目映射表(PMT)提供一个节目号(program number)和组成此节目的基本流之间的 映射。步骤104、在PMT数据包后插入一个含有打包的基本流(PacketElementary Stream, PES)数据包头和部分基本流数据的传输流数据包。PES包头里的两个关键数据是33位的PTS和33位的DTS,在每个PES包头中都加 入这两个数据。其中,每个传输流的PTS和DTS每隔700毫秒至少要出现一次。PTS和DTS的计算,是保证码率恒定的关键,可采取如下方法计算一帧图像的帧历时,计算公式为frame_time = 90000/frame_rate,其中 frame_time是帧历时,90000赫兹是27兆赫兹系统时钟的1/300,frame_rate是帧率;从快进快退模块传来的参数得到初始参考值,包括显示时间标签初始参考值 PTS(I)和解码时间标签初始参考值DTS(I);此后传输流数据帧中第i帧图像的显示时间标签PTS (i)和解码时间标签DTS (i) 通过以下计算公式获得DTS (i) = DTS (1) +frame_time* (i_l),PTS (i) = PTS(l)+frame_time*(N+temp_ref+l),其中 N 是第 i 帧所在图组的图组 头之前帧的总数,temp_ref是第i帧图像头中IObit字段的十进制值,表示在这个图组中 第i帧所在的位置。步骤105、插入节目时钟参考数据包。TS流中的PCR数据包至少每隔40毫秒出现一次,解码器通过TS流中节目的PCR 可以使解码器恢复系统时钟,PTS和DTS又参考PCR,这样就能够达到音频数据和视频端到 端恒定延时,从而保证了音视频的同步以及码率的恒定。DTS是视频数据从主缓冲区中输出 的时刻,每一帧数据的输入时刻都要早于这帧数据的DTS。节目时钟参考数据包包括33位的节目时钟参考基准pcr_base和9位的节目时钟参考扩展pcr_ext。节目时钟参考基准pcr_base以27兆赫兹的1/300为基准,即90千赫 兹,节目时钟参考扩展pcr_ext以27兆赫兹系统时钟为基准,节目时钟参考的值根据当前 所在传输流数据包的包号和传输码率采用以下计算公式来确定per—base = (90000*8* ((188*ts_packet_num+12) /ts_rate)),pcr_ext = (27000000*(((188*ts_packet_num+12)*8)/ts_rate))% 300per = 300氺pcr_base+pcr_ext,其中tS_paCket_num是当前所在传输流数据包的包号,ts_rate是传输流传输码率。步骤106、判断当前帧的基本流数据是否处理完毕,如果否,则继续将剩余的基本 流数据打包成传输流数据包,该传输流数据包由4个字节的包头和184字节的基本流数据 组成,直到当前帧的基本流数据处理完毕,形成传输流数据帧,转至步骤107,如果是,则形 成传输流数据帧,转至步骤107。步骤107、因为传输流的帧率是恒定的,再设定一个固定的图组(Group OfPictures, GOP)大小G0P_size,每个传输流数据帧都插入一定数目的空包,这样就达到 码率的恒定。首先预先设定图组大小G0P_size。根据基本流原始的图组大小G0P_siZe_org和预先设定图组大小G0P_size的差 值,算出当前图组平均每个传输流数据帧应该插入的空包数量averagmum。其中average_num = (G0P_siζe-G0P_siζe_org) /188,188 是一个传输流数据包中 的字节个数,再对averagejum取整,得到每个传输流数据帧插入的空包数量。在每个传输流数据帧插入需要的空包数量的空包。在图组的最后一个传输流数据帧,根据预先设定图组大小G0P_size和图组当前 已经打包了的传输流数据包的个数totalnum之间的差值,得出最后一个传输流数据帧末 尾应该插入的空包数量stuff_num。其中stuff_num = G0P_size/188_total_num,从而使得图组的大小固定。步骤108、判断输入的整个基本流文件是否处理完毕,如果已经处理完毕,则直接 输出打包后的传输流文件,完成复用过程,如果否,则返回到步骤101,继续检测帧头,如此 循环往复,直到将整个基本流文件处理完毕,这样就完成了基本流到传输流的复用过程。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖 在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
一种MPEG-2编码复用的方法,其特征在于,包括以下步骤A、从输入的基本流文件的基本流数据中检测出帧头;B、插入节目关联表数据包和节目映射表数据包;C、插入含有打包的基本流数据包头和基本流数据的传输流数据包,其中所述打包的基本流数据包头包括显示时间标签和解码时间标签;D、插入节目时钟参考数据包;E、判断当前帧的基本流数据是否处理完毕,如果否,则继续将剩余的基本流数据打包成传输流数据包,直到当前帧的基本流数据处理完毕,形成传输流数据帧,转至步骤F,如果是,则形成传输流数据帧,转至步骤F;F、在每个图组的传输流数据帧中插入空包,使得图组的大小固定为一个预设值;G、判断基本流文件是否处理完毕,如果是,则输出打包后的传输流文件,完成复用,如果否,则返回到步骤A,继续检测帧头。
2.根据权利要求1所述的一种MPEG-2编码复用的方法,其特征在于,步骤C中,显示时 间标签和解码时间标签的生成进一步包括以下步骤计算一帧图像的帧历时,计算公式为frame_time = 90000/frame_rate,其中frame_ time是帧历时,90000赫兹是27兆赫兹系统时钟的1/300,frame_rate是帧率;从快进快退模块传来的参数得到初始参考值,包括显示时间标签初始参考值PTS(I) 和解码时间标签初始参考值DTS(I);此后传输流数据帧中第i帧图像的显示时间标签PTS (i)和解码时间标签DTS (i)通过 以下计算公式获得DTS⑴=DTS(I)+frame_time*(i_l),PTS (i) = PTS(l)+frame_time*(N+temp_ref+l),其中N是第i帧所在图组的图组头之 前帧的总数,temp_ref是第i帧图像头中IObit字段的十进制值,表示在这个图组中第i帧 所在的位置。
3.根据权利要求2所述的一种MPEG-2编码复用的方法,其特征在于,显示时间标签和 解码时间标签每隔700毫秒至少出现1次。
4.根据权利要求1所述的一种MPEG-2编码复用的方法,其特征在于,节目时钟参考数 据包包括33位的节目时钟参考基准pcr_base和9位的节目时钟参考扩展pcr_eXt。
5.根据权利要求4所述的一种MPEG-2编码复用的方法,其特征在于,节目时钟参考数 据包在传输流数据帧中每隔40毫秒至少出现1次。
6.根据权利要求4所述的一种MPEG-2编码复用的方法,其特征在于,节目时钟参考基 准pcr_base以27兆赫兹的1/300为基准,即90千赫兹,节目时钟参考扩展pcr_eXt以27 兆赫兹系统时钟为基准,节目时钟参考的值根据当前所在传输流数据包的包号和传输码率 采用以下计算公式来确定per—base = (90000*8* ((188*ts_packet_num+12)/ts_rate)), pcr_ext = (27000000*(((188*ts_packet_num+12)*8)/ts_rate))% 300 per = 300氺pcr_base+pcr_ext,其中tS_paCket_nUm是当前所在传输流数据包的包号,ts_rate是传输流传输码率。
7.根据权利要求4所述的一种MPEG-2编码复用的方法,其特征在于,传输流数据包包括4个字节的包头和184个字节的基本流数据。
8.根据权利要求1所述的一种MPEG-2编码复用的方法,其特征在于,步骤F进一步包 括以下步骤预先设定图组大小GOP_size ;根据基本流原始的图组大小GOP_size_0rg和预先设定图组大小GOP_size的差值, 算出当前图组平均每个传输流数据帧应该插入的空包数量average^um,average_num =(G0P_Size-G0P_Size_org)/188,其中188是一个传输流数据包中的字节个数,并对 average_num取整,得到每个传输流数据帧插入的空包数量; 在每个传输流数据帧插入所述空包数量的空包;在图组的最后一个传输流数据帧,根据预先设定图组大小GOP_size和图组当前已经 打包了的传输流数据包的个数totalnum之间的差值,得出最后一个传输流数据帧末尾应 该插入的空包数量stuff_num,stuff_num = G0P_size/188-total_num,从而使得图组的大小固定。
全文摘要
本发明公开了一种MPEG-2编码复用的方法,从输入的ES流中检测出帧头,插入PAT包和PMT包,插入PES包头和ES流数据的TS数据包,再插入PCR包,将剩余的ES流数据打包成TS数据包,直到当前帧的ES流数据处理完毕,形成传输流数据帧,在每个图组的传输流数据帧中插入空包,使得图组的大小固定为一个预设值,循环检测帧头继续进行处理,直到ES文件处理完毕,输出打包后的TS流文件,完成复用。采用了本发明的技术方案,能够快速高效地生成恒定码率的TS流,复用的效率大幅提高,码率波动较小,解决了马赛克和图像抖动的问题,图像主观质量较高。
文档编号H04N7/26GK101820540SQ20091024394
公开日2010年9月1日 申请日期2009年12月25日 优先权日2009年12月25日
发明者张桂丽, 辛宇 申请人:北京惠信博思技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1