CN106791922A - 一种针对gpu硬件视频的解码容错方法 - Google Patents

一种针对gpu硬件视频的解码容错方法 Download PDF

Info

Publication number
CN106791922A
CN106791922A CN201611202191.5A CN201611202191A CN106791922A CN 106791922 A CN106791922 A CN 106791922A CN 201611202191 A CN201611202191 A CN 201611202191A CN 106791922 A CN106791922 A CN 106791922A
Authority
CN
China
Prior art keywords
video
headers
decoding
slice
gpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201611202191.5A
Other languages
English (en)
Other versions
CN106791922B (zh
Inventor
黄进
廖义
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Arcvideo Technology Co ltd
Original Assignee
Hangzhou Arcvideo Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Arcvideo Technology Co ltd filed Critical Hangzhou Arcvideo Technology Co ltd
Priority to CN201611202191.5A priority Critical patent/CN106791922B/zh
Publication of CN106791922A publication Critical patent/CN106791922A/zh
Application granted granted Critical
Publication of CN106791922B publication Critical patent/CN106791922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种针对GPU硬件视频的解码容错方法,在视频码流进入GPU解码器之前,先在CPU上对视频码流进行一次语法分析,将易出错的码流丢弃并将有效的码流送入GPU解码器,既保证了解码速度又提升了GPU解码器的容错性。

Description

一种针对GPU硬件视频的解码容错方法
技术领域
本发明涉及一种针对GPU硬件视频的解码容错方法。
背景技术
随着多媒体信息技术的发展,视频越来越广泛地应用于网络监控、视频直播、家庭影院、移动终端等各个领域,而视频的分辨率也逐步从最初的标清(SD)逐步向高清(HD)、超高清(UHD)演变。越来越高的分辨率对于视频解码器的运算能力提出了更高的要求,传统CPU解码面临着解码速度慢、资源消耗多等诸多问题,GPU(Graphics Processing Unit,图形处理器)解码应运而生。
GPU是一种专门在服务器、PC(personal computer,个人电脑)、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算和视频解码处理工作的微处理器。大部分GPU都有专用的视频硬件解码加速芯片,支持主流的视频格式的硬件解码,用于在观看视频时保证性能、节省功耗。
现有服务器和PC级别的GPU解码器主要有基于Nvidia显卡的NVCUVID解码器和基于Intel显卡的Intel MSDK解码器,它们为用户提供了相关的API(ApplicationProgramming Interface,应用程序编程接口),让用户将视频码流分段送入解码API,GPU解码器内部再将API接收的视频码流进行解析。GPU解码器利用GPU强大的计算性能和并行特性,能够高效地处理解码过程中数据密集且高度独立化的模块,因此GPU解码器速度比CPU快,但是由于GPU解码器侧重于并行性,对于完整的视频码流而言可以按照它原有的并行方式解码,但是在面对复杂多变的视频码流如丢包、码流混乱时,就不能再按照既定的并行方式解码,否则将导致解码出错。
视频编码器在编码时会将视频的宽、高、色度格式、帧率等信息写入到视频码流的SPS(Sequence Parameter Set,序列参数集)头信息中;将一个视频分为若干帧,并将帧类型、以及该帧所对应的参考帧等信息写入到每一帧的PPS(Picture Parameter Set,图像参数集)头信息中;将每一帧切分成若干个Slice(片),并将Slice在当前帧中的index(索引)信息写入到每个Slice头信息中;将每一个Slice分成若干个MB(Macroblock,宏块),将图像中的编码残差等写入到MB信息中。
因此,解码器在解码一个视频时,会从SPS头信息中提取宽、高等信息,在解码每一帧时,从PPS头信息中提取帧类型、参考帧等信息,在解码每一个Slice时,从Slice头信息中提取Slice index,在解码每一个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,而本发明将CPU和GPU解码进行结合,增加CPU解码预分析阶段,将视频码流中影响最大的SPS、PPS、Slice层语法信息进行针对性的语法分析,将可能导致GPU解码器出错的部分视频码流丢弃,将能够正常解析的码流送入GPU解码器,在保证解码速度的同时提升解码稳定性。
而本发明的针对GPU硬件视频的解码容错方法,考虑到MB码流信息不易引起GPU解码错误,且为保证CPU解码阶段的速度,不做MB级的语法分析,只需做Slice级的语法分析,同时开设缓冲区,将一帧中所有的Slice进行缓存,在确保一帧中所有Slice的index是有序排列而且完整的情况下,再将该帧的码流送给GPU解码器,解决了Slice重要信息丢失以及部分码流混乱导致GPU解码器出错的问题。
将本发明和纯GPU解码方法进行测试和对比,测试源为复杂多变的卫星视频流,测试时长为30*24小时,纯GPU解码方法在此期间报错次数为7次,而本发明报错次数为0次,说明本发明有较好的解码容错能力,提升了解码稳定性。同时,相对于纯GPU解码,本发明的解码速度下降在1%以内,说明本发明的解码速度得到了有效保障。
因此,综上,根据本发明提供的一种针对GPU硬件视频的解码容错方法,在视频码流进入GPU解码器之前,先在CPU上对视频码流进行一次语法分析,将易出错的码流丢弃并将有效的码流送入GPU解码器,既保证了解码速度又提升了GPU解码器的容错性。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (6)

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头信息保存至缓冲区并寻找下一个Slice头信息;
当所述当前Slice是所述当前帧中的最后一个Slice则将所述缓冲区中的码流送入GPU解码器。
2.根据权利要求1所述的一种针对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}}。
3.根据权利要求1所述的一种针对GPU硬件视频的解码容错方法,其特征在于,所述集合M2={YUV420,YUV422}。
4.根据权利要求1所述的一种针对GPU硬件视频的解码容错方法,其特征在于,所述集合M3={23.97,24,25,29.97,30,50,59.94,60}。
5.根据权利要求1所述的一种针对GPU硬件视频的解码容错方法,其特征在于,所述集合M4={I,P,B}。
6.根据权利要求1所述的一种针对GPU硬件视频的解码容错方法,其特征在于,所述集合M5={0~32}。
CN201611202191.5A 2016-12-20 2016-12-20 一种针对gpu硬件视频的解码容错方法 Active CN106791922B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611202191.5A CN106791922B (zh) 2016-12-20 2016-12-20 一种针对gpu硬件视频的解码容错方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611202191.5A CN106791922B (zh) 2016-12-20 2016-12-20 一种针对gpu硬件视频的解码容错方法

Publications (2)

Publication Number Publication Date
CN106791922A true CN106791922A (zh) 2017-05-31
CN106791922B CN106791922B (zh) 2019-11-19

Family

ID=58899907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611202191.5A Active CN106791922B (zh) 2016-12-20 2016-12-20 一种针对gpu硬件视频的解码容错方法

Country Status (1)

Country Link
CN (1) CN106791922B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109120938A (zh) * 2017-06-26 2019-01-01 深圳市中兴微电子技术有限公司 一种Camera中间层图像处理方法及片上系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394569A (zh) * 2008-10-29 2009-03-25 北京创毅视讯科技有限公司 一种avs视频解码器的容错方法、装置及芯片
CN102158694A (zh) * 2010-12-01 2011-08-17 航天恒星科技有限公司 一种基于gpu的遥感图像解压缩方法
CN103139571A (zh) * 2013-03-21 2013-06-05 南通大学 基于fec与wz编解码相结合的视频容错抗误码方法
US20140300758A1 (en) * 2013-04-04 2014-10-09 Bao Tran Video processing systems and methods
CN105120293A (zh) * 2015-08-26 2015-12-02 中国航空工业集团公司洛阳电光设备研究所 基于cpu和gpu的图像协同解码方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394569A (zh) * 2008-10-29 2009-03-25 北京创毅视讯科技有限公司 一种avs视频解码器的容错方法、装置及芯片
CN102158694A (zh) * 2010-12-01 2011-08-17 航天恒星科技有限公司 一种基于gpu的遥感图像解压缩方法
CN103139571A (zh) * 2013-03-21 2013-06-05 南通大学 基于fec与wz编解码相结合的视频容错抗误码方法
US20140300758A1 (en) * 2013-04-04 2014-10-09 Bao Tran Video processing systems and methods
CN105120293A (zh) * 2015-08-26 2015-12-02 中国航空工业集团公司洛阳电光设备研究所 基于cpu和gpu的图像协同解码方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109120938A (zh) * 2017-06-26 2019-01-01 深圳市中兴微电子技术有限公司 一种Camera中间层图像处理方法及片上系统

Also Published As

Publication number Publication date
CN106791922B (zh) 2019-11-19

Similar Documents

Publication Publication Date Title
CN103281529B (zh) 图像信息解码设备和方法、图像信号编码设备和方法
US10027970B2 (en) Render-orientation information in video bitstream
CN104081781B (zh) 一种编码器、解码器、编解码方法及用于传送解多工的方法
CN104837052B (zh) 播放多媒体数据的方法及装置
CN103379333B (zh) 编解码方法、视频序列码流的编解码方法及其对应的装置
CN103843341B (zh) 用于管理视频解码过程中的画面的解码器及其方法
CN104904146B (zh) Jctvc‑l0226:vps和vps_extension更新
CN104754358B (zh) 码流的生成和处理方法、装置及系统
CN108141613A (zh) 利用后处理指示的视频译码的方法和系统
CN101198045A (zh) 一种流媒体数字水印系统
CN109348309A (zh) 一种适用于帧率上变换的分布式视频转码方法
CN102026017A (zh) 一种视频解码高效测试方法
CN107634930A (zh) 一种媒体数据的获取方法和装置
CN109963176A (zh) 视频码流处理方法、装置、网络设备和可读存储介质
WO2022037386A1 (zh) 点云媒体的数据处理方法、装置、设备及存储介质
CN107197369A (zh) 一种多子流协同的视频流媒体并行解码方法
RU2015103215A (ru) Способ и устройство для кодирования видео, имеющего временную масштабируемость, и способ и устройство для декодирования видео, имеющего временную масштабируемость
CN105009578B (zh) 多层视频流编解码方法和设备
CN104937942A (zh) 用于视频序列编码的解码器、编码器和方法
CN113271493A (zh) 视频流解码方法及计算机可读存储介质
CN103503444A (zh) 在视频编码中用信号通知活动层的数量
CN106791922B (zh) 一种针对gpu硬件视频的解码容错方法
CN101466037A (zh) 一种软硬件配合的视频解码器实现方法
CN108134917A (zh) 一种基于Intel QSV技术的视频会议方法
TWI735297B (zh) 具有初始化片段之視訊及音訊之寫碼

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310000 E, 16 floor, A block, Paradise software garden, 3 West Gate Road, Xihu District, Hangzhou, Zhejiang.

Applicant after: Hangzhou Dang Hong Polytron Technologies Inc

Address before: 310000 E, 16 floor, A block, Paradise software garden, 3 West Gate Road, Xihu District, Hangzhou, Zhejiang.

Applicant before: HANGZHOU DANGHONG TECHNOLOGY CO., LTD.

GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Huang Jin

Inventor after: Liao Yi

Inventor after: Wang Jianwei

Inventor before: Huang Jin

Inventor before: Liao Yi

Inventor before: Wang Wei