首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于CUDA的Prores VLC编码方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:杭州当虹科技股份有限公司

摘要:本发明公开了一种基于CUDA的ProResVLC编码,对8×8块的DCT系数进行编码,每32个线程编码一个slice的所有所述8×8块,每一个所述线程编码一个所述8×8块的两个DCT系数,对于一个1920×1080视频序列而言,需要1020×32=32640个线程并行,对于一块高端GPU而言,远大于其能够并行的线程数,使得GPU可以满负载运行,从而提高了VLC编码的速度。

主权项:1.一种基于CUDA的ProresVLC编码方法,其特征在于,对8×8块的DCT系数进行编码,每32个线程编码一个slice中包含的所有32个所述8×8块,每一个所述线程编码一个所述8×8块的一个DC系数和一个AC系数、或每一个所述线程编码一个所述8×8块的两个AC系数。

全文数据:一种基于CUDA的ProResVLG编码技术领域[0001]本发明涉及一种基于CUDA的ProResVLC编码。背景技术[0002]ProRes是Apple定义的一种视频压缩标准。在ProRes标准中,一个slice包含8个16XI6宏块macroblock,以下简称MB,每个MB分为4个8X8的块,这样一个siice共有32个8X8的块。[0003]VLC编码变长编码VariableLengthCoding主要指对8X8块的DCT系数进行编码。[0004]不同于其他的视频压缩标准,ProRes对DCT系数进行编码并不是以8X8块的顺序进行的,而是如图1中的EncodeSliceidX流程图所示,先编码所有8X8块的DC系数,再编码所有块的第一个AC系数,然后是所有块的第二个AC系数,以此类推,AC系数编码需要计算当前非零AC系数和前一个非零AC系数之间的值为0的系数个数。[000S]这种^码方式意味着在一个Slice内部所有DCT系数编码具有较强的相关性。因此通常情况下会采用如图1所示的Slice并行方式进行⑶DA由NVIDIA推出的并行计算架构)实现。[0006]然而这个方式的并行度并不高。例如对于一个1920X1080的视频序列,每帧共有1020^SliCe,这意味着采用前述的slice并行算法最多就只能有1020个线程并行。而对于一块高端GPU,最多可并行处理16384线程,则GPU利用率只有6_25%,而且每个线程的运算量大,需要编码8X8X32=2048个系数。发明内容[0007]本发明的目的在于克服现有技术中的不足而提供一种基于CUDA的ProResVLC编码。[000S]为实现上述目的,一方面,本发明提供的一种基于CUDA的ProResVLC编码,对8X8块的DCT系数进行编码,每32个线程编码一个slice的所有SX8块,每一个线程编码一个8X8块的两个DCT系数。[0009]优选地,每一个线程编码一个8X8块的一个DC系数和一个AC系数,或每一个线程编码一个8X8块的两个AC系数。[0010]优选地,具体算法步骤包括:[0011]在一个slice中,一个线程独立编码一个8X8块的DC系数,在一个slice中包含32个8X8块,共采用32个线程;[0012]32个线程同步处理;[0013]第thrldX个线程,当thrldX大于0时编码所有8X8块的第2XthrIdX个AC系数;[0014]32个线程同步处理;[0015]第thrldX个线程编码所有8X8±夬的第2XthrIdX+1个AC系数;[0016]32个线程同步处理;[0017]第thrldX个线程编码第thrldX+1线程的前两个非零系数。[0018]根据本发明提供的一种基于CUDA的ProResVLC编码,对原有算法进行了分解,采用系数级并行优化方式,每32个线程处理一个siice的算法,每个线程编码两个DCT系数,对于一个1920X1080视频序列而言,需要1020X32=32640个线程并行,对于一块高端GPU而言,远大于其能够并行的线程数,使得GHJ可以满负载运行,从而提高了VLC编码的速度。附图说明[0019]图1是现有的以ProRes标准对DCT系数进行编码的编码流程示意图;[0020]图2是本发明一实施例的一种基于CUDA的ProResVLC编码的编码流程示意图。[0021]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式[0022]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。[0023]在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。[0024]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。[0025]在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。[0026]请参阅图2,本发明一实施例提供了一种基于CUDA的ProResVLC编码,对8X8块的DCT系数进行编码,每幻个线程编码一个siice的所有SXS块,每一个线程编码一个8x8块的两个DCT系数。[0027]其中,每一个线程编码一个8X8块的一个DC系数和一个AC系数,或每一个线程编码一个8X8块的两个AC系数。[0028]具体地,本实施例的算法对原有算法进行分解,采用系数级并行优化方式处理,具体包括如下步骤:'[0029]步骤1:由于DC系数之间没有相关性,因此可以单独编码,在一个siice中,一个线程独立编码一个8X8块的DC系数,在一个s1ice中包含32个8X8块,共采用32个线程;[0030]步骤2:32个线程同步处理;[0031]步骤3:第thrldX个线程,当thrldX大于0时编码所有8X8块的第2XthrIdX个AC系数,在这一步中,前两个非零系数编码时由于需要用到之前系数的信息,暂时不编码,其他系数可正常编码;[0032]步骤4:32个线程同步处理;[0033]步骤5:第thrldX个线程编码所有8X8块的第2XthrldX+1个AC系数;[0034]步骤6:32个线程同步处理;[0035]步骤7:第thrldX个线程编码第thrldX+1线程的前两个非零系数,即步骤3留下来的前两个AC系数。[0036]本发明提供的这种基于⑶DA的ProResVLC编码,对原有算法进行了分解,采用系数级并行优化方式,每32个线程处理一个slice的算法,每个线程编码两个DCT系数,对于一个1920X1080视频序列而言,需要1020X32=32640个线程并行,对于一块高端GPU而言,远大于其能够并行的线程数,使得GPU可以满负载运行,从而提高了VLC编码的速度。[0037]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管上面己经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

权利要求:1.一种基于⑶DA的ProResVLC编码,其特征在于,对8x8块的DCT系数进行编码,每32个线程编码一个slice的所有所述SX8块,每一个所述线程编码一个所述SX8块的两个DCT系数。2.根据权利要求1所述的一种基于CUDA的ProResVLC编码,其特征在于,每一个所述线程编码一个所述8X8块的一个DC系数和一个AC系数,或每一个所述线程编码一个所述8X8块的两个AC系数。3.根据权利要求1所述的一种基于CUDA的ProResVLC编码,其特征在于,具体算法步骤包括:在一个所述siice中,一个所述线程独立编码一个所述8X8块的DC系数,在一个所迷slice中包含32个所述8X8块,共采用32个所述线程;32个所述线程同步处理;第thrldX个线程,当thrldX大于0时编码所有8X8块的第2XthrIdX个AC系数;32个线程同步处理;第thrldX个线程编码所有8X8块的第2XthrIdX+1个AC系数;32个线程同步处理;第thrldX个线程编码第thrldX+1线程的前两个非零系数。

百度查询: 杭州当虹科技股份有限公司 一种基于CUDA的Prores VLC编码方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。