CN103327312B - 视频帧的解码处理方法和装置 - Google Patents
视频帧的解码处理方法和装置 Download PDFInfo
- Publication number
- CN103327312B CN103327312B CN201210073996.XA CN201210073996A CN103327312B CN 103327312 B CN103327312 B CN 103327312B CN 201210073996 A CN201210073996 A CN 201210073996A CN 103327312 B CN103327312 B CN 103327312B
- Authority
- CN
- China
- Prior art keywords
- video
- frame
- read
- module
- continue
- 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
本发明公开了一种视频帧的解码处理方法和装置。包括预先设置停止解码变量,初始值为逻辑假;每读入视频帧后执行:A、判断停止解码变量是否为逻辑真,是则丢弃当前视频帧,继续运行当前的滤镜图像组件,并继续读入后续视频帧;否则执行步骤B;B、调用视频硬件加速接口利用GPU对当前视频帧进行解码,显示解码帧;C、判断视频硬件加速接口是否返回了系统锁定的错误码,是则设置停止解码变量为逻辑真,继续读入后续视频帧,同时执行步骤D;否则继续读入后续视频帧;D、监测操作系统是否发出系统解锁通知,若发出则将停止解码变量的值设置为逻辑假。利用本发明,可实现在系统锁定事件结束后,提高视频恢复显示的速度,降低对CPU等系统资源的消耗。
Description
技术领域
本发明涉及视频数据处理领域,尤其涉及一种视频帧的解码处理方法和装置。
背景技术
在视频数据处理领域,随着视频分辨率的不断提高和视频解码复杂度的提高,对于视频解码的计算消耗持续增加。采用中央处理器CPU进行视频解码要消耗大量的CPU计算资源,也有可能出现CPU计算资源无法满足高分辨率、高码率的需要。
最近几年,台式计算机(PC机)、笔记本电脑、以及手持设备等数据处理设备中,都出现了使用图形处理器(GPU)进行视频解码的趋势。其主要原因是因为GPU有强大的并行计算功能,适合视频解码,能够轻松实现几十兆码率的1080P视频的解码。因此在未来,GPU解码技术将成为视频解码的主流技术。
目前,H264视频编码格式已经被大量使用在视频编码技术中。H264视频编码格式是动态图象专家组第四版(MPEG-4,MovingPicturesExpertsGroup4)标准所定义的最新格式,同时也是目前技术含量最高、代表最新技术水平的视频编码格式之一。
目前在GPU解码中,通过调用视频硬件加速接口实现视频(H264,VC1)的解码。在常用的WINDOWS操作系统中,GPU对应的视频硬件加速接口为DXVA接口,DXVA接口中包含了在WINDOWS操作系统中进行视频硬件加速的处理标准规范流程,DXVA接口目前共有两个版本,分别是DXVA1.0和DXVA2.0。
但是,目前的通过调用视频硬件加速接口实现视频帧解码的过程中,存在以下缺陷:
GPU对视频帧的解码过程中,通常会建立滤镜图像(FilterGraph)组件,用于连接和控制滤镜(Filter),在解码播放视频帧时需要连接视频渲染滤镜(RenderFilter)进行视频渲染以显示视频。但是,一旦发生由于操作系统的系统锁定的事件导致的视频渲染失败的情况时,则现有技术的处理方法是断开当前渲染滤镜(RenderFilter)的连接甚至直接停止所述滤镜图像(FilterGraph)组件,这时视频播放停止;当所述系统锁定事件结束后,则重新连接RenderFilter或者重建FilterGraph组件,而重新连接RenderFilter或者重建FilterGraph组件需要CPU执行,且对于CPU来讲,重新连接RenderFilter或者重建FilterGraph组件是重量级的操作,非常耗费时间和CPU等系统资源。从而导致系统锁定事件结束后,出现视频恢复显示的速度非常慢、CPU等系统资源耗费高等缺陷。
发明内容
有鉴于此,本发明的主要目的在于提供一种视频帧的解码处理方法和装置,实现在系统锁定事件结束后,提高视频恢复显示的速度,降低对CPU等系统资源的消耗。
本发明的技术方案是这样实现的:
一种视频帧的解码处理方法,该方法预先设置停止解码变量,其初始值设为逻辑假;在每读入视频帧之后,执行下述操作:
A、判断所述停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的滤镜图像组件,并继续读入后续视频帧;否则执行步骤B;
B、调用视频硬件加速接口利用图像处理器GPU对当前视频帧进行解码,显示解码帧;
C、判断所述视频硬件加速接口是否返回了系统锁定的错误码,如果是则设置停止解码变量为逻辑真,继续读入后续视频帧,同时执行步骤D;否则继续读入后续视频帧;
D、监测操作系统是否发出系统解锁通知,如果发出则将所述停止解码变量的值设置为逻辑假。
一种视频帧的解码处理装置,包括:
设置模块,用于设置停止解码变量,其初始值设为逻辑假;
读取模块,用于从视频码流中读取视频帧,发送到第一判断处理模块;
第一判断处理模块,用于判断所述停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的滤镜图像组件,并通知所述读取模块继续读入后续视频帧;否则触发第二判断处理模块;
第二判断处理模块,用于调用视频硬件加速接口利用GPU对当前视频帧进行解码,显示解码帧;并判断所述视频硬件加速接口是否返回了系统锁定的错误码,如果是则通知所述设置模块将停止解码变量设置为逻辑真,通知所述读取模块继续读入后续视频帧,同时启动监测模块;否则通知所述读取模块继续读入后续视频帧;
监测模块,用于监测操作系统是否发出系统解锁通知,如果发出则通知所述设置模块将所述停止解码变量的值设置为逻辑假。
与现有技术相比,本发明预先设置停止解码变量,其初始值设为逻辑假;在每读入一个视频帧之后,判断所述停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的视频RenderFilter或FilterGraph组件,并继续读入下一视频帧;否则,调用视频硬件加速接口对当前视频帧进行解码,显示解码帧,并判断所述视频硬件加速接口是否返回了系统锁定的错误码,如果是则设置停止解码变量为逻辑真,继续读入下一视频帧,同时监测操作系统是否发出系统解锁通知,如果发出则将所述停止解码变量的值设置为逻辑假,如果所述视频硬件加速接口没有返回所述错误码,则继续读入下一视频帧。
因此本发明通过极为轻量级的操作处理,就可以实现在系统锁定事件发生时及时停止对视频帧的解码,但不停止运行当前的视频RenderFilter或FilterGraph组件,一旦系统解锁则可立即恢复对视频帧的解码和显示视频,而不必重新连接视频RenderFilter或重建FilterGraph组件,从而实现在系统锁定事件结束后,提高视频恢复显示的速度,降低对CPU等系统资源的消耗。
附图说明
图1为本发明所述视频帧的解码处理方法的一种流程图;
图2为本发明所述视频帧的解码处理装置的一种示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明所述视频帧解码处理方法的一种流程图。该方法可以由安装在操作系统内的视频播放器来执行。该方法需要预先在播放器中设置停止解码变量,并将其初始值设为逻辑假。
下面以解码播放一个视频文件为例对本发明的方法进行说明,所述视频文件的视频帧格式为H264格式,对应解码器的解码方式为H264解码方式。参见图1,在每读入一个或其他数量个(具体数量可以由开发者自行规定)视频帧之后,执行下述操作:
步骤101、判断所述停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的滤镜图像(FilterGraph)组件,并继续读入后续视频帧(如后一个视频帧或后续的规定数量的视频帧),之后返回步骤101;否则执行步骤102。
步骤102、调用视频硬件加速接口利用GPU对当前视频帧进行解码,显示解码帧。
所述视频硬件加速接口为GPU的加速接口,例如在WINDOWS操作系统中,所述GPU的加速接口为DXVA接口。DXVA接口中包含了在WINDOWS操作系统中进行视频硬件加速的处理标准规范流程,DXVA利用GPU对视频帧进行解码。在其他操作系统中,例如MacOSX操作系统中,也有具有相同功能的视频硬件加速接口。当操作系统出现异常时,视频硬件加速接口会向其调用者返回相应的错误码。例如DXVA接口在当操作系统发送系统锁定的事件时,将向视频播放器返回错误码0x887601c2。视频播放器通过DXVA接口返回的错误码可以判定发生了什么异常事件,例如通过错误码0x887601c2可以判定发生了系统锁定的事件,此时视频渲染将失败。
步骤103、判断所述视频硬件加速接口是否返回了系统锁定的错误码,如果是则设置停止解码变量为逻辑真,继续读入后续视频帧(如后一个视频帧或后续的规定数量的视频帧),返回步骤101,同时执行步骤104;否则继续读入后续视频帧(如后一个视频帧或后续的规定数量的视频帧)。
步骤104、监测操作系统是否发出系统解锁通知,如果发出则将所述停止解码变量的值设置为逻辑假。
在一种具体实施例中,所述监测操作系统是否发出系统解锁通知的具体方式为:播放器启动一个监测进程,监测操作系统的解锁通知接口,当操作系统发出解锁通知时捕获该解锁通知,将停止解码变量的值设置为逻辑假。从而可以及时得知系统锁定事件已经结束,可以继续正常地解码和播放视频。
在步骤101中,在停止解码变量为逻辑真时,所继续运行的当前的FilterGraph组件中包括视频渲染滤镜(RenderFilter),这样,就可以实现在系统锁定事件发生时及时停止对视频帧的解码,但不停止运行当前的视频RenderFilter甚至FilterGraph组件,一旦系统解锁则可立即恢复对视频帧的解码和显示视频,而不必重新连接视频RenderFilter或重建FilterGraph组件,从而实现在系统锁定事件结束后,提高视频恢复显示的速度,降低对CPU等系统资源的消耗。
所述步骤101及其后续步骤,可以是在每读入一个视频帧之后执行,或也可以是在每读入一个以上规定数量的视频帧之后执行,这样可以在一定程度上进一步节约计算资源。
图2为本发明所述视频帧的解码处理装置的一种示意图。该装置用于执行本发明的上述方法。具体包括:
设置模块205,用于设置停止解码变量,其初始值设为逻辑假。
读取模块201,用于从视频码流中读取视频帧,发送到第一判断处理模块202。
第一判断处理模块202,用于判断所述设置模块205中的停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的滤镜图像组件,并通知所述读取模块201继续读入后续视频帧,所继续运行的当前的滤镜图像组件中包括视频渲染滤镜;否则触发第二判断处理模块203。
第二判断处理模块203,用于调用视频硬件加速接口206(如在WINDOWS操作系统中为DXVA接口)利用GPU对当前视频帧进行解码,显示解码帧;并判断所述视频硬件加速接口206是否返回了系统锁定的错误码(如DXVA接口返回的系统锁定错误码为0x887601c2),如果是则通知所述设置模块205将停止解码变量设置为逻辑真,通知所述读取模块201继续读入后续视频帧,同时启动监测模块204;如果所述视频硬件加速接口206没有返回系统锁定的错误码,则通知所述读取模块201继续读入后续视频帧。
监测模块204,用于监测操作系统是否发出系统解锁通知,如果发出则通知所述设置模块205将所述停止解码变量的值设置为逻辑假。所述监测模块204可以属于一专门的监测进程,独立于上述读取模块201、第一判断处理模块202、和第二判断处理模块203所在的进程,用于与操作系统的解锁通知接口连接,当操作系统发出解锁通知时捕获该解锁通知。
所述读取模块可以每读入一个视频帧之后,就将读入的视频帧发送到所述第一判断处理模块;当然也可以每读入一个以上规定数量的视频帧之后,将读入的视频帧发送到所述第一判断处理模块,这样可以在一定程度上进一步节约计算资源。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种视频帧的解码处理方法,其特征在于,该方法预先设置停止解码变量,其初始值设为逻辑假;在每读入视频帧之后,执行下述操作:
A、判断所述停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的滤镜图像组件,并继续读入后续视频帧;否则执行步骤B;
B、调用视频硬件加速接口利用图像处理器GPU对当前视频帧进行解码,显示解码帧;
C、判断所述视频硬件加速接口是否返回了系统锁定的错误码,如果是则设置停止解码变量为逻辑真,继续读入后续视频帧,同时执行步骤D;否则继续读入后续视频帧;
D、监测操作系统是否发出系统解锁通知,如果发出则将所述停止解码变量的值设置为逻辑假。
2.根据权利要求1所述的方法,其特征在于,所述视频硬件加速接口为DXVA接口。
3.根据权利要求1所述的方法,其特征在于,所述步骤A中,在停止解码变量为逻辑真时,所继续运行的当前的滤镜图像组件中包括视频渲染滤镜。
4.根据权利要求1所述的方法,其特征在于,步骤D所述监测操作系统是否发出系统解锁通知的具体方式为:启动一个监测进程,监测操作系统的解锁通知接口,当操作系统发出解锁通知时捕获该解锁通知。
5.根据权利要求1所述的方法,其特征在于,所述步骤A及后续步骤,是在每读入一个视频帧或每读入一个以上规定数量的视频帧之后执行。
6.一种视频帧的解码处理装置,其特征在于,包括:
设置模块,用于设置停止解码变量,其初始值设为逻辑假;
读取模块,用于从视频码流中读取视频帧,发送到第一判断处理模块;
第一判断处理模块,用于判断所述停止解码变量是否为逻辑真,如果是则丢弃当前视频帧,继续运行当前的滤镜图像组件,并通知所述读取模块继续读入后续视频帧;否则触发第二判断处理模块;
第二判断处理模块,用于调用视频硬件加速接口利用GPU对当前视频帧进行解码,显示解码帧;并判断所述视频硬件加速接口是否返回了系统锁定的错误码,如果是则通知所述设置模块将停止解码变量设置为逻辑真,通知所述读取模块继续读入后续视频帧,同时启动监测模块;否则通知所述读取模块继续读入后续视频帧;
监测模块,用于监测操作系统是否发出系统解锁通知,如果发出则通知所述设置模块将所述停止解码变量的值设置为逻辑假。
7.根据权利要求6所述的装置,其特征在于,所述视频硬件加速接口为DXVA接口。
8.根据权利要求6所述的装置,其特征在于,所述第一判断处理模块在停止解码变量为逻辑真时,所继续运行的当前的滤镜图像组件中包括:视频渲染滤镜。
9.根据权利要求6所述的装置,其特征在于,所述监测模块为一监测进程,该监测进程独立于所述读取模块、第一判断处理模块、和第二判断处理模块所在的进程,用于与操作系统的解锁通知接口连接,当操作系统发出解锁通知时捕获该解锁通知,并将所述停止解码变量的值设置为逻辑假。
10.根据权利要求6所述的装置,其特征在于,所述读取模块具体是每读入一个视频帧或每读入一个以上规定数量的视频帧之后,将读入的视频帧发送到所述第一判断处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210073996.XA CN103327312B (zh) | 2012-03-20 | 2012-03-20 | 视频帧的解码处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210073996.XA CN103327312B (zh) | 2012-03-20 | 2012-03-20 | 视频帧的解码处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103327312A CN103327312A (zh) | 2013-09-25 |
CN103327312B true CN103327312B (zh) | 2016-04-20 |
Family
ID=49195813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210073996.XA Active CN103327312B (zh) | 2012-03-20 | 2012-03-20 | 视频帧的解码处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103327312B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109474833B (zh) * | 2018-11-28 | 2020-11-27 | 广州华多网络科技有限公司 | 一种网络直播的方法、相关装置和系统 |
CN115629876B (zh) * | 2022-10-19 | 2023-07-28 | 慧之安信息技术股份有限公司 | 一种基于可扩展硬件加速的智能视频处理方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577110A (zh) * | 2009-05-31 | 2009-11-11 | 腾讯科技(深圳)有限公司 | 视频播放方法及视频播放器 |
CN101960853A (zh) * | 2008-02-26 | 2011-01-26 | 高通股份有限公司 | 视频解码器错误处置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2002051162A1 (ja) * | 2000-12-20 | 2004-04-22 | 三菱電機株式会社 | 動画像復号方法および動画像復号装置 |
-
2012
- 2012-03-20 CN CN201210073996.XA patent/CN103327312B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101960853A (zh) * | 2008-02-26 | 2011-01-26 | 高通股份有限公司 | 视频解码器错误处置 |
CN101577110A (zh) * | 2009-05-31 | 2009-11-11 | 腾讯科技(深圳)有限公司 | 视频播放方法及视频播放器 |
Also Published As
Publication number | Publication date |
---|---|
CN103327312A (zh) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6333965B2 (ja) | ウェイクロック使用を追跡する技術 | |
CN104837052A (zh) | 播放多媒体数据的方法及装置 | |
CN103702124B (zh) | 一种转码加速方法和转码器 | |
CN101888570A (zh) | 电视机售后故障维修系统及其方法 | |
CN103260021A (zh) | 一种视频解码方法和装置 | |
CN104636435A (zh) | 云终端录屏方法 | |
CN101883003A (zh) | 一种计算机操作系统强制运行方法 | |
CN104380722A (zh) | 使用矩阵式条形码与端点通信 | |
JP2021108186A (ja) | 画像認識方法、装置、電子デバイス、記憶媒体、及びプログラム | |
CN112235597A (zh) | 流媒体直播音视频同步保护方法、装置、计算机设备 | |
CN103327312B (zh) | 视频帧的解码处理方法和装置 | |
CN109600619A (zh) | 一种解码硬件的分时复用方法 | |
CN107996026A (zh) | 多操作系统多媒体编解码方法、装置及电子设备 | |
US10841621B2 (en) | Fault recovery of video bitstream in remote sessions | |
CN104053002A (zh) | 视频解码方法和视频解码装置 | |
CN106101830A (zh) | 一种基于区域检测和应用检测相结合的视频流检测方法 | |
CN111726554B (zh) | 图像处理方法、装置、设备和存储介质 | |
CN106791855B (zh) | 一种降低坐席管理系统成本的方法及系统 | |
CN103037209A (zh) | 视频帧的解码处理方法和装置 | |
CN110855658B (zh) | 一种服务登录方法、装置、设备和存储介质 | |
CN111966508A (zh) | 一种消息的批量发送方法、装置、计算机设备和存储介质 | |
US20110025698A1 (en) | Process management system | |
CN103974062A (zh) | 图像显示装置、图像显示系统和图像显示方法 | |
CN204131646U (zh) | 一种数字视频信号解码器 | |
CN106254811A (zh) | 移动终端及其视频通话的控制方法和系统 |
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 |