一种针对GPU硬件视频的解码容错方法技术

技术编号:15522676 阅读:92 留言:0更新日期:2017-06-04 11:38
本发明专利技术公开了一种针对GPU硬件视频的解码容错方法,在视频码流进入GPU解码器之前,先在CPU上对视频码流进行一次语法分析,将易出错的码流丢弃并将有效的码流送入GPU解码器,既保证了解码速度又提升了GPU解码器的容错性。

A decoding fault tolerant method for GPU hardware video

The invention discloses a method for GPU video decoding hardware fault tolerance method, before entering the GPU video decoder, the video stream in CPU on the analysis of a grammar, the error prone stream discarded and will effectively stream into the GPU decoder, can ensure the solution code rate and enhance the tolerance of GPU decoder the.

【技术实现步骤摘要】
一种针对GPU硬件视频的解码容错方法
本专利技术涉及一种针对GPU硬件视频的解码容错方法。
技术介绍
随着多媒体信息技术的发展,视频越来越广泛地应用于网络监控、视频直播、家庭影院、移动终端等各个领域,而视频的分辨率也逐步从最初的标清(SD)逐步向高清(HD)、超高清(UHD)演变。越来越高的分辨率对于视频解码器的运算能力提出了更高的要求,传统CPU解码面临着解码速度慢、资源消耗多等诸多问题,GPU(GraphicsProcessingUnit,图形处理器)解码应运而生。GPU是一种专门在服务器、PC(personalcomputer,个人电脑)、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算和视频解码处理工作的微处理器。大部分GPU都有专用的视频硬件解码加速芯片,支持主流的视频格式的硬件解码,用于在观看视频时保证性能、节省功耗。现有服务器和PC级别的GPU解码器主要有基于Nvidia显卡的NVCUVID解码器和基于Intel显卡的IntelMSDK解码器,它们为用户提供了相关的API(ApplicationProgrammingInterface,应用程序编程接口),让用户将视频码流分段送入解码API,GPU解码器内部再将API接收的视频码流进行解析。GPU解码器利用GPU强大的计算性能和并行特性,能够高效地处理解码过程中数据密集且高度独立化的模块,因此GPU解码器速度比CPU快,但是由于GPU解码器侧重于并行性,对于完整的视频码流而言可以按照它原有的并行方式解码,但是在面对复杂多变的视频码流如丢包、码流混乱时,就不能再按照既定的并行方式解码,否则将导致解码出错。视频编码器在编码时会将视频的宽、高、色度格式、帧率等信息写入到视频码流的SPS(SequenceParameterSet,序列参数集)头信息中;将一个视频分为若干帧,并将帧类型、以及该帧所对应的参考帧等信息写入到每一帧的PPS(PictureParameterSet,图像参数集)头信息中;将每一帧切分成若干个Slice(片),并将Slice在当前帧中的index(索引)信息写入到每个Slice头信息中;将每一个Slice分成若干个MB(Macroblock,宏块),将图像中的编码残差等写入到MB信息中。因此,解码器在解码一个视频时,会从SPS头信息中提取宽、高等信息,在解码每一帧时,从PPS头信息中提取帧类型、参考帧等信息,在解码每一个Slice时,从Slice头信息中提取Sliceindex,在解码每一个MB时,从MB码流中提取编码残差并解析成画面细节,从而呈现给观众。现有GPU解码器在面对复杂多变的视频码流时容易出错,导致解码器终止工作。
技术实现思路
本专利技术的目的在于克服现有技术中的不足而提供一种针对GPU硬件视频的解码容错方法。为实现上述目的,一方面,本专利技术提供的一种针对GPU硬件视频的解码容错方法,包括如下步骤:在SPS层检测视频的宽和高是否属于集合M1、所述视频的色度格式是否属于集合M2、所述视频的帧率是否属于集合M3,当所述视频的宽和高、色度格式和帧率属于相应集合则标记当前所述视频的SPS头信息可正确分析,当所述视频的宽和高、色度格式和帧率不属于相应集合则寻找下一个包含所述SPS头信息的视频码流;当所述视频的SPS头信息可正确分析,则在PPS层判断当前帧的帧类型是否属于集合M4、所述当前帧的参考帧数目是否属于集合M5,当所述帧类型和参考帧数目属于相应集合则标记所述当前帧的PPS头信息可正确分析,当当所述帧类型和参考帧数目不属于相应集合则寻找下一个包含所述PPS头信息的视频码流;当所述当前帧的PPS头信息可正确分析,则在Slice层判断当前Slice的index是否等于前一个获取到的Slice的index+1,当不等于时则丢弃余下所有的Slice信息并寻找下一个包含所述PPS头信息的视频码流,当等于时则判断当前Slice是否所述当前帧中的最后一个Slice头信息;当所述当前Slice不是所述当前帧中的最后一个Slice头信息则将所述当前Slice头信息保存至缓冲区并寻找下一个Slice头信息;当所述当前Slice头信息是所述当前帧中的最后一个Slice头信息则将所述缓冲区中的码流送入GPU解码器。优选地,集合M1={{128,96},{176,144},{320,240},{640,480},{704,576},{720,480},{720,576},{800,480},{960,540},{1024,576},{1280,720},{1440,1080},{1920,1080},{1920,1088},{2560,1440},{3840,2160},{4096,2160}}。优选地,集合M2={YUV420,YUV422}。优选地,集合M3={23.97,24,25,29.97,30,50,59.94,60}。优选地,集合M4={I,P,B}。优选地,集合M5={0~32}。根据本专利技术提供的一种针对GPU硬件视频的解码容错方法,在视频码流进入GPU解码器之前,先在CPU上对视频码流进行一次语法分析,将易出错的码流丢弃并将有效的码流送入GPU解码器,既保证了解码速度又提升了GPU解码器的容错性。具体实施方式下面详细描述本专利技术的实施例。本专利技术一实施例提供了一种针对GPU硬件视频的解码容错方法,包括如下步骤:1、在SPS层,检测视频的宽和高是否属于集合M1、色度格式是否属于集合M2、帧率是否属于集合M3,其中M1={{128,96},{176,144},{320,240},{640,480},{704,576},{720,480},{720,576},{800,480},{960,540},{1024,576},{1280,720},{1440,1080},{1920,1080},{1920,1088},{2560,1440},{3840,2160},{4096,2160}},M2={YUV420,YUV422},M3={23.97,24,25,29.97,30,50,59.94,60},若是则标记为当前视频的SPS头信息可正确解析,并执行下一步骤,若不是则寻找下一个包含SPS头信息的视频码流;2、在PPS层,判断当前帧的类型是否属于集合M4、参考帧数目是否属于集合M5,其中M4={I,P,B},M5={0~32},若是则标记为当前帧的PPS头信息可正确解析,执行下一步骤,若不是则寻找下一个包含PPS头信息的视频码流;3、在Slice层,判断当前Slice的index是否等于前一个获取到的Slice的index加1,若不等于则丢弃接下来所有的Slice信息,寻找下一个包含PPS的视频码流,若等于则判断当前Slice是否当前帧中的最后一个Slice头信息,若不是将当前Slice保存到一个缓冲区临时保持,并寻找下一个Slice头信息,否则执行下一步骤;4、将缓冲区中的码流送入GPU解码器。现有解码器方案通常采用纯CPU解码或纯GPU解码,纯CPU解码能力受CPU性能影响,通常速度较慢,功耗较高;纯GPU解码芯片速度快,功耗低,但是由于解码芯片硬件固化,对于因流媒体网络传输丢包的随机性影响稳定性,容易造成crash,本文档来自技高网
...

【技术保护点】
一种针对GPU硬件视频的解码容错方法,其特征在于,包括如下步骤:在SPS层检测视频的宽和高是否属于集合M1、所述视频的色度格式是否属于集合M2、所述视频的帧率是否属于集合M3,当所述视频的宽和高、色度格式和帧率属于相应集合则标记当前所述视频的SPS头信息可正确分析,当所述视频的宽和高、色度格式和帧率不属于相应集合则寻找下一个包含所述SPS头信息的视频码流;当所述视频的SPS头信息可正确分析,则在PPS层判断当前帧的帧类型是否属于集合M4、所述当前帧的参考帧数目是否属于集合M5,当所述帧类型和参考帧数目属于相应集合则标记所述当前帧的PPS头信息可正确分析,当当所述帧类型和参考帧数目不属于相应集合则寻找下一个包含所述PPS头信息的视频码流;当所述当前帧的PPS头信息可正确分析,则在Slice层判断当前Slice的index是否等于前一个获取到的Slice的index+1,当不等于时则丢弃余下所有的Slice信息并寻找下一个包含所述PPS头信息的视频码流,当等于时则判断当前Slice是否所述当前帧中的最后一个Slice头信息;当所述当前Slice头信息不是所述当前帧中的最后一个Slice头信息则将所述当前Slice头信息保存至缓冲区并寻找下一个Slice头信息;当所述当前Slice是所述当前帧中的最后一个Slice则将所述缓冲区中的码流送入GPU解码器。...

【技术特征摘要】
1.一种针对GPU硬件视频的解码容错方法,其特征在于,包括如下步骤:在SPS层检测视频的宽和高是否属于集合M1、所述视频的色度格式是否属于集合M2、所述视频的帧率是否属于集合M3,当所述视频的宽和高、色度格式和帧率属于相应集合则标记当前所述视频的SPS头信息可正确分析,当所述视频的宽和高、色度格式和帧率不属于相应集合则寻找下一个包含所述SPS头信息的视频码流;当所述视频的SPS头信息可正确分析,则在PPS层判断当前帧的帧类型是否属于集合M4、所述当前帧的参考帧数目是否属于集合M5,当所述帧类型和参考帧数目属于相应集合则标记所述当前帧的PPS头信息可正确分析,当当所述帧类型和参考帧数目不属于相应集合则寻找下一个包含所述PPS头信息的视频码流;当所述当前帧的PPS头信息可正确分析,则在Slice层判断当前Slice的index是否等于前一个获取到的Slice的index+1,当不等于时则丢弃余下所有的Slice信息并寻找下一个包含所述PPS头信息的视频码流,当等于时则判断当前Slice是否所述当前帧中的最后一个Slice头信息;当所述当前Slice头信息不是所述当前帧中的最后一个Slice头信息则将所述当前Slice头信息保存至缓冲区并寻找下一...

【专利技术属性】
技术研发人员:黄进廖义王伟
申请(专利权)人:杭州当虹科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1