多模mpeg系统层解复用方法

文档序号:7928104阅读:303来源:国知局
专利名称:多模mpeg系统层解复用方法
技术领域
本发明涉及数字电视广播、DVD以及多媒体通信技术领域,特别是一种多模mpeg 系统层解复用方法,能够完成多种系统层的解复用,提取时钟信息,并节省指令存储空间。
背景技术
运动图像压縮编码国际标准mpegl和mpeg2在数字电视广播、DVD以及多媒体通 信领域中有着广泛的应用,如图1所示,其系统部分主要目的是将一个或多个节目的音视 频数据打包成基本的音视频ES包,然后加上时钟标签组成PES包,最后再将PES包和系统 时钟以及其他系统信息组成系统码流,以适应于存储和传输。在mpegl标准中,系统码流为 节目流(PS),而在mpeg2标准中,系统码流分为节目流(PS)和传输流(TS)节目流主要应用 发生错误几率较小的环境,并且适合于用软件处理系统信息的应用,例如DVD,而传输流则 被设计用于易出错的环境,如可能丢失数据或者有噪声的存储或传输媒体,例如数字电视 广播等。 在接收端,如图2所示,首先要从系统码流中分离出相应节目的音视频单元,并 提取相应的系统时钟信息(SCR/PCR)以及音视频的解码是中标签和显示时钟标签(DTS/ PTS),后续音视频解码器才能完成系统时钟重建、音视频同步解码及显示等功能。目前的大 多数解复用器都是针对单一的系统码流来设计的,而仅仅将多种系统码流的解复用放在一 起,又会占用大量不必要的资源。

发明内容
( — )要解决的技术问题 为了解决解复用器的应用对象单一的问题,本发明提供一种多模mpeg系统层解 复用方法,以有效的自适应的完成mpegl系统层、mpeg2系统层PS流以及mpeg2系统层TS 流的解复用,并通过共用相同模块,减少指令空间;本发明在解复用时,还能通过帧扫描模 块,只存储非零且与前一值不同的PTS/DTS,节省存储空间。
( 二 )技术方案 为了达到上述目的,本发明采用的技术方案如下
—种多模mpeg系统层解复用方法,该方法包括 a、判断数据流的格式,如果数据流是mpegl/2系统层PS流,则执行步骤b ;如果数 据流是mpeg2系统层TS流,则执行步骤d ; b、判断该mpegl/2系统层PS流是mpegl标准的PS包还是mpeg2标准的PS包,并 对PS流的包头进行解析,然后判断PS流是否有系统首部,如果有系统首部则对该系统首部 进行解析,如果没有系统首部,则将得到的PES数据送入PES解析单元;
c、检测到PES包数据之后,对PES包头进行解析,将得到的音视频ES数据送入存 储和帧扫描模块; d、在帧扫描模块中,如果有视频帧或音频帧,则帧数加1,若此时的音视频PTS/DTS不为零且与前一 PTS/DTS不等,则记录当前的帧数和对应的PTS/DTS,并将音视频ES数 据送入MEMORY,结束; e、对mpeg2系统层TS流的起始码进行同步,对达到同步后的TS包进行解析,分析 TS包的PSI信息中的PAT和PMT表,提取相应节目的音视频TS包负载;
f 、对提取的音视频TS包负载进行PES头扫描,如果有PES头,则调用PES_mpeg2 进行解析,如果没有PES头,则将数据直接送入存储和帧扫描模块。 上述方案中,步骤a中所述判断数据流的格式是通过分析数据流的起始码实现 的。 上述方案中,步骤b中所述判断该mpegl/2系统层PS流是mpegl标准的PS包还 是mpeg2标准的PS包是通过分析数据流在起始码后的4bit数据实现的,具体包括如果 起始码之后的2bit数据为Ob01,则为mpeg2标准的PS包,如果起始码之后的4bit数据为 Ob0010,则为mpegl标准的PS包。 上述方案中,步骤e中所述分析TS包的PSI信息中的PAT和PMT表,提取相应节目 的音视频TS包负载的步骤,具体包括搜索TS流中的PAT表,解析后得到PMT表的PID值; 然后根据该值找到相应的PMT表,解析后得到各节目的音视频PID以及PCR的PID值;选择 某一节目,确定需要的音视频以及PCR的PID值;看是否需要的PCR的PID,如果是,则在其 传送流调整字段中提取PCR值保存;之后,再根据音视频PID值,提取相应的TS包负载。
上述方案中,步骤f所述扫描PES包头的步骤,具体包括对音视频TS包负载进行 扫描,如果有PES包头,则对PES包头进行解析,如果该TS包剩余数据不够PES包头长度, 则将PES包起始码后的数据缓存起来,加载在下一相同PID的TS包负载前,再进行PES包 头解析。 上述方案中,步骤b中所述对PS流的包头进行解析能够得到SCR,步骤e中所述对 TS包进行解析能够得到PCR,该SCR和该PCR具有有相同的结构,能够通过同一 SCR/PCR存 储模块保存数据。 上述方案中,步骤d中所述帧扫描模块,当扫描到视频帧头时,视频帧序号加l,检 测视频PES包头解析时记录的PTS/DTS,若此数据不为零,且与前一 PTS/DTS不同,则存储 此时的视频帧序号和对应的PTS/DTS ;当扫描到音频帧头时,音频帧序号加l,检测音频PES 包头解析时记录的PTS,若此数据不为零,且与前一 PTS不同,则存储此时的音频帧序号和 对应的PTS ;后续的音视频解码能够根据帧序号和PTS/DTS插值出其余的PTS/DTS。
上述方案中,步骤d中所述存入MEMORY的音视频ES数据以及提取的PTS/DTS,用
于供后续的音视频解码和同步。
(三)有益效果 从上述技术方案可以看出,本发明具有以下有益效果 1、通过对码流的分析,能够自适应的完成mpegl系统层,mpeg2系统层PS流以及 TS流的解复用,得到音视频ES数据以及时钟信息; 2、通过复用系统首部解析模块,PES包头解析模块,PCR/SCR存储模块,数据存储 和帧扫描模块,在完成解复用功能的同时,能有效节约指令存储空间; 3、通过帧扫描模块,只存储帧数以及非零且不重复的PTS/DTS,有效的节约了存储 空间。


图1是,eg2协议的系统层PS流和TS流产生框图; 图2是系统层解复用以及解码的一般模式; 图3是本发明提供的多模mpeg系统层解复用的方法流程图; 图4是依照本发明实施例的多模mpeg系统层解复用的方法流程图; 图5是mpeg2系统层TS流PSI表解析原理图及对音视频包选择的示意图; 图6是本发明中提取的音视频帧数与对应时间戳的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照 附图,对本发明进一步详细说明。 如图1所示,为mpeg2标准中的简化的总体框图,mpeg2系统层PS流和TS流都是 由音视频数据经过音视频编码器得到音视频ES包,再通过分组器,得到音视频PES包,然后 再通过不同的复用模式得到的,而mpegl的系统层与mpeg2系统层PS流具有相似的流程。
如图2所示,为mpeg系统层解复用和解码的一般模式,先通过不同模式的解复用, 将系统流分解得到音视频PES包,然后再分解得到音视频ES包,将其送入音视频解码器后 得到最后的音视频数据。 如图3所示,图3是本发明提供的多模mpeg系统层解复用的方法流程图,该方法 具体包括以下步骤 a、判断数据流的格式,如果数据流是mpegl/2系统层PS流,则执行步骤b ;如果数 据流是mpeg2系统层TS流,则执行步骤d ; 在本步骤中判断数据流的格式是通过分析数据流的起始码实现的。 b、判断该mpegl/2系统层PS流是mpegl标准的PS包还是mpeg2标准的PS包,并
对PS流的包头进行解析,然后判断PS流是否有系统首部,如果有系统首部则对该系统首部
进行解析,如果没有系统首部,则将得到的PES数据送入PES解析单元; c、检测到PES包数据之后,对PES包头进行解析,将得到的音视频ES数据送入存
储和帧扫描模块; d、在帧扫描模块中,如果有视频帧或音频帧,则帧数加1,若此时的音视频PTS/ DTS不为零且与前一 PTS/DTS不等,则记录当前的帧数和对应的PTS/DTS,并将音视频ES数 据送入MEMORY,结束; e、对mpeg2系统层TS流的起始码进行同步,对达到同步后的TS包进行解析,分析 TS包的PSI信息中的PAT和PMT表,提取相应节目的音视频TS包负载;
f 、对提取的音视频TS包负载进行PES头扫描,如果有PES头,则调用PES_mpeg2 进行解析,如果没有PES头,则将数据直接送入存储和帧扫描模块。 上述步骤b中所述判断该mpegl/2系统层PS流是mpegl标准的PS包还是mpeg2 标准的PS包是通过分析数据流在起始码后的4bit数据实现的,具体包括如果起始码之后 的2bit数据为ObOl,则为mpeg2标准的PS包,如果起始码之后的4bit数据为ObOOlO,则 为mpegl标准的PS包。
上述步骤e中所述对mpeg2系统层TS流的起始码进行同步,对达到同步后的TS 包进行解析的步骤中,当连续5个包的起始码都为0x47时,认为达到同步,进入TS包解析; 如果同步之后,出现连续三个包的起始码不为0x47,则认为失去同步,跳出TS包解析。
上述步骤e中所述分析TS包的PSI信息中的PAT和PMT表,提取相应节目的音视 频TS包负载的步骤,具体包括搜索TS流中的PAT表,解析后得到PMT表的PID值;然后 根据该值找到相应的PMT表,解析后得到各节目的音视频PID以及PCR的PID值;选择某一 节目,确定需要的音视频以及PCR的PID值;看是否需要的PCR的PID,如果是,则在其传送 流调整字段中提取PCR值保存;之后,再根据音视频PID值,提取相应的TS包负载。提取音 视频TS包负载的步骤之后进一步包括对音视频TS包负载进行扫描,如果有PES包头,则 对PES包头进行解析,如果该TS包剩余数据不够PES包头长度,则将PES包起始码后的数 据缓存起来,加载在下一相同PID的TS包负载前,再进行PES包头解析。
上述步骤b中所述对PS流的包头进行解析能够得到SCR,步骤e中所述对TS包进 行解析能够得到PCR,该SCR和该PCR具有有相同的结构,能够通过同一 SCR/PCR存储模块 保存数据。 上述步骤d中所述帧扫描模块,当扫描到视频帧头时,视频帧序号加l,检测视频
PES包头解析时记录的PTS/DTS,若此数据不为零,且与前一 PTS/DTS不同,则存储此时的视
频帧序号和对应的PTS/DTS ;当扫描到音频帧头时,音频帧序号加l,检测音频PES包头解
析时记录的PTS,若此数据不为零,且与前一 PTS不同,则存储此时的音频帧序号和对应的
PTS ;后续的音视频解码能够根据帧序号和PTS/DTS插值出其余的PTS/DTS。 上述步骤d中所述存入MEMORY的音视频ES数据以及提取的PTS/DTS,用于供后续
的音视频解码和同步。 如图4所示,图4是依照本发明实施例的多模mpeg系统层解复用的方法流程图, 该方法包括以下步骤 步骤1、判断起始码,是mpeg1/2系统层PS流还是mpeg2系统层TS流;如果是 mpegl/2系统层PS流,如果起始码之后的2bit数据为ObOl,则为mpeg2标准的PS包,如果 起始码之后的4bit数据为Ob0010,这是mpegl标准的PS包,然后根据相应标准对PS包头 进行解析; 步骤2、解析PS包之后,如果有系统首部则对其进行解析,如果没有,则对相应的 PES包进行解析,将得到的ES数据送入存储和帧扫描模块; 步骤3、解析PES包之后,在帧扫描模块中,如果有视频帧或音频帧,则帧数加1, 若此时的音视频PTS/DTS不为零且与前一 PTS/DTS不等,则记录当前的帧数和对应的PTS/ DTS,并将音视频ES数据送入MEMORY ; 步骤4、如果是mpeg2系统层TS流,则对其起始码进行同步,当连续5个包的起始 码都为0x47时,认为达到同步,进入TS包解析,如果同步之后,出现连续三个包的起始码不 为0x47,则认为失去同步,跳出TS包解析; 步骤5、对达到同步后的TS包进行解析,分析其PSI信息中的PAT和PMT表,提取 相应节目的音视频TS包负载; 步骤6、对提取的音视频TS包负载进行PES头扫描,如果有PES头,则调用PES_ mpeg2进行解析,如果该TS包剩余数据不够PES包头长度,则将PES包起始码后的数据缓存起来,加载在下一相同类型的TS包负载前,再行PES包头解析,之后数据送入存储和帧扫描 模块 步骤7、完成了对PES包头解析后的数据,在帧扫描模块中提取相应的帧数和PTS/ DTS信息,并将音视频ES数据存入MEMORY。 如图5所示,图5是mpeg2系统层TS流PSI表解析原理图及对音视频包选择的示 意图。mpeg2系统层TS流PSI表解析及音视频包的选择,首先搜索TS流中的PAT表,解析 后得到PMT表的PID值;然后根据该值找到相应的PMT表,解析后得到各节目的音视频PID 以及PCR的PID值;选择某一节目,确定需要的音视频以及PCR的PID值;看是否需要的PCR 的PID,如果是,则在其传送流调整字段中提取PCR值保存;之后,再根据音视频PID值,提 取相应的TS包负载,送入图4的步骤6。 图6是本发明中提取的音视频帧数与对应时间戳的结构示意图。在存储和帧扫描 模块中,提取的视频帧数和对应PTS/DTS,音频帧数和对应的PTS在MEMORY中的存储结构, 可供后续的音视频解码进行同步。 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详 细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡 在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保 护范围之内。
8
权利要求
一种多模mpeg系统层解复用方法,其特征在于,该方法包括a、判断数据流的格式,如果数据流是mpeg1/2系统层PS流,则执行步骤b;如果数据流是mpeg2系统层TS流,则执行步骤d;b、判断该mpeg1/2系统层PS流是mpeg1标准的PS包还是mpeg2标准的PS包,并对PS流的包头进行解析,然后判断PS流是否有系统首部,如果有系统首部则对该系统首部进行解析,如果没有系统首部,则将得到的PES数据送入PES解析单元;c、检测到PES包数据之后,对PES包头进行解析,将得到的音视频ES数据送入存储和帧扫描模块;d、在帧扫描模块中,如果有视频帧或音频帧,则帧数加1,若此时的音视频PTS/DTS不为零且与前一PTS/DTS不等,则记录当前的帧数和对应的PTS/DTS,并将音视频ES数据送入MEMORY,结束;e、对mpeg2系统层TS流的起始码进行同步,对达到同步后的TS包进行解析,分析TS包的PSI信息中的PAT和PMT表,提取相应节目的音视频TS包负载;f、对提取的音视频TS包负载进行PES头扫描,如果有PES头,则调用PES_mpeg2进行解析,如果没有PES头,则将数据直接送入存储和帧扫描模块。
2. 根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤a中所述判 断数据流的格式是通过分析数据流的起始码实现的。
3. 根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤b中所述判 断该mpegl/2系统层PS流是mpegl标准的PS包还是mpeg2标准的PS包是通过分析数据 流在起始码后的4bit数据实现的。
4. 根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤e中所述分 析TS包的PSI信息中的PAT和PMT表,提取相应节目的音视频TS包负载的步骤,具体包 括搜索TS流中的PAT表,解析后得到PMT表的PID值;然后根据该值找到相应的PMT表, 解析后得到各节目的音视频PID以及PCR的PID值;选择某一节目,确定需要的音视频以及 PCR的PID值;看是否需要的PCR的PID,如果是,则在其传送流调整字段中提取PCR值保 存;之后,再根据音视频PID值,提取相应的TS包负载。
5. 根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤f中所述扫 描PES包头的步骤,具体包括对音视频TS包负载进行扫描,如果有PES包头,则对PES包头进行解析,如果该TS包 剩余数据不够PES包头长度,则将PES包起始码后的数据缓存起来,加载在下一相同PID的 TS包负载前,再进行PES包头解析。
6. 根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤b中所述对 PS流的包头进行解析能够得到SCR,步骤e中所述对TS包进行解析能够得到PCR,该SCR和 该PCR具有有相同的结构,能够通过同一 SCR/PCR存储模块保存数据。
7. 根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤d中所述 帧扫描模块,当扫描到视频帧头时,视频帧序号加l,检测视频PES包头解析时记录的PTS/ DTS,若此数据不为零,且与前一 PTS/DTS不同,则存储此时的视频帧序号和对应的PTS/ DTS ;当扫描到音频帧头时,音频帧序号加l,检测音频PES包头解析时记录的PTS,若此数据不为零,且与前一 PTS不同,则存储此时的音频帧序号和对应的PTS ;后续的音视频解码能 够根据帧序号和PTS/DTS插值出其余的PTS/DTS。
8.根据权利要求1所述的多模mpeg系统层解复用方法,其特征在于,步骤d中所述存 入MEMORY的音视频ES数据以及提取的PTS/DTS,用于供后续的音视频解码和同步。
全文摘要
本发明公开了一种多模mpeg系统层解复用方法,包括根据mpeg1系统层和mpeg2系统层PS流的相似性,以及他们和mpeg2系统层TS流具有相同的系统首部、PES包以及ES数据单元,将三种解复用通过共用相似的模块,有机的融合在一起;解复用后,能够得到基本的音视频ES数据单元;能够有效提取节目的SCR/PCR时钟信息;具有帧扫描模块,只记录音视频帧序号和非零且与前一时间戳不等的PTS/DTS,减少存储空间。且该多模解复用方法充分利用了这几种mpeg系统层的相似性进行模块复用,节省指令存储空间。
文档编号H04N7/26GK101742302SQ20081022748
公开日2010年6月16日 申请日期2008年11月26日 优先权日2008年11月26日
发明者梁利平, 魏旭 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1