欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于window平台视频CPU+GPU硬件解码加速系统和方法独创技术26429字

基于window平台视频CPU+GPU硬件解码加速系统和方法

2021-03-07 16:12:26

基于window平台视频CPU+GPU硬件解码加速系统和方法

  技术领域

  本发明涉及视频处理技术领域,具体涉及基于window平台视频CPU+GPU硬件解码加速系统和方法。

  背景技术

  视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频,由于连续的帧之间相似性极高,为便于储存传输,我们需要对原始的视频进行编码压缩,以去除空间、时间维度的冗余,采用压缩技术通常数据带宽降到1-10MB/秒,这样就可以将视频信号保存在计算机中并作相应的处理,随着目前技术不断的进步,视频的压缩率也越来越高,同样的,在对视频解码播放的过程中,遇到硬件设备性能不好,特别是播放一些蓝光以及4K、8K高压缩率视频时,容易出现卡顿的情况,同时,在对视频进行拖动播放的时候更容易出现卡顿的情况,降低了视频观看的体验。

  发明内容

  本发明实施例提供了基于window平台视频CPU+GPU硬件解码加速系统和方法,通过GPU与CPU并行对视频数据进行处理,通过调配模块读取存储模块中存储的视频数据并选择视频解码器数据,分别发送工作指令到第一解码模块和第二解码模块,分配第一解码模块和第二解码模块的工作模式来对视频数据进行解码,解决了目前视频播放中存在的容易出现卡顿降低视频观看的体验的问题。

  基于window平台视频CPU+GPU硬件解码加速系统,包括:存储模块、调配模块、第一解码模块、第二解码模块、调制模块和显示模块;

  存储模块,用于存储视频数据以及视频解码器数据;

  播放模块,用于播放所述存储模块中存储的视频数据,发送播放指令到所述调配模块和所述调制模块;

  调配模块,用于接收所述播放模块发送的播放指令,读取所述存储模块中存储的视频数据并选择视频解码器数据,分别发送工作指令到所述第一解码模块和所述第二解码模块,分配所述第一解码模块和所述第二解码模块的工作模式;

  第一解码模块,用于接收调配模块发送的工作指令,根据工作指令进行视频数据的解码工作,将解码完成的视频数据进行缓存;

  第二解码模块,用于接收调配模块发送的工作指令,根据工作指令进行视频数据的解码工作,将解码完成的视频数据进行缓存;

  调制模块,用于接收所述播放模块发送的播放指令并进行处理以及与所述显示模块接口进行通信并输出视频信号到所述显示模块;

  显示模块,用于接收所述调制模块发送的视频信号,并进行显示。

  进一步的,所述播放模块设置有人机交互界面,用于与用户进行交互。

  进一步的,所述存储模块包括内存单元和解码器存储单元,所述内存单元用于存储视频数据,所述解码器存储单元用于存放视频解码器数据形成视频解码器集合。

  进一步的,所述调配模块包括缓存单元、计算单元、查找单元和分配单元,所述缓存单元用于缓存所述存储模块中存储的视频数据,所述计算单元用于读取所述缓存单元中缓存的视频数据并读取视频数据的信息,将视频数据的信息发送到所述查找单元和所述分配单元,所述查找单元用于根据视频的信息选择所述存储模块中对应的视频解码器数据,所述分配单元用于根据选择的视频解码器数据、视频数据的信息和所述播放模块发送的播放指令对所述第一解码模块和第二解码模块进行工作模式分配。

  进一步的,视频数据的信息包括视频数的播放时间长度、视频数据的编码信息以及视频数据的分辨率。

  进一步的,所述第一解码模块包括第一解码单元和第一解码缓存,所述第一解码单元用于根据调配模块发送的工作指令按照所述存储模块中存储的视频解码数据对所述存储模块中存储的视频数据进行解码,将解码完成的数据缓存在第一解码缓存,所述第一解码单元为CPU。

  进一步的,所述第二解码模块包括第二解码单元和第二解码缓存,所述第二解码单元用于根据调配模块发送的工作指令按照所述存储模块中存储的视频解码数据对所述存储模块中存储的视频数据进行解码,将解码完成的数据缓存在第二解码缓存,所述第二解码单元为GPU。

  进一步的,所述调制模块包括调取单元、接口适配单元和输出端,所述调取单元用于接收所述播放模块发送的播放指令,对指令进行处理分别读取第一解码模块解码的视频数据和第二解码模块解码的视频数据,并对解码的视频数据进行处理,并将处理完成的解码的视频数据发送到输出端,接口适配单元用于与所述显示模块的接口进行适配完成输出端与所述显示模块接口通信,所述输出端用于将解码的视频数据发送到显示模块。

  进一步的,所述调取单元对解码的视频数据进行处理的操作包括视频数据合并和选择输出的视频。

  第二方面,本发明实施例提供基于window平台视频CPU+GPU硬件解码加速方法,包括以下步骤:

  S1,视频数据读取,用户通过播放模块中设置的人机交互界面从内存单元选择播放的视频数据并发送播放指令,缓存单元缓存存储模块中存储的视频数据,计算单元读取缓存单元中缓存的视频数据并读取视频数据的信息,将视频数据的信息发送到查找单元和分配单元,查找单元根据视频的信息选择存储模块中对应的视频解码器数据;

  S2,视频数据解码,分配单元根据选择的视频解码器数据、视频数据的信息和播放模块发送的播放指令对第一解码模块和第二解码模块进行工作模式分配,第一解码单元根据分配单元发送的工作指令按照解码器存储单元中存储的视频解码数据对内存单元中存储的视频数据进行解码,将解码完成的数据缓存在第一解码缓存,第二解码单元根据分配单元发送的工作指令按照解码器存储单元中存储的视频解码数据对内存单元中存储的视频数据进行解码,将解码完成的数据缓存在第二解码缓存;

  S3,视频输出,调取单元接收播放模块发送的播放指令,对指令进行处理分别读取第一解码模块解码的视频数据和第二解码模块解码的视频数据,并对解码的视频数据进行处理,并将处理完成的解码的视频数据发送到输出端,接口适配单元与显示模块的接口进行适配,输出端将解码的视频数据发送到显示模块。

  本发明实施例提供的上述技术方案的有益效果至少包括:

  本发明通过调配模块读取存储模块中存储的视频数据并选择视频解码器数据,分别发送工作指令到第一解码模块和第二解码模块,分配第一解码模块和第二解码模块的工作模式来对视频数据进行解码,解决了目前视频播放中存在的容易出现卡顿降低视频观看的体验的问题。

  本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

  下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

  附图说明

  附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

  图1为本发明实施例公开的基于window平台视频CPU+GPU硬件解码加速系统结构示意图;

  图2为本发明实施例公开的基于window平台视频CPU+GPU硬件解码加速方法流程图。

  附图标记:

  100-存储模块;101-内存单元;102-解码器存储单元;200-播放模块;300-调配模块;301-缓存单元;302-计算单元;303-查找单元;304-分配单元;400-第一解码模块;401-第一解码单元;402-第一解码缓存;500-第二解码模块;501-第二解码单元;502-第二解码缓存;600-调制模块;601-调取单元;602-接口适配单元;602-输出端;700-显示模块。

  具体实施例

  下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

  实施例一

  如图1所示,本发明实施例提供基于window平台视频CPU+GPU硬件解码加速系统,包括:存储模块100、调配模块300、第一解码模块400、第二解码模块500、调制模块600和显示模块700;

  存储模块100,用于存储视频数据以及视频解码器数据,所述存储模块100包括内存单元101和解码器存储单元102,所述内存单元101用于存储视频数据,所述解码器存储单元102用于存放视频解码器数据形成视频解码器集合;

  具体的,视频数据存放于内存单元101的内部,多个视频解码器数据存放于解码器存储单元102的内部用于,例如,VPx,H.26x和AVS解码器,形成视频解码器集合。

  播放模块200,用于播放所述存储模块100中存储的视频数据,发送播放指令到所述调配模块300和所述调制模块600,所述播放模块200设置有人机交互界面,用于与用户进行交互;

  具体的,用户通过人机交互界面与系统进行交互,选择内存单元101内部存储的视频数据,进行播放操作,例如,选择一个视频,发送开启、暂停、快进以及拖动到指定的时间进行播放的指令,将播放指令分别发送到调配模块300和调制模块600。

  调配模块300,用于接收所述播放模块200发送的播放指令,读取所述存储模块100中存储的视频数据并选择视频解码器数据,分别发送工作指令到所述第一解码模块400和所述第二解码模块500,分配所述第一解码模块400和所述第二解码模块500的工作模式,所述调配模块300包括缓存单元301、计算单元302、查找单元303和分配单元304,所述缓存单元301用于缓存所述存储模块100中存储的视频数据,所述计算单元302用于读取所述缓存单元301中缓存的视频数据并读取视频数据的信息,视频数据的信息包括视频数的播放时间长度、视频数据的编码信息以及视频数据的分辨率,将视频数据的信息发送到所述查找单元303和所述分配单元304,所述查找单元303用于根据视频的信息选择所述存储模块100中对应的视频解码器数据,所述分配单元304用于根据选择的视频解码器数据、视频数据的信息和所述播放模块200发送的播放指令对所述第一解码模块400和第二解码模块500进行工作模式分配;

  具体的,缓存单元301根据播放模块200发送的播放指令将内存单元101内部存储的视频数据进行缓存,同时计算单元302读取视频数据的索引文件获得视频数据的信息,例如编码信息,查找单元303根据获得的信息选取对应的视频解码器,分配单元304根据视频解码器数据、视频数据的信息和所述播放模块200发送的播放指令对所述第一解码模块400和第二解码模块500进行工作模式分配;

  实施例a,在通过计算单元302读取视频数据的索引文件获得视频数据的信息后得到第二解码模块500能够实现硬解码时,第二解码模块500为主解码平台,第一解码模块400为辅解码平台,第一解码模块400根据解码器存储单元102存放视频解码器数据进行软解码,在第二解码模块500解码视频时,解码第二解码模块500解码视频时间点的前后5min并缓存至第一解码缓存402内部,例如,一段h.265编码的视频,长度为30min,第二解码模块500从10min0s开始进行解码,第一解码模块400从10min0s前5min和10min0s后5min开始进行解码,并预缓存至第一解码缓存402内部,在用户通过播放模块200进行拖动操作时,从第一解码缓存402内部读取解码完成的视频数据,实现不卡顿的效果;

  实施例b,在通过计算单元302读取视频数据的索引文件获得视频数据的信息后得到第二解码模块500能够实现硬解码时,第二解码模块500为主解码平台,第一解码模块400为辅解码平台,第一解码模块400根据解码器存储单元102存放视频解码器数据进行软解码,用户通过播放模块200进行跳转指定时间播放操作时,例如,一段h.265编码的视频,长度为30min,从0min0s跳转到20min3s,由于没有预缓存时间,需要进行快速的解码才能实现视频的不卡顿,第一解码模块400和第二解码模块500进行合并计算,对20min3s位置点的数据进行解码加快解码速度,将解码的数据缓存在第一解码缓存402内部,从第一解码缓存402内部读取解码完成的视频数据,实现不卡顿的效果;

  实施例c,在通过计算单元302读取视频数据的索引文件获得视频数据的信息后得到第二解码模块500不能够实现硬解码时,第一解码模块400为主解码平台,第二解码模块500为辅解码平台,第一解码模块400根据解码器存储单元102存放视频解码器数据进行软解码,用户通过播放模块200进行播放时,例如,一段h.265编码的视频,第一解码模块400和第二解码模块500进行合并计算,对h.265编码的视频进行解码,将解码完成的数据缓存在第一解码缓存402内部,通过加强计算能力,实现播放不卡顿的效果。

  第一解码模块400,用于接收调配模块300发送的工作指令,根据工作指令进行视频数据的解码工作,将解码完成的视频数据进行缓存,所述第一解码模块400包括第一解码单元401和第一解码缓存402,所述第一解码单元401用于根据调配模块300发送的工作指令按照所述存储模块100中存储的视频解码数据对所述存储模块100中存储的视频数据进行解码,将解码完成的数据缓存在第一解码缓存402,所述第一解码单元401为CPU;

  具体的,第一解码单元401根据解码器存储单元102存放视频解码器数据进行软解码,将解码完成的视频数据缓存至第一解码缓存402的内部。

  第二解码模块500,用于接收调配模块300发送的工作指令,根据工作指令进行视频数据的解码工作,将解码完成的视频数据进行缓存,所述第二解码模块500包括第二解码单元501和第二解码缓存502,所述第二解码单元501用于根据调配模块300发送的工作指令按照所述存储模块100中存储的视频解码数据对所述存储模块100中存储的视频数据进行解码,将解码完成的数据缓存在第二解码缓存502,所述第二解码单元501为GPU;

  具体的,第二解码单元501根据解码器存储单元102存放视频解码器数据进行软解码,在可以进行硬解时通过内部的解码电路进行硬解,将解码完成的视频数据缓存至第二解码缓存502的内部,当不能进行硬解时根据视频解码器数据与第一解码单元401合并运算进行软解,将解码完成的视频数据缓存至第一解码缓存402的内部。

  调制模块600,用于接收所述播放模块200发送的播放指令并进行处理以及与所述显示模块700接口进行通信并输出视频信号到所述显示模块700,所述调制模块600包括调取单元601、接口适配单元602和输出端603,所述调取单元601用于接收所述播放模块200发送的播放指令,对指令进行处理分别读取第一解码模块400解码的视频数据和第二解码模块500解码的视频数据,并对解码的视频数据进行处理,所述调取单元601对解码的视频数据进行处理的操作包括视频数据合并和选择输出的视频,并将处理完成的解码的视频数据发送到输出端603,接口适配单元602用于与所述显示模块700的接口进行适配,所述输出端603用于将解码的视频数据发送到显示模块700;

  具体的,调取单元601根据用户发出的播放指令,在视频进行拖动时,从第一解码缓存402中提取缓存完成的解码视频数据进行播放,在视频进行跳转指定时间播放时,从第一解码缓存402中提取缓存完成的解码视频数据进行播放,在正常播放时选择从第二解码缓存502中提取缓存完成的解码视频数据进行播放,接口适配单元602与显示模块700进行适配,完成输出端603与显示模块700的通信适配,调取单元601将调取完成的视频数据通过输出端603发送到显示模块700。

  显示模块700,用于接收所述调制模块600发送的视频信号,并进行显示。

  本发明通过存储模块100预设视频解码器,用户通过播放模块200发送播放指令到调配模块300,调配模块300读取存储模块100中存储的视频数据并选择视频解码器数据,分别发送工作指令到第一解码模块400和第二解码模块500,分配第一解码模块400和第二解码模块500的工作模式来对视频数据进行解码,调制模块600分别读取第一解码模块400和第二解码模块500中预先缓存的数据来进行播放,解决了目前视频播放中存在的容易出现卡顿降低视频观看的体验的问题。

  实施例二

  本发明实施例还公开了基于window平台视频CPU+GPU硬件解码加速方法,如图2,包括以下步骤:

  S1,视频数据读取,用户通过播放模块200中设置的人机交互界面从内存单元101选择播放的视频数据并发送播放指令,缓存单元301缓存存储模块100中存储的视频数据,计算单元302读取缓存单元301中缓存的视频数据并读取视频数据的信息,将视频数据的信息发送到查找单元303和分配单元304,查找单元303根据视频的信息选择存储模块100中对应的视频解码器数据;

  具体的,视频数据存放于内存单元101的内部,多个视频解码器数据存放于解码器存储单元102的内部用于形成视频解码器集合。

  S2,视频数据解码,分配单元304根据选择的视频解码器数据、视频数据的信息和播放模块200发送的播放指令对第一解码模块400和第二解码模块500进行工作模式分配,第一解码单元401根据分配单元304发送的工作指令按照解码器存储单元102中存储的视频解码数据对内存单元101中存储的视频数据进行解码,将解码完成的数据缓存在第一解码缓存402,第二解码单元501根据分配单元304发送的工作指令按照解码器存储单元102中存储的视频解码数据对内存单元101中存储的视频数据进行解码,将解码完成的数据缓存在第二解码缓存502;

  具体的,缓存单元301根据播放模块200发送的播放指令将内存单元101内部存储的视频数据进行缓存,同时计算单元302读取视频数据的索引文件获得视频数据的信息,例如编码信息,查找单元303根据获得的信息选取对应的视频解码器,分配单元304根据视频解码器数据、视频数据的信息和所述播放模块200发送的播放指令对所述第一解码模块400和第二解码模块500进行工作模式分配,第一解码单元401根据解码器存储单元102存放视频解码器数据进行软解码,将解码完成的视频数据缓存至第一解码缓存402的内部,第二解码单元501根据解码器存储单元102存放视频解码器数据进行软解码,在可以进行硬解时通过内部的解码电路进行硬解,将解码完成的视频数据缓存至第二解码缓存502的内部,当不能进行硬解时根据视频解码器数据与第一解码单元401合并运算进行软解,将解码完成的视频数据缓存至第一解码缓存402的内部。

  S3,视频输出,调取单元601接收播放模块200发送的播放指令,对指令进行处理分别读取第一解码模块400解码的视频数据和第二解码模块500解码的视频数据,并对解码的视频数据进行处理,并将处理完成的解码的视频数据发送到输出端603,接口适配单元602与显示模块700的接口进行适配,输出端603将解码的视频数据发送到显示模块700;

  调取单元601根据用户发出的播放指令,在视频进行拖动时,从第一解码缓存402中提取缓存完成的解码视频数据进行播放,在视频进行跳转指定时间播放时,从第一解码缓存402中提取缓存完成的解码视频数据进行播放,在正常播放时选择从第二解码缓存502中提取缓存完成的解码视频数据进行播放,接口适配单元602与显示模块700进行适配,完成输出端603与显示模块700的通信适配,调取单元601将调取完成的视频数据通过输出端603发送到显示模块700。

  本实施例公开的基于window平台视频CPU+GPU硬件解码加速方法,通过存储模块100预设视频解码器,用户通过播放模块200发送播放指令到调配模块300,调配模块300读取存储模块100中存储的视频数据并选择视频解码器数据,分别发送工作指令到第一解码模块400和第二解码模块500,分配第一解码模块400和第二解码模块500的工作模式来对视频数据进行解码,调制模块600分别读取第一解码模块400和第二解码模块500中预先缓存的数据来进行播放,解决了目前视频播放中存在的容易出现卡顿降低视频观看的体验的问题。

  应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。

  在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。

  本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。

  结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。该ASIC可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。

  对于软件实现,本申请中描述的技术可用执行本申请所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。

  上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。

《基于window平台视频CPU+GPU硬件解码加速系统和方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)