CN103037209B - 视频帧的解码处理方法和装置 - Google Patents
视频帧的解码处理方法和装置 Download PDFInfo
- Publication number
- CN103037209B CN103037209B CN201110296892.0A CN201110296892A CN103037209B CN 103037209 B CN103037209 B CN 103037209B CN 201110296892 A CN201110296892 A CN 201110296892A CN 103037209 B CN103037209 B CN 103037209B
- Authority
- CN
- China
- Prior art keywords
- frame
- current
- sequence number
- reading
- caching
- 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.)
- Active
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种视频帧的解码处理方法和装置,所述装置包括解析模块、序号确定模块和错误判断处理模块。所述方法包括:在对当前读入帧的解码处理过程中,解析当前读入帧的信息,确定待显示帧序号以及缓存帧序号;判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,并根据待显示帧序号显示对应的解码帧。利用本发明,可以避免数据错误扩散到后续的解码流程和显示流程中,提高了视频播放的正确性和流畅性。
Description
技术领域
本发明涉及视频数据处理领域,尤其涉及一种视频帧的解码处理方法和装置。
背景技术
在视频数据处理领域,随着视频分辨率的不断提高和视频解码复杂度的提高,对于视频解码的计算消耗持续增加。采用中央处理器CPU进行视频解码要消耗大量的CPU计算资源,也有可能出现CPU计算资源无法满足高分辨率、高码率的需要。
最近几年,台式计算机(PC机)、笔记本电脑、以及手持设备等数据处理设备中,都出现了使用图形处理器(GPU)进行视频解码的趋势。其主要原因是因为GPU有强大的并行计算功能,适合视频解码,能够轻松实现几十兆码率的1080P视频的解码。因此在未来,GPU解码技术将成为视频解码的主流技术。
目前,H264视频编码格式已经被大量使用在视频编码技术中。H264视频编码格式是动态图象专家组第四版(MPEG-4,MovingPicturesExpertsGroup4)标准所定义的最新格式,同时也是目前技术含量最高、代表最新技术水平的视频编码格式之一。
对于H264码流的解码,目前的GPU是通过H264解码器来解码,主要过程包括对H264视频码流进行网络提取层(NAL,NetworkAbstractionLayer)解析以及条带头(Sliceheader)解析,计算出每一帧视频的显示顺序,利用GPU对视频帧进行解码,并按照所述显示顺序显示解码后的视频帧,从而播放出视频。
但是,目前的GPU对H264码流的解码方式中,主要存在以下缺陷:
由于网络传输错误或者其他原因,H264视频帧的条带头中会出现错误,或者会出现帧乱序的情况,在这种情况下,这种错误会扩散至后续码流的解码中和显示流程中,导致解码后的视频帧无法正确显示,并且在每两个即时解码刷新(IDR)图像之间出现周期性的显示错误。如果错误的视频帧比较多,超过了硬件可用的最大表面(Surface)数量,将导致后续视频帧无法解码显示。通常的GPUSurface在WindowsXP下数量为16,Windows7下数量为22。
总之,现有技术在视频帧的条带头中会出现错误,或者会出现帧乱序的情况下,视频播放的正确性和流畅性较低。
发明内容
有鉴于此,本发明的主要目的在于提供一种视频帧的解码处理方法和装置,以避免错误扩散,提高视频播放的正确性和流畅性。
本发明的技术方案是这样实现的:
一种视频帧的解码处理方法,在对当前读入帧的解码处理过程中,包括:
解析当前读入帧的信息,确定待显示帧序号以及缓存帧序号;
判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,并根据待显示帧序号显示对应的解码帧。
一种视频帧的解码处理装置,包括:
解析模块,用于解析当前读入帧的信息;
序号确定模块,用于根据解析出的信息确定待显示帧序号以及缓存帧序号;
错误判断处理模块,用于判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器解码对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,根据待显示帧序号显示对应的解码帧。
与现有技术相比,本发明所提供的本发明在对视频码流的处理过程中,通过解析和计算得到待显示帧(即当前应该显示的帧)的序号,此序号不仅被用于视频的显示,并且通过对此序号和最近显示过的帧的序号之间的分析,可以间接发现H264条带头中出现了错误或者视频帧出现了乱序的情况,并可及时通知软件的上层调用,即直接丢弃当前读入的视频帧,不再对Sliceheader后的宏模块(macroblocks)数据进行解码,并且不使用此视频帧计算得出的显示序号,不显示此视频帧。从而避免数据错误扩散到后续的解码流程和显示流程中,提高了视频播放的正确性和流畅性。尤其是在播放器使用GPU解码时,可以避免视频数据错误或者视频帧乱序带来的视频图像周期性错误和错误数据过多时,视频无法显示问题。
附图说明
图1为本发明所述方法的一种实施流程图;
图2为本发明所述装置的一种示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明的核心技术方案为:在对当前读入帧的解码处理过程中,包括:解析当前读入帧的信息,确定待显示帧序号以及缓存帧序号;之后判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,并根据待显示帧序号显示对应的解码帧。
下面以解码播放一个视频文件为例对本发明的方法进行说明,所述视频文件的视频帧格式为H264格式,对应解码器的解码方式为H264解码方式。针对读取到的视频文件每一读入帧都用下面的流程进行处理,所述读入帧是指从视频文件或者网络数据中读取到的一个视频帧。
图1为本发明所述方法的一种实施流程图。参见图1,该流程包括:
步骤101、读入的视频文件的H264码流的一个视频帧,开始对该帧进行处理,在本文中对这个当前读入的视频帧简称为当前读入帧。
步骤102、对当前读入帧的NAL进行解析得到条带头信息。
步骤103、对所述条带头信息进行解析。
步骤104、根据Sliceheader中的解析数据计算当前读入帧的序号(本文中所称的序号即显示序号,解码器最终按照该显示序号的顺序依次显示解码帧的图像),此处可以根据现有H264的计算方法计算当前读入帧的序号,本文不再赘述。
步骤105、判断当前读入帧是否为所读入的第一帧,如果是则执行步骤106,否则执行步骤109。
此处,所述所读入的第一帧是指从视频文件读取的第一帧,该第一帧根据用户的播放指令决定,如果用户的播放指令指示在视频的中间某一帧,则该帧即是所读入的第一帧。
步骤106、将当前读入帧序号作为缓存帧序号,即:缓存帧序号=当前读入帧序号。所述缓存帧是存储在缓存中的一个视频帧,用于辅助调整帧队列,缓存中最多存一帧。
步骤107、命令GPU的解码器解码当前读入帧。
步骤108、缓存所述缓存帧序号对应的帧,之后结束对当前读入帧的处理。
步骤109、判断当前读入帧序号是否小于缓存帧序号,如果是则执行步骤111,否则执行步骤110。
步骤110、将缓存帧序号作为待显示帧序号,即:待显示帧序号=缓存帧序号,之后将当前读入帧序号作为缓存帧序号。即:缓存帧序号=当前读入帧序号。之后执行步骤112。
步骤111、将当前读入帧序号作为待显示帧序号,即:待显示帧序号=当前读入帧序号。
上述其中步骤102至步骤111是所述解析当前读入帧的信息并确定待显示帧序号以及缓存帧序号的主要过程,接下来将利用上述信息进行检测Sliceheader数据错误、或者视频帧乱序的错误并进行相应的处理来避免错误扩散。
步骤112、判断待显示帧序号是否小于最近显示过的帧的序号,如果是则说明正在解码的当前读入帧Sliceheader存在数据错误、或者视频帧乱序,此时丢弃当前读入帧,结束本流程;否则执行步骤113。所述最近显示过的帧序号初始默认为0。
在本步骤中,在检测出错误或者乱序后,直接丢弃当前读入帧,不再对Sliceheader后的宏模块数据进行解码。并且不使用此视频帧计算得出的显示序号,不显示此视频帧。从而避免错误扩散到后续的解码流程和显示流程中,提高了视频播放的正确性和流畅性。
步骤113、将待显示帧序号作为最近显示过的帧序号,即:最近显示过的帧序号=待显示帧序号。
步骤114、命令GPU的解码器解码当前读入帧。
步骤115、缓存所述缓存帧序号对应的帧,根据所述待显示帧序号显示对应的帧,即显示待显示帧序号所标识的帧;之后结束对当前读入帧的处理。
本流程图说明的是一帧的数据处理情况,对于持续不断的解码流程,每一帧都将重复本流程。
在本发所述的方法中,整个流程都可以在GPU中执行。也可以是在CPU中执行,只是其中的对当前读入帧进行解码的步骤由GPU执行,这样可以充分发挥GPU的解码能力,提高整个流程的实行效率。
图2为本发明所述装置的一种示意图。参见图2,该装置包括:
解析模块201,用于解析当前读入帧的信息。
序号确定模块202,用于根据解析出的信息确定待显示帧序号以及缓存帧序号。
错误判断处理模块203,用于判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器解码对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,根据待显示帧序号显示对应的解码帧。
其中,所述解析模块201具体包括:
NAL解析模块211,用于对当前读入帧的NAL进行解析。
条带头解析模块212,用于对条带头信息进行解析。
所述序号确定模块202具体包括:
当前读入帧序号确定模块221,用于根据解析模块解析出的当前读入帧的信息,确定该当前读入帧的序号。
第一判断处理模块222,用于判断当前读入帧是否为所读入的第一帧,如果是则将当前读入帧的序号作为缓存帧序号,之后命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧;并结束对该当前读入帧的处理;否则,交由第二判断处理模块223处理。
第二判断处理模块223,用于判断当前读入帧的序号是否小于缓存帧序号,如果是,则将当前读入帧的序号作为待显示帧序号;否则,将缓存帧序号作为待显示帧序号,将当前读入帧的序号作为缓存帧序号。
上述装置可以在设置在GPU中执行。也可以设置在CPU中执行,只是其中的对当前读入帧进行解码、缓存所述缓存帧序号对应的解码帧、以及根据待显示帧序号显示对应的解码帧的操作要输出给GPU执行,CPU接收GPU的处理结果直接使用。这样可以充分发挥GPU的解码能力,提高整个流程的实行效率。
上述装置处理的视频帧格式为H264格式,所述解码器的解码方式为H264解码方式。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (8)
1.一种视频帧的解码处理方法,其特征在于,在对当前读入帧的解码处理过程中,包括:
解析当前读入帧的信息,确定待显示帧序号以及缓存帧序号;
判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,并根据待显示帧序号显示对应的解码帧;
所述确定待显示帧序号以及缓存帧序号的具体方式为:
解析当前读入帧的信息,确定该当前读入帧的序号;
在当前读入帧是所读入的第一帧的情况下,将当前读入帧的序号作为缓存帧序号,之后命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧;结束对该当前读入帧的处理;
在当前读入帧是所读入的非第一帧的情况下,判断当前读入帧的序号是否小于缓存帧序号,如果是,则将当前读入帧的序号作为待显示帧序号;否则,将缓存帧序号作为待显示帧序号,将当前读入帧的序号作为缓存帧序号。
2.根据权利要求1所述的方法,其特征在于,所述解析当前读入帧的信息,确定当前读入帧的序号的具体方式为:
对当前读入帧的网络提取层NAL进行解析得到条带头信息;
对所述条带头信息进行解析,再根据解析出的信息计算当前读入帧的序号。
3.根据权利要求1或2所述的方法,其特征在于,所述解码器为图形处理器中的解码器。
4.根据权利要求1或2所述的方法,其特征在于,所述的视频帧格式为H264格式,所述解码器的解码方式为H264解码方式。
5.一种视频帧的解码处理装置,其特征在于,包括:
解析模块,用于解析当前读入帧的信息;
序号确定模块,用于根据解析出的信息确定待显示帧序号以及缓存帧序号;
错误判断处理模块,用于判断所述待显示帧序号是否比最近显示过的帧的序号小,如果是则丢弃所述当前读入帧;否则,将待显示帧序号作为最近显示过的帧的序号,命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧,根据待显示帧序号显示对应的解码帧;
所述序号确定模块具体包括:
当前读入帧序号确定模块,用于根据解析模块解析出的当前读入帧的信息,确定该当前读入帧的序号;
第一判断子模块,用于判断当前读入帧是否为所读入的第一帧,如果是则将当前读入帧的序号作为缓存帧序号,之后命令解码器对该当前读入帧进行解码,缓存所述缓存帧序号对应的解码帧;并结束对该当前读入帧的处理;否则,交由第二判断子模块处理;
第二判断子模块,用于判断当前读入帧的序号是否小于缓存帧序号,如果是,则将当前读入帧的序号作为待显示帧序号;否则,将缓存帧序号作为待显示帧序号,将当前读入帧的序号作为缓存帧序号。
6.根据权利要求5所述的装置,其特征在于,所述解析模块具体包括:
NAL解析模块,用于对当前读入帧的NAL进行解析;
条带头解析模块,用于对条带头信息进行解析。
7.根据权利要求5或6所述的装置,其特征在于,所述解码器为图形处理器内的解码器。
8.根据权利要求5或6所述的装置,其特征在于,所述的视频帧格式为H264格式,所述解码器的解码方式为H264解码方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110296892.0A CN103037209B (zh) | 2011-09-30 | 2011-09-30 | 视频帧的解码处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110296892.0A CN103037209B (zh) | 2011-09-30 | 2011-09-30 | 视频帧的解码处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103037209A CN103037209A (zh) | 2013-04-10 |
CN103037209B true CN103037209B (zh) | 2016-05-04 |
Family
ID=48023634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110296892.0A Active CN103037209B (zh) | 2011-09-30 | 2011-09-30 | 视频帧的解码处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103037209B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108259904B (zh) * | 2016-12-29 | 2022-04-05 | 法法汽车(中国)有限公司 | 用于图像数据编码的方法、编码器和电子设备 |
CN111277576A (zh) * | 2020-01-14 | 2020-06-12 | 广州华多网络科技有限公司 | 绘制数据展示方法、装置、计算机设备和存储介质 |
CN112738525B (zh) * | 2020-12-11 | 2023-06-27 | 深圳万兴软件有限公司 | 视频处理方法、装置及计算机可读存储介质 |
CN113038156B (zh) * | 2021-03-04 | 2023-04-25 | 百果园技术(新加坡)有限公司 | 直播数据管理系统、方法、设备及存储介质 |
CN117376579A (zh) * | 2022-06-30 | 2024-01-09 | 中兴通讯股份有限公司 | 视频解码方法、云化机顶盒、物理端机顶盒、介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202923A (zh) * | 2006-12-15 | 2008-06-18 | 扬智科技股份有限公司 | 解码器中图像错误检测、恢复和隐藏的方法 |
CN101548550A (zh) * | 2006-10-16 | 2009-09-30 | 诺基亚公司 | 用于在多视点视频编码中实施有效的已解码缓存器管理的系统和方法 |
CN101611633A (zh) * | 2006-07-06 | 2009-12-23 | 汤姆逊许可证公司 | 用于针对多视角视频编码和解码解耦合帧号和/或图像顺序计数(poc)的方法和装置 |
CN101682760A (zh) * | 2007-04-13 | 2010-03-24 | 诺基亚公司 | 视频编码器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009260736A (ja) * | 2008-03-24 | 2009-11-05 | Fujitsu Ltd | エンコーディング装置、デコーディング装置、動画像処理方法、動画像処理システム、エンコーディングプログラムおよびデコーディングプログラム |
JP4935746B2 (ja) * | 2008-04-07 | 2012-05-23 | 富士通株式会社 | 動画像符号化装置、動画像復号化装置及びその符号化、復号化方法 |
-
2011
- 2011-09-30 CN CN201110296892.0A patent/CN103037209B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101611633A (zh) * | 2006-07-06 | 2009-12-23 | 汤姆逊许可证公司 | 用于针对多视角视频编码和解码解耦合帧号和/或图像顺序计数(poc)的方法和装置 |
CN101548550A (zh) * | 2006-10-16 | 2009-09-30 | 诺基亚公司 | 用于在多视点视频编码中实施有效的已解码缓存器管理的系统和方法 |
CN101202923A (zh) * | 2006-12-15 | 2008-06-18 | 扬智科技股份有限公司 | 解码器中图像错误检测、恢复和隐藏的方法 |
CN101682760A (zh) * | 2007-04-13 | 2010-03-24 | 诺基亚公司 | 视频编码器 |
Also Published As
Publication number | Publication date |
---|---|
CN103037209A (zh) | 2013-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103037209B (zh) | 视频帧的解码处理方法和装置 | |
TWI393065B (zh) | 操作訊框緩衝器管理員和解碼及顯示壓縮視訊資料的方法和系統 | |
CN102550025B (zh) | 用于对模式信息进行编码和解码的方法和设备 | |
RU2009117688A (ru) | Система и способ предоставления указаний о выводе кадров при видеокодировании | |
RU2009118280A (ru) | Маркировка виртуальных декодированных опорных изображений и список опорных изображений | |
CN112843676B (zh) | 数据处理方法、装置、终端、服务器及存储介质 | |
CN103369315A (zh) | 色度分量的帧内预测模式的编码、解码方法、设备及系统 | |
CN1937779A (zh) | 一种提高电视终端设备数字字幕数据处理效率的方法 | |
WO2018040427A1 (zh) | 屏幕界面共享方法和系统 | |
CN102857531B (zh) | 一种基于云计算的远程交互式系统 | |
Andersson | thesis | |
CN106878290B (zh) | 音视频的播放方法及装置 | |
JP2007306160A5 (zh) | ||
CN114339257A (zh) | 用于解码视频文件的方法及装置 | |
CN102857535B (zh) | 一种计算机处理单元、计算机网关、交互式系统 | |
CN102857534B (zh) | 一种基于云计算的远程交互方法 | |
US11272227B1 (en) | Buffer recovery in segmented media delivery applications | |
JP5321895B2 (ja) | 情報処理装置および方法 | |
CN101453656B (zh) | 视频编码、解码方法及装置和视频编解码系统 | |
CN101291402A (zh) | 一种功能界面图片组合使用的方法及装置 | |
CN116700943A (zh) | 一种视频播放系统、方法以及电子设备 | |
CN106791922B (zh) | 一种针对gpu硬件视频的解码容错方法 | |
CN101847394A (zh) | 用以解码及显示视讯文件的存储器映射方法及装置 | |
CN102857532B (zh) | 一种基于云计算节点的远程交互方法 | |
KR20200029347A (ko) | 비디오 컨텐츠의 하드웨어 기반 또는 소프트웨어 기반 디코딩을 검출하기 위한 구성 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |