视频解码处理方法及装置与流程

文档序号:13476594阅读:340来源:国知局
视频解码处理方法及装置与流程

本发明涉及视频编解码技术,尤其涉及一种视频解码处理方法及装置。



背景技术:

现代的编解码标准支持的视频分辨率越来越高,高清视频层出不穷。同时,实际应用中对于实时解码的需求日趋热烈。这些都对视频解码器的实现带来了困难。一方面,解码器解码超高清视频中的一幅图像时所占用的内存十分巨大;另外一方面,为了提高速度,解码器也会尝试采用更多解码线程进行并行解码。所以在解码器正常运行的过程中,大量开辟内存的情况经常发生。

现有技术中,解码图像缓冲区(decodedpicturebuffer,dpb)可以用来管理图像解码信息内存,图像解码信息内存简称图像内存,用于存放一个解码线程解码一幅图像时所需的所有信息。按照dpb技术,当其中保存的图像内存不再被参考后且已经输出后,这部分内存会被直接释放;当解码一副新图像时,又会重新开辟同样大小的一块内存。解码结束时,解码器会按照显示顺序输出解码图像缓冲区中所有未输出的图像,并释放解码图像缓冲区中所有的图像内存。

现有技术的不足之处在于,频繁的开辟以及释放内存,不仅耗费时间,而且会产生许多内存碎片,不利于内存的管理,导致视频解码的效率低下。



技术实现要素:

本发明提供一种视频解码处理方法及装置,用以解决现有技术中解码时频繁开辟以及释放内存导致视频解码的效率低下的技术问题。

本发明提供一种视频解码处理方法,包括:

判断回收区中是否有图像内存;

若所述回收区中有图像内存,则从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码;

解码完成后,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中。

进一步地,所述方法还包括:

若所述回收区中没有图像内存,则开辟新的图像内存;

在所述新的图像内存中对当前所需解码的图像进行解码。

进一步地,所述方法还包括:

若开辟新的图像内存失败,则判断是否还有其它没有结束的解码线程;

若有,则等待其它解码线程结束后,从所述回收区取出图像内存,并对当前需解码的图像进行解码。

进一步地,在判断是否还有其它解码线程之后,还包括:

若不存在其它解码线程,则停止解码操作。

进一步地,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中,包括:

将所述图像内存放入解码图像缓冲区中;

判断所述图像内存中的解码信息是否已输出且不再被参考;

若是,则将所述图像内存放入回收区。

本发明还提供一种视频解码处理装置,包括:

判断模块,用于判断回收区中是否有图像内存;

解码模块,用于在所述回收区中有图像内存时,从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码;

移动模块,用于解码完成后,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中。

进一步地,所述解码模块还用于:

在所述回收区中没有图像内存时,开辟新的图像内存,在所述新的图像内存中对当前所需解码的图像进行解码。

进一步地,所述解码模块还用于:

若开辟新的图像内存失败,则判断是否还有其它没有结束的解码线程;

若有,则等待其它解码线程结束后,从所述回收区取出图像内存,并对当前需解码的图像进行解码。

进一步地,所述解码模块还用于:

若不存在其它解码线程,则停止解码操作。

进一步地,所述移动模块,具体用于:

将所述图像内存放入解码图像缓冲区中;

判断所述图像内存中的解码信息是否已输出且不再被参考;

若是,则将所述图像内存放入回收区。

本发明提供的视频解码处理方法及装置,通过判断回收区内中是否有图像内存,在所述回收区中有图像内存时,从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中,供后续图像解码使用,能够有效减少图像内存的开辟和释放,节省了时间和资源,减少了内存碎片的产生,提高了视频解码的效率。

附图说明

图1为本发明实施例一提供的视频解码处理方法的流程图;

图2为本发明实施例一提供的视频解码处理方法中四幅图像的依赖关系示意图;

图3本发明实施例一提供的视频解码处理方法中解码图像a时的示意图;

图4本发明实施例一提供的视频解码处理方法中解码图像b时的示意图;

图5本发明实施例一提供的视频解码处理方法中解码图像c时的示意图;

图6本发明实施例一提供的视频解码处理方法中解码图像d时的示意图;

图7为本发明实施例二提供的视频解码处理方法的流程图;

图8为本发明实施例二提供的视频解码处理方法中四幅图像的依赖关系示意图;

图9为本发明实施例二提供的视频解码处理方法中解码图像c时的示意图;

图10为本发明实施例二提供的视频解码处理方法中解码图像b后的示意图;

图11为本发明实施例二提供的视频解码处理方法中解码图像d时的示意图;

图12为本发明实施例三提供的视频解码处理装置的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

实施例一

本发明实施例一提供一种视频解码处理方法。图1为本发明实施例一提供的视频解码处理方法的流程图。如图1所示,本实施例中的方法,可以包括:

步骤101、判断回收区中是否有图像内存。

本实施例提供的视频解码处理方法中,可以在解码器中设置一个回收区,用来回收本来应该释放掉的图像内存。由于解码器在解码同一个视频的每一幅图像的时候,所需开辟的图像内存是一样大小的,所以对一幅图像进行解码时,可以优先从回收区中取出图像内存而不需要重新开辟图像内存。这样可以大大减少内存开辟和释放的次数,从而提升解码效率并减少内存碎片。

相比于现有技术中需要使用图像内存时开辟内存、用完后释放内存的方案来说,本实施例提供的方案,在用完图像内存后把图像内存放入回收区,当下次需要图像内存以解码图像时,可以直接从回收区中取出一块图像内存使用,只有当回收区为空时才重新开辟图像内存。

在本步骤中,当需要对视频中的一幅图像进行解码时,可以首先判断回收区内中是否有图像内存。判断回收区内是否有图像内存,具体可以为判断回收区内是否存储有图像内存对应的指针即指向所述图像内存的指针。

步骤102、若所述回收区中有图像内存,则从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码。

本实施例中,从所述回收区取出图像内存,具体可以指从所述回收区获取所述图像内存对应的指针。在获取所述图像内存对应的指针之后,可以在所述图像内存中对当前需要进行解码的图像进行解码。解码完成后,该图像的解码信息保存在所述图像内存中。

若所述回收区中没有图像内存,则可以开辟新的图像内存,并在所述新的图像内存中对当前所需解码的图像进行解码。具体地,开辟新的图像内存,可以是指与操作系统进行交互,获取操作系统为新的图像内存分配的指针。

若所述回收区中没有图像内存,并且开辟新的图像内存失败,则可以直接停止解码。

步骤103、解码完成后,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中。

本实施例中,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中,可以包括:

将所述图像内存放入解码图像缓冲区中;

判断所述图像内存中的解码信息是否已输出且不再被参考;若是,则将所述图像内存放入回收区。

具体地,将所述图像内存放入解码图像缓冲区中,可以是指将所述图像内存对应的指针存入所述解码图像缓冲区中。不再使用的图像内存,可以是指其中存储的解码信息已经输出且不再被其它图像参考的图像内存。判断解码信息是否已经输出且不再被其它图像参考属于现有技术,此处不再赘述。

所述更新解码图像缓冲区,除了包括将内存图像放入解码图像缓冲区中以及判断图像内存的解码信息是否已经输出且不再被其它图像参考,还可以包括其它步骤,本实施例对此不作限制。

在实际应用中,在解码任一图像前,需要为其开辟图像内存。此时可以首先检查回收区是否为空:如果回收区不为空,说明回收区中有图像内存,则可以直接从回收区取一块图像内存供该图像解码使用;如果回收区为空,说明回收区中没有图像内存,则直接为该图像开辟新的图像内存。如果开辟图像内存失败,则退出解码。解码完成后,可以将图像内存放入解码图像缓冲区中,并将解码图像缓冲区中不再使用的图像内存放入回收区。随后,如果还有其它图像待解码,则重复前述步骤,进行下一幅图像的解码,否则结束解码。下面举例说明。

假设视频中有四幅图像a、b、c、d,实际播放顺序是a、b、c、d。图2为本发明实施例一提供的视频解码处理方法中四幅图像的依赖关系示意图。其中一幅图像通过“—>”指向另一幅图像,代表该图像在解码时依赖(或参考)另一幅图像。

如图2所示,图像c—>图像b表示图像c解码时依赖图像b,图像d—>图像c表示图像d解码时依赖图像c。

在解码过程中,可以按照a、b、c、d四幅图像的顺序单线程依次解码。

图3本发明实施例一提供的视频解码处理方法中解码图像a时的示意图。如图3所示,在解码图像a时,由于此时回收区为空,所以为图像a开辟图像内存1,供解码线程对图像a解码。当图像a解码完毕后,根据dpb技术输出图像a。由于图像a已输出且不需要被其他图像参考,所以其使用过的图像内存1被放入回收区之中。

图4本发明实施例一提供的视频解码处理方法中解码图像b时的示意图。如图4所示,按照解码顺序,当图像b需要解码的时候,会检查回收区中有没有可用的图像内存。此时回收区中存放有图像内存1,于是从回收区中取出图像内存1,供解码图像b使用。

当图像b完成了解码之后,图像b的图像内存(即图像内存1)会被放入解码图像缓冲区。根据dpb技术,输出图像b。由于图像c需要参考图像b,图像b的图像内存(即图像内存1)暂时不会被移至回收区中。

图5本发明实施例一提供的视频解码处理方法中解码图像c时的示意图。如图5所示,图像b完成了解码之后,解码线程继续解码,当图像c需要图像内存的时候,回收区中不存在图像内存,于是解码线程会申请一块新的图像内存2给图像c使用。同时,由于图像c需要参考图像b,所以会从解码图像缓冲区中获得图像b的图像内存(即图像内存1)进行参考。

当图像c解码完毕后,图像c的图像内存(即图像内存2)被放入解码图像缓冲区中,根据dpb技术,输出图像c。由于图像c需要被图像d参考,因此图像c的图像内存(即图像内存2)暂时不会被移至回收区。图像b由于已输出且不再被参考,所以其图像内存(即图像内存1)被从解码图像缓冲区移入回收区中。

图6本发明实施例一提供的视频解码处理方法中解码图像d时的示意图。如图6所示,当解码线程需要对图像d进行解码的时候,发现回收区中非空,于是从回收区取出一块图像内存(图像内存1)使用,并参考解码图像缓冲区中的图像c的图像内存(图像内存2)。

最后,当图像d解码完成后,没有待解码图像了,根据dpb技术,输出图像d。随后图像d的图像内存(即图像内存1)以及其参考的图像c图像内存(即图像内存2)都被解码器放入回收区中。之后,回收区中的所有图像内存会被依次释放,直到全空。解码结束。

本实施例提供的视频解码处理方法,通过判断回收区内中是否有图像内存,在所述回收区中有图像内存时,从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中,供后续图像解码使用,能够有效减少图像内存的开辟和释放,节省了时间和资源,减少了内存碎片的产生,提高了视频解码的效率。

本发明实施例一所述的方法,可以应用于单线程的视频解码,也可以用于多线程的视频解码。

实施例二

本发明实施例二提供一种视频解码处理方法。本实施例是在实施例一提供的技术方案的基础上,提供了一种专用于多线程的方法,当开辟内存失败时,可以等待其它线程结束后重新开辟内存。

图7为本发明实施例二提供的视频解码处理方法的流程图。如图7所示,本实施例中的视频解码处理方法,可以包括:

步骤201、判断回收区中是否有图像内存。

本实施例中的步骤201的具体实现原理与实施例一中的步骤101类似,此处不再详述。

在步骤201之后,若判断所述回收区中有图像内存,则从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码。其具体实现方式可参照实施例一。

步骤202、若所述回收区中没有图像内存,则开辟新的图像内存。

若开辟新的图像内存成功,则可以在所述新的图像内存中对当前所需解码的图像进行解码。

步骤203、若开辟新的图像内存失败,则判断是否还有其它没有结束的解码线程。

判断是否还有其它没有结束的解码线程属于现有技术,此处不作详述。

步骤204、若有,则等待其它解码线程结束后,从所述回收区取出图像内存,并对当前需解码的图像进行解码。

具体地,在其它解码线程结束后,应用到的图像内存可能会存入回收区中,此时,可以从回收区中取出图像内存,用于本线程的解码。

在开辟新的图像内存失败后,若不存在其它解码线程,则可以直接停止解码操作。

步骤205、解码完成后,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中。

本实施例中的步骤205的具体实现原理与实施例一中的步骤103类似,此处不再赘述。

当所有解码线程都结束后,可以按序输出解码图像缓冲区中未输出的图像,将解码图像缓冲区中的所有图像内存放入回收区,并在所述回收区中释放掉所有图像内存。

在实际应用中,在对一幅图像进行解码时,可以首先从回收区取出一块图像内存以进行解码,若回收区没有图像内存,则可以开辟新的图像内存,若开辟新的图像内存失败,则可以判断是否还有其它解码线程没有结束,若有,则等待其它解码线程结束后,重新尝试从回收区获取图像内存或者开辟新的图像内存,以实现对所述图像的解码。随后,如果还有其它图像待解码,则可以按照前述方法开始下一幅图像的解码,否则结束解码。下面举例说明。

以三线程为例。假设存在四幅图像a、b、c、d,线程1、2、3,实际播放顺序为a、b、c、d。图8为本发明实施例二提供的视频解码处理方法中四幅图像的依赖关系示意图。如图8所示,图像c的解码依赖图像b,图像d的解码依赖图像c。

在解码过程中,首先,解码线程1判断回收区为空,开辟了图像内存1,在图像内存1中对图像a进行解码,解码线程2判断回收区为空,开辟了图像内存2,在图像内存2中对图像b进行解码。

然后,解码线程3判断回收区为空,开始请求开辟图像内存,但是此时,系统中突然内存不足,开辟新的图像内存失败。则解码线程3可以判断是否还有其它线程没有结束,此时解码线程1和解码线程2均未结束,解码线程3可以等待其中一个解码线程结束。

图9为本发明实施例二提供的视频解码处理方法中解码图像c时的示意图。如图9所示,当解码线程1解码完图像a之后,根据dpb技术,输出图像a。由于图像a已输出且不被其他图像参考,可以将图像a的图像内存(图像内存1)放入回收区中。此时,解码线程3就可以重新利用解码线程1使用过的图像内存(图像内存1),来解码图像c了,无需重新开辟新的图像内存。

随后,解码线程1可以开始解码图像d。此时,回收区为空,不过系统中内存充足,线程1成功开辟图像内存3,用于解码图像d。但是此时图像d参考的图像c尚未解码完毕,所以解码线程1会等待图像c解码完之后再解码图像d。

图10为本发明实施例二提供的视频解码处理方法中解码图像b后的示意图。如图10所示,解码线程2解码完图像b后,根据dpb技术,输出图像b。但是此时由于图像b仍然被图像c参考,所以图像b的图像内存(图像内存2)没有被放入回收区,而是移入解码图像缓冲区,供解码线程3解码图像c时参考。

图11为本发明实施例二提供的视频解码处理方法中解码图像d时的示意图。如图11所示,解码线程3完成图像c的解码,根据dpb技术,输出图像c。图像b由于已输出且没有被其它图像参考,所以其图像内存(图像内存2)被从解码图像缓冲区中移入回收区。图像c仍然被图像d参考所以其图像内存(图像内存1)移入解码图像缓冲区。由于图像c解码完成,且其图像内存保存在解码图像缓冲区中,解码线程1便参考图像c的图像内存(图像内存1),继续解码图像d。

最后,线程1解码完图像d,由于没有图像需要解码了,根据dpb技术,输出图像d。随后将图像d的图像内存(图像内存3)和图像c的图像内存(图像内存1)移入回收区。随后,解码器将依次释放回收区中的内存,直到其全空为止。解码结束。

本实施例提供的视频解码处理方法,在回收区中没有图像内存时,开辟新的图像内存,并在所述新的图像内存中对当前所需解码的图像进行解码,若开辟新的图像内存失败,则判断是否还有其它没有结束的解码线程,并等待其它解码线程结束后,从所述回收区取出图像内存,对当前需解码的图像进行解码,能够在多线程下遇到内存不足的情况时,通过降低当前的解码线程数来维持解码器稳定运行,提高了解码器的鲁棒性。

实施例三

本发明实施例三提供一种视频解码处理装置。图12为本发明实施例三提供的视频解码处理装置的结构框图。如图12所示,本实施例中的装置,可以包括:

判断模块301,用于判断回收区中是否有图像内存;

解码模块302,用于在所述回收区中有图像内存时,从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码;

移动模块303,用于解码完成后,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中。

本实施例中的视频解码处理装置,可以用于执行实施例一所述的视频解码处理方法,其具体实现原理与实施例一类似,此处不再赘述。

本实施例提供的视频解码处理装置,通过判断回收区内中是否有图像内存,在所述回收区中有图像内存时,从所述回收区取出图像内存,并在所取出的图像内存中对当前需解码的图像进行解码,根据所述图像内存更新解码图像缓冲区,并将解码图像缓冲区中不再使用的图像内存移至回收区中,供后续图像解码使用,能够有效减少图像内存的开辟和释放,节省了时间和资源,减少了内存碎片的产生,提高了视频解码的效率。

进一步地,所述解码模块302还可以用于:

在所述回收区中没有图像内存时,开辟新的图像内存,在所述新的图像内存中对当前所需解码的图像进行解码。

进一步地,所述解码模块302还可以用于:

若开辟新的图像内存失败,则判断是否还有其它没有结束的解码线程;

若有,则等待其它解码线程结束后,从所述回收区取出图像内存,并对当前需解码的图像进行解码。

进一步地,所述解码模块302还可以用于:

若不存在其它解码线程,则停止解码操作。

进一步地,所述移动模块303,具体可以用于:

将所述图像内存放入解码图像缓冲区中;

判断所述图像内存中的解码信息是否已输出且不再被参考;

若是,则将所述图像内存放入回收区。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1