基于众核平台的音视频解码方法

文档序号:7855889阅读:233来源:国知局
专利名称:基于众核平台的音视频解码方法
技术领域
本发明涉及数据解码领域,更具体地,本发明涉及基于众核平台的音视频解码方法。
背景技术
随着互联网的飞速发展,基于网络的音视频传输流量也越来越大,网络音视频流已深入到了人们的日常生活,给我们的生活带来了很多方便和变化。然而,不断出现庞大的、不同内容的图像信息库,也似乎给我们带来了不少的困扰,网上大量不良图像对广大青年人的有很多毒害。为了净化网络,维护社会和谐安定,迫切需要对网络上的音视频内容进行监管。音视频内容监管需要高性能的解码系统,能够满足互联网海量音视频数据的并行 解码需求。此外,互联网视频监管需要同时对音频视频流进行内容分析处理,需要加速卡能够同时处理大量的视频和音频流并发解码。所处理的音频流任务片段相对固定,需要的解码资源相对稳定。Tilera众核CPU可以在单芯片上提供64个处理器核心,每个核心都可以独立运行,可通过共享内存和消息传递机制来进行通信,为大规模多路音视频流的并行计算提供计算平台。在CN101466041中提出了一种多核处理器的多视点视频编码的任务调度方法,其根据图像组的编号和参数,参照设定的优先级设置方法,将优先级最高的视频帧分配到多核处理器的空闲核上进行编码。然而,现有技术不适用视频内容监管系统和加速卡的应用模式,因为大量的视频解码任务片段是属于同一个流,流路数多,不同流任务片段数目差异大,因此需要兼顾负载均衡和流的响应延迟。针对相关技术中的问题,目前尚未提出有效的解决方案。

发明内容
针对相关技术中的问题,本发明提出一种基于众核平台的音视频并行解码系统架构,能够满足海量数据流内容监管的需求。本发明提供了一种基于众核平台的音视频解码方法,包括以下步骤确定接收到的待解码数据流是视频数据流还是音频数据流;如果接收到视频数据流,则根据视频数据流的压缩格式类型来确定视频数据流的描述节点,并对视频数据流进行解码;以及如果接收到音频流数据,则对音频流数据进行解码。优选地,在确定待解码数据流的类型之前,该方法还包括将众核平台的多个核心分为至少包括一个或多个输入/输出组、一个或多个预处理组和一个或多个解码组的多组,其中,一个或多个输入/输出组用于接收待解码数据流,所述一个或多个预处理组用于对待解码数据流进行预处理,以及一个或多个解码组用于对待解码数据流进行解码。
优选地,在确定描述节点之前,该方法还包括确定是否已知视频数据流的压缩格式类型。其中,如果压缩格式类型未知,则将视频数据流发送给一个或多个预处理组,用于对视频流数据进行预处理;全局任务调度模块根据经过预处理的视频流数据的压缩格式类型选择一个或多个解码组中负载最轻的组并创建所述视频流数据的描述节点。优选地,根据解码组中待解码数据格式权重、已解码片段负载修正值、片段数量、负载的音频任务片段来计算负载的轻重。此外,如果压缩格式类型已知,则全局任务调度模块根据任务描述信息中的解码组的组号,在对应解码组的流描述节点池中哈希计算查找流描述节点位置并更新描述节点。优选地,描述节点包括流号、当前未解码的片段数和正在处理的片段数。 优选地,对音频流数据进行解码包括根据当前全局视频负载情况或系统设置的音频最多占用核心阈值,在一个或多个解码组中选择负载最轻的核心中加入音频流数据,从而在该核心中对音频流数据进行解码。优选地,多组还包括选择根据板上应用系统启动配置设定的专用音频资源组,并在专用音频资源组中对音频流数据进行解码。优选地,对视频流数据进行解码包括在一个解码组中进行解码,包括以下步骤在一个核心空闲时,组内调度模块到本组任务资源池中获取视频流数据的描述节点,解码节点任务片段链表中的第一个数据片段或者根据配置文件来配置连续解码几个片段;如果任务流池为空,则继续解码后续片段,否则将视频流数据归还到任务流池中;如果任务片段链表为空,则释放描述节点;以及在解码完每个视频片段之后确定是否具有音频片段,如果有的话,则对音频片段进行解码。本发明针对网络音视频混合流采用并行解码任务调度算法,可以动态调整音频占用的核心数量,使得各个视频流各片段输入得到的响应延迟和整个流的响应延迟间达到均衡。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是根据本发明实施例的基于众核平台的音视频解码方法的流程图;以及图2是本发明音视频解码处理的一个实施例的详细示图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。下面,参照图I和图2详细描述本发明。图I是根据本发明实施例的基于众核平台的音视频解码方法的流程图;以及图2是本发明音视频解码处理的一个实施例的详细示图。参照图1,本发明实施例的基于众核平台的音视频解码方法包括以下步骤S102,确定接收到的待解码数据流是视频数据流还是音频数据流;S104,如果接收到视频数据流,则根据视频数据流的压缩格式类型来确定视频数据流的描述节点,并对视频数据流进行解码;以及S106,如果接收到音频流数据,则对音频流数据进行解码。
此外,在确定待解码数据流的类型之前,该方法还包括将众核平台的多个核心分为至少包括一个或多个输入/输出组、一个或多个预处理组和一个或多个解码组的多组,其中,一个或多个输入/输出组用于接收待解码数据流,一个或多个预处理组用于对待解码数据流进行预处理,以及一个或多个解码组用于对待解码数据流进行解码。参照图2,示出了各个组构成的众核平台,其采用针对网络音视频流进行并行解码的处理架构,众核资源分组架构是把众核的多个核心分组,形成以组为单位的资源池,其中本发明的任务调度算法涉及全局流任务分配和组内任务调度两个部分。以下具体描述该架构。从图2中可以看出,将多个核心(通过C表示处理器的核心)进行分组,从而形成以组为单位的资源池。在该实施例中,将核心分为了输入/输出
(IO)组、预处理组和解码组。其中,IO组负责数据的发送和接收;预处理组负责新数据流的数据预处理和流任务分发调度;以及解码组负责该组分配的数据流的解码。注意,图2中所示各个组中的处理器核心的数量仅仅是示意性的,本领域的技术人员能够理解,根据不同的应用可以调整每组中的核心的数量。此外,图2中将多个核心分为IO组、预处理组和解码组,但本领域的技术人员也可以根据具体的处理要求增加完成其他功能的组,诸如后面描述的专用音频资源组。在图2中,用S表示多个任务流,每个任务流具有唯一的标识号,分别标为SO.....
Sn,用F表示视频片段,每个任务流都具有多个视频片段,视频片段号从0开始依次递增,如F0,Fl.....Fn ;以及用A表示音频片段,音频片段号从0开始依次递增,如AO、Al.....An。在确定描述节点之前,该方法还包括确定是否已知视频数据流的压缩格式类型。如果IO组接收到未知类型的新视频流数据(待解码数据压缩格式未知),则将视频数据流发送给预处理组,用于对视频流数据进行预处理。全局任务调度模块接收到经过预处理的新视频流数据之后,根据待解码数据压缩格式类型,选择负载最轻的资源组(资源组是对所有计算核心的描述,在分配给解码用后就成为解码组)进行分配(负载轻重计算根据当前资源组待解码数据格式权重、已解码片断负载修正值、片断数量、负载的音频任务片段等),创建对该流的描述节点,包括流号、当前未解码片断数,正在处理的片断号等。如果接收到已知类型的数据,表明对该流已进行过处理,则全局任务调度模块根据任务描述信息中的组号,在对应解码组的流描述节点池中哈希计算查找流描述节点位置并更新所述描述节点。此外,如果接收到音频流数据,则直接交给全局任务调度模块,其根据当前全局视频负载情况或者系统设置的音频最多占用核心阈值,选择负载最轻的核心加入音频任务;优先选择根据板上应用系统启动配置设定的专用音频资源组。本发明涉及的视频流数据解码处理包括组内任务调度算法,具体包括首先,在核心空闲时,组内任务调度模块到本组任务资源池中获取一个视频任务流描述节点,解码节点任务链表第一个数据片断或根据配置文件配置连续解码几个片断。接下来,如果任务池为空,则继续解码后续片断,否则归还该数据流到本组任务流池。具体来说,任务池中放的是任务流,每个流包括很多个片段,在处理完某个流的一个片段或者几个片段(这根据配置文件配置的参数来决定),当前任务已经完成,如果任务流池里为空,说明归还当前任务流,并不能获取新的任务流,那么就不归还,继续处理当前任务流的后续片段;如果当前任务流已经没有任务片段了,则做归还释放处理。接着,如果该流任务片断链表为空,则释放流描述节点。最后,每个视频任务片段处理完则查看本组是否有音频任务,如果有的话则处理 一个音频任务。注意,如何创建描述节点、对数据流进行解码等处理都是本领域的公知技术,并不属于本发明的范畴,故本文省略相关描述以简化说明。综上所述,借助于本发明的上述技术方案,利用众核的众多核心,考虑互联网音视频流的特性,通过分组策略进行数据并行和功能并行,并根据处理数据音视频流量负载,动态调节音视频的计算资源分配,可以满足对音频和视频流内容解码检测的性能需求。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于众核平台的音视频解码方法,其特征在于,所述方法包括以下步骤 确定接收到的待解码数据流是视频数据流还是音频数据流; 如果接收到所述视频数据流,则根据所述视频数据流的压缩格式类型来确定所述视频数据流的描述节点,并对所述视频数据流进行解码;以及 如果接收到所述音频流数据,则对所述音频流数据进行解码。
2.根据权利要求I所述的方法,其特征在于,在确定所述待解码数据流的类型之前,所述方法还包括 将所述众核平台的多个核心分为至少包括一个或多个输入/输出组、一个或多个预处理组和一个或多个解码组的多组,其中,所述一个或多个输入/输出组用于接收所述待解码数据流,所述一个或多个预处理组用于对所述待解码数据流进行预处理,以及所述一个或多个解码组用于对所述待解码数据流进行解码。
3.根据权利要求2所述的方法,其特征在于,在确定所述描述节点之前,所述方法还包括 确定是否已知所述视频数据流的所述压缩格式类型。
4.根据权利要求3所述的方法,其特征在于,如果所述压缩格式类型未知,则 将所述视频数据流发送给所述一个或多个预处理组,用于对所述视频流数据进行预处理; 全局任务调度模块根据经过预处理的视频流数据的压缩格式类型选择所述一个或多个解码组中负载最轻的组并创建所述视频流数据的描述节点。
5.根据权利要求4所述的方法,其特征在于,根据解码组中待解码数据格式权重、已解码 片段负载修正值、片段数量、负载的音频任务片段来计算负载的轻重。
6.根据权利要求3所述的方法,其特征在于,如果所述压缩格式类型已知,则 全局任务调度模块根据任务描述信息中的解码组的组号,在对应解码组的流描述节点池中哈希计算查找流描述节点位置并更新所述描述节点。
7.根据权利要求4或6所述的方法,其特征在于,所述描述节点包括流号、当前未解码的片段数和正在处理的片段数。
8.根据权利要求2所述的方法,其特征在于,对所述音频流数据进行解码包括根据当前全局视频负载情况或系统设置的音频最多占用核心阈值,在所述一个或多个解码组中选择负载最轻的核心中加入所述音频流数据,从而在该核心中对所述音频流数据进行解码。
9.根据权利要求2所述的方法,其特征在于,所述多组还包括选择根据板上应用系统启动配置设定的专用音频资源组,并在所述专用音频资源组中对所述音频流数据进行解码。
10.根据权利要求2所述的方法,其特征在于,对所述视频流数据进行解码包括在一个解码组中进行解码,包括以下步骤 在一个核心空闲时,组内调度模块到本组任务资源池中获取所述视频流数据的描述节点,解码节点任务片段链表中的第一个数据片段或者根据配置文件来配置连续解码几个片段; 如果任务流池为空,则继续解码后续片段,否则将所述视频流数据归还到所述任务流池中;如果所述任务片段链表为空,则释放所述描述节点;以及 在解码完每个视频片段之后确定是 否具有音频片段,如果有的话,则对所述音频片段进行解码。
全文摘要
本发明提供了一种基于众核平台的音视频解码方法,包括以下步骤确定接收到的待解码数据流是视频数据流还是音频数据流;如果接收到视频数据流,则根据视频数据流的压缩格式类型来确定视频数据流的描述节点,并对视频数据流进行解码;以及如果接收到音频流数据,则对音频流数据进行解码。本发明针对网络音视频混合流采用并行解码任务调度算法,可以动态调整音频占用的核心数量,使得各个视频流各片段输入得到的响应延迟和整个流的响应延迟间达到均衡。
文档编号H04N7/26GK102761746SQ20121024248
公开日2012年10月31日 申请日期2012年7月12日 优先权日2012年7月12日
发明者刘立, 包秀国, 柳胜杰, 狄少嘉, 袁庆升, 许建卫, 邵宗有, 陈训逊 申请人:国家计算机网络与信息安全管理中心, 曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1