实现高清视频并行编码的方法及系统的制作方法

文档序号:7685499阅读:362来源:国知局
专利名称:实现高清视频并行编码的方法及系统的制作方法
技术领域
本发明属于数字视频编解码技术领域,涉及一种视频编码的实现方法,尤其涉及一种 H. 264高清视频编码实时实现方法及系统。
背景技术
随着数字化进程的加速普及,人们对视频的需求提出了更高的要求,电视、内容、数字 摄像机等提供的各种形式视频正在向高清转变。数据量巨大的高清视频内容的存储、传输离 不开视频压縮和解压縮技术。新一代视频压缩标准H.264由于较之传统标准具有更优的性能, 因而在高清视频领域得到了越来越广泛的应用。但是, 一方面由于需要进行压縮的高清视频 数据量巨大,另一方面,为达到高效的性能,比264采用了复杂的压缩算法,普通处理器难以 实现对高清视频的实时编码压缩。目前解决该问题的主要途径是采用专用的硬件编码芯片或 采用专用数字信号处理器(DSP)。采用硬件编码芯片的方案,如富士通微电子、Ambarella公 司等采用了专用的高清压縮芯片。采用专用的硬件编码芯片方案目前己基本成熟,但其由于 编码算法固化,可配置性和扩展性差,无法实现软件的灵活应用和有效升级。相反,采用数 字信号处理器(DSP)的方案由于采用的是软件编码算法,具有很好的灵活性和可扩展性,但 其不足在于,由于单个DSP处理能力有限,难以实现对高清视频的实时编码压縮。目前,行 业内普遍的解决方案是通过采用多个DSP并行编码的方式来实现对高清视频的实时编码压縮。
由于H.264编码算法极为复杂,宏块编码预测不仅需要参考当前帧内宏,还需要参考帧 间宏块,数据间具有很强的相关性,导致并行编码算法的设计难度非常大。基于多DSP核编 码的并行编码算法设计通常做法(如德州仪器公司提供的多DSP核并行编码算法)如图1所 示,所示将对整帧图像编码划分为预测(含帧内预测、帧间预测)、变换、量化、熵编码、反 量化、反变换、图像重构等模块,并将这些模块分配到不同的DSP核,通过串行流水的方式, 使各DSP并行执行编码的各不同阶段的计算。这种方法将编码预测置于单独的DSP核,避免 了编码预测参考数据在多个DSP间的传输拷贝,有效地降低了数据的相关性,可以很好的实 现模块的并行运算。但是,其存在的问题是,单个模块的执行耗时很容易成为整个并行算法 的性能瓶颈。例如,负责预测计算的模块由于耗时过大,将往往导致其后续变换、量化、熵 编码、反量化、反变换、重构等模块的空闲等待,因而降低了整个系统的性能。
因此,如何设计高效的并行编码算法,成为本领域技术人员亟待解决的问题。发明内容本发明所要解决的技术问题是提供一种高效的H.264并行编码实现方法,可以有效均 衡的将编码任务分配至多个处理器并行编码压縮,从而实现对1080P的实时编码。 为解决上述技术问题,本发明采用如下技术方案-一种实现高清视频并行编码的方法,包括如下步骤 步骤A、将当前图像分割为若干子图像;步骤B、提供若干处理器,各处理器独立编码压縮步骤A中被分割的子图像,生成子码流;步骤C、合并步骤B中生成的子码流,生成输出当前图像编码码流。作为本发明的一种优选方案,所述步骤A中分割子图像的方法为:将图像分割为若干子图像,根据目标处理器处理能力确定子图像的大小。作为本发明的一种优选方案,从横向上将图像分割为若干子图像。作为本发明的一种优选方案,所述步骤B中的子图像分别由相应的目标处理器中设置的图像编码模块编码压縮。作为本发明的一种优选方案,所述目标处理器包括至少一主处理器及至少一从处理器。作为本发明的一种优选方案,所述步骤B中独立编码压縮各子图像,对子图像内当前宏 块编码的具体方法如下判断子图像为帧内编码还是帧间编码, 若子图像为帧内编码,则进行如下步骤Bll)判断当前宏块是否为所在子图像第一行宏块,若是,设置其帧内预测可用模式为DC 直流预测,转步骤B14),否则转步骤B12);B12)判断当前宏块是否为所在子图像第一列宏块,若是,设置其帧内预测可用模式为DC 直流预测、以及垂直预测,转步骤B14),否则转步骤B13);B13)设置其帧内预测可用模式为DC直流预测、水平预测、以及垂直预测;B14)帧内宏块预测编码,分别采用各种帧内预测可用模式对宏块进行预测,并选择预测 误差最小的预测模式完成对当前宏块的编码;若子图像为帧间编码B21)判断当前宏块是否为所在子图像第一行宏块,若是,设置运动矢量垂直搜索范围最 大值为0像素,转步骤B24),否则转步骤B22);B22)判断当前宏块是否为所在子图像最后一行宏块,若是,设置运动矢量垂直搜索范围 最大值为O像素,转步骤B24),否则转步骤B23);B23)设置运动矢量垂直搜索范围最大值为N像素,其中,N为大于等于零的整数;B24)设置运动矢量水平搜索范围最大值为N像素,其中,N为大于等于零的整数;B25)帧间宏块预测编码。在运动矢量垂直搜索范围内计算最佳运动矢量,根据最佳运动 矢量完成对当前宏块的编码。作为本发明的一种优选方案,所述步骤C中合并子码流的具体方法为分别在各个子码 流前添加两字节大小的首宏块地址和两字节大小的子图像编码类型标志,并依次连接生成当 前图像编码最后应该输出的码流。一种实现高清视频并行编码的系统,该系统包括图像分割模块、子码流合并模块、存储 模块、视频模数转换模块、若干图像编码模块;所述视频模数转换模块至少与一图像编码模 块连接;所述各图像编码模块与图像分割模块、及存储模块连接;所述图像分割模块将当前 图像分割为若干子图像;图像编码模块独立编码压缩被分割的子图像,生成子码流;而后子 码流合并模块合并上述各个子码流,生成输出当前图像编码码流。作为本发明的一种优选方案,所述图像编码模块包括至少一主编码模块及至少一从编码 模块;所述主编码模块通过主DSP实现,从编码模块通过从DSP实现;所述图像分割模块、 子码流合并模块通过所述主DSP实现;所述视频模数转换模块与主DSP连接。作为本发明的一种优选方案,所述存储模块包括若干存储单元,每个图像编码模块至少 连接一存储单元。作为本发明的一种优选方案,所述图像分割模块分割子图像的方法为将图像分割为若干子图像,根据目标处理器处理能力确定子图像的大小。作为本发明的一种优选方案,从横向上将图像分割为若干子图像。 作为本发明的一种优选方案,所述子图像分别由相应的目标处理器中设置的图像编码模块编码压缩。作为本发明的一种优选方案,所述各图像编码模块独立编码压缩各子图像,对子图像内当前宏块编码的具体方法如下判断子图像的编码类型, 若子图像为帧内编码,则进行如下步骤Bll)判断当前宏块是否为所在子图像第一行宏块,若是,设置其帧内预测可用模式为DC 直流预测,转步骤B14),否则转步骤B12);B12)判断当前宏块是否为所在子图像第一列宏块,若是,设置其帧内预测可用模式为DC 直流预测、以及垂直预测,转步骤B14),否则转步骤B13);B13)设置其帧内预测可用模式为DC直流预测、水平预测、以及垂直预测;B14)帧内宏块预测编码,分别采用各种帧内预测可用模式对宏块进行预测,并选择预测 误差最小的预测模式完成对当前宏块的编码; 若子图像为帧间编码B21)判断当前宏块是否为所在子图像第一行宏块,若是,设置运动矢量垂直搜索范围最大值为0像素,转步骤B24),否则转步骤B22);B22)判断当前宏块是否为所在子图像最后一行宏块,若是,设置运动矢量垂直搜索范围最大值为0像素,转步骤B24),否则转步骤B23);B23)设置运动矢量垂直搜索范围最大值为N像素,其中,N为大于等于零的整数; B24)设置运动矢量水平搜索范围最大值为N像素,其中,N为大于等于零的整数; B25)帧间宏块预测编码,在运动矢量垂直搜索范围内计算最佳运动矢量,根据最佳运动矢量完成对当前宏块的编码。作为本发明的一种优选方案,所述子码流合并模块合并子码流的具体方法为分别在各个子码流前添加两字节大小的首宏块地址和两字节大小的子图像编码类型标志,并依次连接生成当前图像编码最后应该输出的码流。本发明的有益效果在于本发明将编码图像划分为子图像并行编码的方法避免了目前基于模块流水的并行方法由于某个模块负担过重而出现流水瓶颈的问题,可以根据目标处理器 处理能力灵活分配大小合适的子图像,保持多个处理器的高度并行,从而提升了整个系统的 性能。


图1为现有技术的编码器并行编码模块图。图2为实施例中实现高清视频并行编码的系统的结构框图。 图3为基于子图像划分的图像并行编码流程图。 图4为基于子图像划分的图像并行编码数据流图。 图5为子图像划分示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。本实施例阐述本发明提出的H. 264并行编码方法在四个DSP处理器上实时编码1080P高 清视频的具体实现。请参阅图2,本发明揭示了一种实现高清视频并行编码的系统,该系统包括图像分割模块 3、子码流合并模块4、若干存储模块IO、 210、 220、 230、视频模数转换模块5、若干图像编 码模块ll、 211、 221、 231。图像编码模块包括一主编码模块11及3个从编码模块211、 221、 231,所述主编码模块11通过主DSP芯片1实现,3个从编码模块211、 221、 231分别通过从 DSP芯片21、 22、 23实现;所述图像分割模块3、子码流合并模块4通过所述主DSP芯片1 实现,所述视频模数转换模块5与主DSP芯片l连接。主DSP芯片l连接一主存储器10, 3 个从DSP芯片21、 22、 23分别连接从存储器210、 220、 230。所述图像分割模块3将当前图像分割为若干子图像;各个图像编码模块ll、 211、 221、 231独立编码压縮被分割的子图像,生成子码流;而后子码流合并模块4合并上述各个子码流, 生成输出当前图像编码码流。本实施例中,上述四颗DSP芯片执行视频采集程序和编码压縮算法软件。四颗DSP芯片 均采用德州仪器公司(TI)的TMS320DM642芯片。DM 642是TI公司推出的一款专门针对多媒 体处理领域应用的DSP。其具有丰富的外围设备和接口。为了满足视频和图像处理的需要,该 DSP单颗主频高达720MHz,并采用了 VelociTI体系结构和高级超长指令字结构。以单颗DSP 能够实时编码704X576大小Dl图像的能力计算,四颗DSP基本能够达到实时编码1080P高清 视频图像的要求。所述存储器为SDRAM存储器,用于存储数据和程序。四片SDRAM芯片均采 用MICRON公司的MT48LC4M32B2TG-6存储器。视频数转换模块采用ADI公司的AD9880KSTZ-150 芯片。上述硬件配置为本实施例的优选实施方案,本领域一般技术人员可以将某个或者某些器 件替换为具有等同功能或等同性能的其他同类器件。硬件布线设计上,主DSP芯片l通过EMIFA接口连接主存储器IO,从DSP芯片21、 22、 23通过HPI接口连接主存储器10,另外从DSP芯片21、 22、 23分别通过EMIFA接口连接从 存储器210、 220、 230。高清视频源1080P图像通过高清摄像机输入,由视频采集程序完成对当前图像的采集, 并将其保存于主存储器10中,经编码压縮算法软件压縮之后通过主DSP芯片1的PCI接口输 出。请参阅图3、图4,为实现视频图像的在四个DSP芯片上的并行编码压缩,本发明提供了 利用上述系统实现高清视频并行编码的方法,包括如下步骤步骤A、图像分割模块将当前图像分割为若干子图像,根据目标处理器处理能力确定 子图像的大小。采集的当前图像位于主存储器10。参照图5,其具体方法是,从横向上将当 前图像平均分割为四个子图像,分别标记为子图像O、子图像l、子图像2、子图像3,并记 对应图像数据在内存中的首地址为Addr0、 Addrl、 Addr2、 Addr3。分别将四个子图像的首地 址AddrO、 Addrl、 Addr2、 Addr3送主DSP 1、从DSP 21、从DSP 22、从DSP 23。步骤B、提供若干处理器,各处理器独立编码压縮步骤A中被分割的子图像,生成子码流。分别启动主DSP 1、从DSP 21、从DSP 22、从DSP 23上的图像编码模块11、 211、 221、 231,完成对所在DSP的子图像编码压縮,生成对应子码流记BSO、 BS1、 BS2、 BS3,并将子码 流回送主存储器IO。其中,四个DSP上的子图像编码程序相同,其对子图像内当前宏块编码 的具体方法如下判断子图像为帧内编码还是帧间编码,若子图像为帧内编码,则进行如下步骤Bll)判断当前宏块是否为所在子图像第一行宏块,若是,设置其帧内预测可用模式为DC 直流预测,转步骤B14),否则转步骤B12);B12)判断当前宏块是否为所在子图像第一列宏块,若是,设置其帧内预测可用模式为DC 直流预测、以及垂直预测,转步骤B14),否则转步骤B13);B13)设置其帧内预测可用模式为DC直流预测、水平预测、以及垂直预测;B14)帧内宏块预测编码,分别采用各种帧内预测可用模式对宏块进行预测,并选择预测 误差最小的预测模式完成对当前宏块的编码;若子图像为帧间编码B21)判断当前宏块是否为所在子图像第一行宏块,若是,设置运动矢量垂直搜索范围最大值为0像素,转步骤B24),否则转步骤B22);B22)判断当前宏块是否为所在子图像最后一行宏块,若是,设置运动矢量垂直搜索范围最大值为0像素,转步骤B24),否则转步骤B23);B23)设置运动矢量垂直搜索范围最大值为N像素,其中,N为大于等于零的整数; B24)设置运动矢量水平搜索范围最大值为N像素,其中,N为大于等于零的整数; B25)帧间宏块预测编码。在运动矢量垂直搜索范围内计算最佳运动矢量,根据最佳运动矢量完成对当前宏块的编码。步骤C、合并步骤B中生成的子码流,生成输出当前图像编码码流,具体方法为分 别在子码流BS0、 BS1、 BS2、 BS3前添加两字节大小的首宏块地址和两字节大小的子图像编码 类型标志,并依次连接生成当前图像编码最后应该输出的码流。以本实施例1080P图像(1920 X1080像素大小),当前图像所有子图像按帧内模式编码为例,基于对当前图像的平均分割, BSO、 BS1、 BS2、 BS3对应的首宏块地址分别为0、 2025、 4050、 6075,对应的子图像编码类 型标志均为2。因此,合并后的码流十六进制表示为00020000 + BSO + 000207E9 + BS1 + 00020FD2 + BS2 + 000217BB + BS3。上述三个步骤对应的程序,子图像分割程序存储于主存储器10,运行于主DSP芯片1; 四子图像编码压縮程序,分别储于主存储器10、从存储器210、 220、 230,运行于主DSP芯 片l、从DSP芯片21、 22、 23;子码流合并程序存储于主存储器10,运行于主DSP芯片1。值得注意的是,在本实施例中,为均衡各DSP核的负载,特别是负担了视频采集和子图 像划分任务的主DSP芯片1,可以进一步将当前编码图像划分为大小不等的四个子图像,而不 是平均分割。基于前面所述方法,本领域一般技术人员很容易实现将当前编码图像划分为大 小不等的四个子图像的并行编码。以上实施例仅用以说明而非限制本发明的技术方案。如主编码模块及从编码模块可以为 一个或多个;存储模块也可以为一个或者个数大于DSP的个数, 一个DSP可以与若干个存储 模块连接;另外,图像分割模块、子码流合并模块可以为多个,分别设置在多个处理器(DSP) 中。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当 中。
权利要求
1. 一种实现高清视频并行编码的方法,其特征在于,包括如下步骤步骤A、将当前图像分割为若干子图像;步骤B、提供若干处理器,各处理器独立编码压缩步骤A中被分割的子图像,生成子码流;步骤C、合并步骤B中生成的子码流,生成输出当前图像编码码流。
2、 根据权利要求1所述实现高清视频并行编码的方法,其特征在于:所述步骤A中分割子 图像的方法为将图像分割为若干子图像,根据目标处理器处理能力确定子图像的大小。
3、 根据权利要求2所述实现高清视频并行编码的方法,其特征在于从横向上将图像分割 为若干子图像。
4、 根据权利要求2所述实现高清视频并行编码的方法,其特征在于所述步骤B中的子图 像分别由相应的目标处理器中设置的图像编码模块编码压縮。
5、 根据权利要求4所述实现高清视频并行编码的方法,其特征在于所述目标处理器包括 至少一主处理器及至少一从处理器。
6、 根据权利要求1或2或3或4或5所述实现高清视频并行编码的方法,其特征在于所述步骤B中独立编码压縮各子图像,对子图像内当前宏块编码的具体方法如下判断子图像的编码类型,若子图像为帧内编码,则进行如下步骤Bll)判断当前宏块是否为所在子图像第一行宏块,若是,设置其帧内预测可用模式 为DC直流预测,转步骤B14),否则转步骤B12);B12)判断当前宏块是否为所在子图像第一列宏块,若是,设置其帧内预测可用模式 为DC直流预测、以及垂直预测,转步骤B14),否则转步骤B13);B13)设置其帧内预测可用模式为DC直流预测、水平预测、以及垂直预测;B14)帧内宏块预测编码,分别采用各种帧内预测可用模式对宏块进行预测,并选择 预测误差最小的预测模式完成对当前宏块的编码;若子图像为帧间编码B21)判断当前宏块是否为所在子图像第一行宏块,若是,设置运动矢量垂直搜索范 围最大值为0像素,转步骤B24),否则转步骤B22);B22)判断当前宏块是否为所在子图像最后一行宏块,若是,设置运动矢量垂直搜索 范围最大值为0像素,转步骤B24),否则转步骤B23);B23)设置运动矢量垂直搜索范围最大值为N像素,其中,N为大于等于零的整数;B24)设置运动矢量水平搜索范围最大值为N像素,其中,N为大于等于零的整数; B25)帧间宏块预测编码,在运动矢量垂直搜索范围内计算最佳运动矢量,根据最佳 运动矢量完成对当前宏块的编码。
7、 根据权利要求1或2或3或4或5所述实现高清视频并行编码的方法,其特征在于所 述步骤C中合并子码流的具体方法为分别在各个子码流前添加两字节大小的首宏块地 址和两字节大小的子图像编码类型标志,并依次连接生成当前图像编码最后应该输出的 码流。
8、 一种实现高清视频并行编码的系统,其特征在于该系统包括图像分割模块、子码流合 并模块、存储模块、视频模数转换模块、若干图像编码模块;所述视频模数转换模块至少与一图像编码模块连接;所述各图像编码模块与图像分 割模块、及存储模块连接;所述图像分割模块将当前图像分割为若干子图像;图像编码模块独立编码压縮被分 割的子图像,生成子码流;而后子码流合并模块合并上述各个子码流,生成输出当前图像编码码流。
9、 根据权利要求8所述实现高清视频并行编码的系统,其特征在于所述图像编码模块包 括至少一主编码模块及至少一从编码模块;所述主编码模块通过主DSP实现,从编码模 块通过从DSP实现;所述图像分割模块、子码流合并模块通过所述主DSP实现,所述视 频模数转换模块与主DSP连接。
10、 根据权利要求8或9所述实现高清视频并行编码的系统,其特征在于所述存储模块包括若干存储单元,每个图像编码模块至少连接一存储单元。
11、 根据权利要求8所述实现高清视频并行编码的系统,其特征在于所述图像分割模块将图像分割为若干子图像,根据目标处理器处理能力确定子图像的大小。
12、 根据权利要求11所述实现高清视频并行编码的系统,其特征在于从横向上将图像分割为若干子图像。
13、 根据权利要求11所述实现高清视频并行编码的系统,其特征在于所述子图像分别由相应的目标处理器中设置的图像编码模块编码压縮。
14、 根据权利要求8所述实现高清视频并行编码的系统,其特征在于所述各图像编码模块 独立编码压縮各子图像,对子图像内当前宏块编码的具体方法如下判断子图像的编码 类型,若子图像为帧内编码,则进行如下步骤-Bll)判断当前宏块是否为所在子图像第一行宏块,若是,设置其帧内预测可用模式 为DC直流预测,转步骤B14),否则转步骤B12);B12)判断当前宏块是否为所在子图像第一列宏块,若是,设置其帧内预测可用模式 为DC直流预测、以及垂直预测,转步骤B14),否则转步骤B13);B13)设置其帧内预测可用模式为DC直流预测、水平预测、以及垂直预测;B14)帧内宏块预测编码,分别采用各种帧内预测可用模式对宏块进行预测,并选择 预测误差最小的预测模式完成对当前宏块的编码;若子图像为帧间编码B21)判断当前宏块是否为所在子图像第一行宏块,若是,设置运动矢量垂直搜索范围最大值为0像素,转步骤B24),否则转步骤B22);B22)判断当前宏块是否为所在子图像最后一行宏块,若是,设置运动矢量垂直搜索范围最大值为0像素,转步骤B24),否则转步骤B23);B23)设置运动矢量垂直搜索范围最大值为N像素,其中,N为大于等于零的整数; B24)设置运动矢量水平搜索范围最大值为N像素,其中,N为大于等于零的整数; B25)帧间宏块预测编码,在运动矢量垂直搜索范围内计算最佳运动矢量,根据最佳运动矢量完成对当前宏块的编码。 15、根据权利要求8或9或11或12或13或14所述实现高清视频并行编码的系统,其特征在于所述子码流合并模块合并子码流的具体方法为分别在各个子码流前添加两字节大小的首宏块地址和两字节大小的子图像编码类型标志,并依次连接生成当前图像编码最后应该输出的码流。
全文摘要
本发明揭示了一种实现高清视频并行编码的系统,包括图像分割模块、子码流合并模块、存储模块、视频模数转换模块、若干图像编码模块;所述视频模数转换模块至少与一图像编码模块连接;所述各图像编码模块与图像分割模块、及存储模块连接;所述图像分割模块将当前图像分割为若干子图像;图像编码模块独立编码压缩被分割的子图像,生成子码流;而后子码流合并模块合并上述各个子码流,生成输出当前图像编码码流。本发明将编码图像划分为子图像并行编码的方法避免了目前基于模块流水的并行方法由于某个模块负担过重而出现流水瓶颈的问题,可以根据目标处理器处理能力灵活分配大小合适的子图像,保持多个处理器的高度并行,从而提升了整个系统的性能。
文档编号H04N7/26GK101282478SQ20081003659
公开日2008年10月8日 申请日期2008年4月24日 优先权日2008年4月24日
发明者熊模昌, 郭春辉 申请人:上海华平信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1