CN101841717B - 一种解码的实现方法、软件解码器和解码设备 - Google Patents

一种解码的实现方法、软件解码器和解码设备 Download PDF

Info

Publication number
CN101841717B
CN101841717B CN 201010168682 CN201010168682A CN101841717B CN 101841717 B CN101841717 B CN 101841717B CN 201010168682 CN201010168682 CN 201010168682 CN 201010168682 A CN201010168682 A CN 201010168682A CN 101841717 B CN101841717 B CN 101841717B
Authority
CN
China
Prior art keywords
hardware
decoding
decoder
virtual frames
deposit
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.)
Expired - Fee Related
Application number
CN 201010168682
Other languages
English (en)
Other versions
CN101841717A (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.)
Li Jingjing
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN 201010168682 priority Critical patent/CN101841717B/zh
Publication of CN101841717A publication Critical patent/CN101841717A/zh
Application granted granted Critical
Publication of CN101841717B publication Critical patent/CN101841717B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种解码的实现方法、软件解码器和解码设备。本发明实施例的软件解码器在对编码图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,从而可以无需等待硬件解码器解码结束,即可解码下一帧编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率。

Description

一种解码的实现方法、软件解码器和解码设备
技术领域
本发明涉及通信技术领域,具体涉及一种解码的实现方法、软件解码器和解码设备。
背景技术
随着通信带宽的不断增加,人们对沟通的需求也不断丰富,继语音之后,视频传输已经成为了通信领域新的亮点,为了使得视频便于传输,视频压缩技术也随之出现,H.264便是其中的一种。被压缩的视频到达终端后,需要进行相应的解码才能进行播放,为了提高解码速度,目前一般采用嵌入式中央处理器(CPU,Central Processing Unit)结合专用解码加速单元的H.264解码器架构进行解码,其中,加速单元一般为数字信号处理(DSP,Digital Signal Processing)或特定用途集成电路(ASIC,Application Specific Integrated Circuit)。为了描述方便,以下将利用CPU进行解码的部分称为软件解码,利用加速单元进行解码的部分称为硬件解码。
由于解码工作是由软件解码器和硬件解码器协同完成的,因此软件解码器和硬件解码器之间必然存在着交互,根据它们交互的情况,可以将H.264解码分为串行和并行两种方式。其中,现有的H.264并行解码方案主要可以如下:
软件解码器解码编码图像0,然后配置并启动硬件解码器以对编码图像0作进一步解码,软件解码器在等待硬件解码器解码编码图像0的过程中,可以提前对下一个编码图像,比如对编码图像1进行解码,然后等待硬件解码器完成对编码图像0的解码后,软件解码器再继续对编码图像0进行处理,对编码图像0处理完成后,软件解码器配置并启动硬件解码器以对编码图像1进行解码,同理,等待硬件解码器解码编码图像1的过程中,可以提前对编码图像2进行解码,然后等待硬件解码器完成对编码图像1的解码后,软件解码器再继续对编码图像1进行处理,处理完成后,再进入解码编码图像2的处理流程,依此类推。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有技术中软件解码器和硬件解码器并没有达到完全并行,当软件解码器解码时间小于硬件解码器解码时间时,就会出现软件解码器等待硬件解码器的情况,反之,当硬件解码器解码时间小于软件解码器解码时间时,则出现硬件解码器等待软件解码器的情况,不利于提高解码效率。
发明内容
本发明实施例提供一种解码的实现方法、软件解码器和解码设备,可以较好地实现软件解码器和硬件解码器并行处理,提高解码效率。
一种解码的实现方法,包括:
对获取到的编码图像进行初级处理,所述初级处理为:对获取到的编码图像进行软件解码,使用虚拟帧存(VFB,Virtual Frame Buffer)来模拟硬件解码后的解码图像缓存(DPB,Decoded Picture Buffer)操作,得到DPB操作的结果;
根据DPB操作的结果申请实际帧存(RFB,Real Frame Buffer),并记录虚拟帧存和实际帧存的映射关系;
根据所述虚拟帧存和实际帧存的映射关系配置并启动硬件解码器,以对获取到的编码图像进行硬件解码。
一种软件解码器,包括:
解码单元,用于对获取到的编码图像进行初级处理,所述初级处理为:对获取到的编码图像进行软件解码,使用虚拟帧存来模拟硬件解码后的DPB操作,得到DPB操作的结果;
驱动单元,用于根据解码单元得到的DPB操作的结果申请实际帧存,并记录虚拟帧存和实际帧存的映射关系,根据虚拟帧存和实际帧存的映射关系配置并启动硬件解码器,以对获取到的编码图像进行硬件解码。
一种解码设备,包括硬件解码器和本发明实施例提供的任一种软件解码器;
硬件解码器,用于接受软件解码器的配置及启动,并对获取到的编码图像进行硬件解码。
本发明实施例的软件解码器在对编码图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,从而可以无需等待硬件解码器解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的解码的实现方法的方法流程图;
图2是本发明实施例二提供的解码的实现方法的方法流程图;
图3a是本发明实施例中码流的示意图;
图3b是本发明实施例三提供的解码的实现方法的方法流程图;
图4是本发明实施例四提供的解码的实现方法的方法流程图
图5a是本发明实施例提供的软件解码器的结构示意图;
图5b是本发明实施例提供的软件解码器的另一结构示意图;
图6是本发明实施例提供的解码设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种解码的实现方法、软件解码器和解码设备。以下分别进行详细说明。
实施例一、
本实施例将从软件解码器的角度进行描述。该软件解码器用于实现软件解码以及软件驱动硬件解码器等功能,而硬件解码器则实现硬件解码功能。
一种解码的实现方法,如图1所示,具体流程可以如下:
101、对获取到的这一帧编码图像进行初级处理;该初级处理具体为:对获取到的编码图像进行软件解码,使用虚拟帧存来模拟硬件解码后的DPB操作,得到DPB操作的结果。
例如,为了使得软件解码和硬件解码的分工更为合理,可以将需要大量逻辑操作的条带头(slice header)交由软件解码器进行解码,而将数据密集的条带数据(slice data)交由硬件解码器进行解码,如下:
软件解码器对获取到的编码图像进行软件解码具体可以包括:解析获取到的编码图像的条带头,并生成解码消息,缓存获取到的编码图像的条带数据到解码消息中;
硬件解码器对获取到的编码图像进行硬件解码具体可以包括:对获取到的编码图像的条带数据进行解码。
当然,也可以将条带数据交由软件解码器进行解码,而将条带数据头交由硬件解码器进行解码,只是这种处理方式相对而言,性能略逊一筹。
其中,解码消息主要用于存放软件解码器和硬件解码器之间交互的信息,比如,除了可以将获取到的编码图像的条带数据缓存到解码消息中之外,还可以将DPB操作的结果也缓存在解码消息中。
该DPB操作的结果具体用于指示:存放硬件解码后图像的虚拟帧存(Decode VFB)、用于参考的虚拟帧存(Reference VFB)、以及硬件解码后应该输出的虚拟帧存(Output VFB)。
当然,如果虚拟帧存和实际帧存的映射关系是动态变化的,那么,在硬件解码后还需要对虚拟帧存和实际帧存的映射关系进行维护,比如删除已经不需要的虚拟帧存等等,因此,在该应用场景下,DPB操作的结果还可以用于指示:硬件解码后应该删除的虚拟帧存(Remove VFB),这样,在硬件解码后,系统才可以据此删除相应的虚拟帧存。
需说明的是,本发明实施例中的实际帧存指的是真正存放解码图像数据的内存;虚拟帧存指的是用来区分实际帧存的标识,一般使用实际帧存的标识(ID,Identity)来表示。而DPB操作则指的是H.264解码协议中所要求的每解出一幅编码图像后所需要执行的操作,系统可以通过执行DPB操作来确定哪些解码图像需要输出,哪些解码图像需要用作参考,以及哪些解码图像不再用作参考,若是已输出且不用作参考的解码图像,则表明该解码图像可以从DPB中移除,以释放空间存放新的解码图像。
102、根据DPB操作的结果申请实际帧存,并记录虚拟帧存和实际帧存的映射关系。
103、根据虚拟帧存和实际帧存的映射关系配置并启动硬件解码器,以对获取到的编码图像进行硬件解码。
例如,如果在步骤101中,软件解码器已经解析了编码图像的条带头,并生成解码消息,然后缓存条带数据到解码消息中,且在步骤102中,已经在虚拟帧存映射表中记录了虚拟帧存和实际帧存的映射关系,则此时步骤103具体可以为:
根据解码消息将条带头和条带数据配置给硬件解码器,根据解码消息和虚拟帧存映射表将Decode VFB对应的实际帧存、以及Reference VFB对应的实际帧存配置给硬件解码器,然后启动硬件解码器。
在硬件解码的过程中,软件解码器获取码流中后续的编码图像,并对后续的编码图像进行初级处理;
例如,在硬件解码的过程中,软件解码器获取码流中的下一帧编码图像,并对该下一帧编码图像进行初级处理,可参见步骤102,在对该下一帧编码图像进行初级处理完毕后,继续再获取该下一帧编码图像的下一帧编码图像,并对该下一帧编码图像的下一帧编码图像进行初级处理,等等,依此类推,即硬件解码的进度不会对软件解码的过程造成影响,在硬件解码的过程中,软件解码器可以对多帧编码图像进行软件解码。
由于后续对码流中其他帧的处理与此流程相同,所以在此不再赘述。
在硬件解码完成之后,可以根据解码消息,将Output VFB对应的实际帧存中的解码图像输出。进一步的,为了释放存放空间,还可以根据解码消息,将Remove VFB从虚拟帧存映射表中删除,并释放对应的实际帧存。
可选的,在步骤101之前还可以包括:获取码流中的一帧编码图像。
由上可知,本实施例的软件解码器在对编码图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作(现有技术中只有在硬件解码后才会执行DPB操作),从而可以无需等待硬件解码器解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率。
实施例二、
根据实施例一所描述的方法,本实施例将以软件解码器解析条带头,硬件解码器解码条带数据、以及该码流为H.264码流为例作进一步说明。
软件解码器在解析完条带头后,生成解码消息,然后缓存条带数据到解码消息中,使用虚拟帧存模拟一帧结束后的DPB操作,并将DPB操作的结果缓存在解码消息中。在启动硬件解码器解码每一帧编码图像之前,软件解码器根据解码消息申请实际帧存,并更新记录着虚拟帧存和实际帧存映射关系的虚拟帧存映射表,然后根据条带头、条带数据以及虚拟帧存映射表配置并启动硬件解码器,以对获取到的编码图像进行硬件解码,在硬件解码器进行解码的过程中,软件解码器即可解码后续的编码图像,而无需等待硬件解码器,从而可以实现软件解码器和硬件解码器的同步解码。参见图2,具体流程可以如下:
201、软件解码器获取H.264码流中的一帧编码图像,然后执行步骤202。
202、软件解析获取到的编码图像的条带头,生成解码消息,并将该编码图像的条带数据缓存在解码消息中。
203、软件解码器使用虚拟帧存来模拟硬件解码后的DPB操作,然后将DPB操作的结果缓存在解码消息中,然后执行步骤206,如果此时需要驱动硬件解码器以进行硬件解码,则执行步骤204。
DPB操作的结果具体用于指示:Decode VFB、Reference VFB、Output VFB和Remove VFB。
204、在硬件解码前,即在驱动硬件解码器前,软件解码器根据DPB操作的结果,为Decode VFB申请实际帧存,并在虚拟帧存映射表中记录下DecodeVFB和实际帧存的对应关系。
205、软件解码器根据条带头、条带数据和虚拟帧存映射表配置并启动硬件解码器,具体可以包括以下过程:
(1)将条带头和条带数据配置给硬件解码器;
(2)根据虚拟帧存映射表,将Decode VFB对应的实际帧存、Reference VFB对应的实际帧存配置给硬件解码器;
(3)启动硬件解码器,以解码一帧图像。
206、在硬件解码器进行硬件解码的过程中,软件解码器获取后续的编码图像并进行解码,即重复执行步骤201至203。
例如,如果H.264码流中有5帧编码图像:“编码图像1、编码图像2、编码图像3、编码图像4和编码图像5”的话,则软件解码器在解码完编码图像1之后,可以继续对编码图像2进行解码,解码完编码图像2之后,对编码图像3进行解码,依次类推,直至对H.264码流中的编码图像全部解码完毕,而在该解码的过程中,硬件解码器的解码进度并不会对软件解码器解码后续编码图像造成影响,比如,在软件解码器对编码图像3进行解码时,硬件解码器可能正在对编码图像1进行解码,也可能正在对编码图像2进行解码,等等。
待硬件解码器解完一帧编码图像后,软件解码器还可以进行如下处理:
207、根据解码消息,将Output VFB对应的实际帧存所存放的解码图像输出。
208、根据解码消息,将Remove VFB从虚拟帧存映射表中删除,并释放对应的实际帧存。
至此,一帧编码图像处理完毕,依此类推,下一帧编码图像的过程同上,在此不再赘述。
由上可知,本实施例的软件解码器在对编码图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,从而可以无需等待硬件解码器解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率。
实施例三、
根据实施例二所描述的方法,下面将以一个具体的例子进行详细说明。
参见图3a,图3a为码流的示意图,一般的,在码流中,后一帧图像参考前一帧图像,参考帧个数为1。例如,图3a中包括了三帧图像:1、2和3,则1无参考帧,1为2的参考帧,2为3的参考帧,如果后续还有其他的帧,则依此类推。
在本实施例中,将在虚拟帧存映射表中记录虚拟帧存和实际帧存的映射关系记录为例进行说明。其中,虚拟帧存映射表的结构具体可以如表一所示;
表一:
  VFB   RFB   备注
  0   实际帧存信息(地址,大小等)   表示实际帧存已分配
  1   Null   Null表示实际帧存未分配
需说明的是,表一仅仅给出了虚拟帧存映射表的一种较为简单的结构,具体实施时还可以根据实际应用的需要对表的结构进行重新定义或预置。
为了更好地描述该解码方法,以下将分别从软件解码器和软件解码器驱动硬件解码器进行解码两个方面进行说明,参见图3b,解码过程具体可以如下:
(一)软件解码器的执行流程
(1)第一帧
A301、软件解码器获取H.264码流中的第一帧编码图像。
A302、软件解码器解析第一帧编码图像的条带头,生成解码消息,并将第一帧编码图像的条带数据缓存在解码消息中。
A303、软件解码器使用VFB(0)来存放解码图像1,然后模拟DPB操作:将VFB(0)放入DPB中,由于是第一帧为即时解码刷新(IDR,InstantaneousDecoding Refresh)帧,因此没有参考帧(即没有Reference VFB),也没有OutputVFB和Remove VFB,所以,DPB操作的结果为:Decode VFB为“0”,ReferenceVFB、Output VFB和Remove VFB均为“Null”。
软件解码器在解码器消息中记录该DPB操作的结果。
(2)第二帧
B301、在软件解码器处理完第一帧编码图像后,软件解码器继续获取H.264码流中的下一帧编码图像,即软件解码器获取第二帧编码图像。
需说明的是,软件解码器在获取下一帧编码图像并进行软件解码时并不关心硬件解码器的解码进度,即软件解码过程和硬件解码过程是相互独立的。
B302、软件解码器解析第二帧编码图像的条带头,生成解码消息,并将第二帧编码图像的条带数据缓存在解码消息中。
B303、软件解码器使用VFB(1)存放解码图像2,并将第一帧图像作为参考帧(即参考VFB(0)),然后模拟DPB操作:将Decode VFB(1)放入DPB中,由于此时DPB中已经存放了VFB(0)和VFB(1),因此DPB已满,引发排除过程(Bumping,协议中的术语,指DPB满之后该如何操作)过程,Bumping过程的结果是:
Output VFB为“0”:表示输出VFB(0)所对应的解码图像,即输出解码图像1;
Remove VFB为“0”:表示移除VFB(0)。
所以,DPB操作的结果为:Decode VFB为“1”,Reference VFB为“0”、Output VFB为“0”,Remove VFB为“0”,可参见图3b。
软件解码器在解码器消息中记录该DPB操作的结果。
(3)第三帧
C301、在软件解码器处理完第二帧编码图像后,软件解码器继续获取H.264码流中的下一帧编码图像,即软件解码器获取第三帧编码图像。
C302、软件解码器解析第三帧编码图像的条带头,生成解码消息,并将第三帧编码图像的条带数据缓存在解码消息中。
C303、由步骤B303可知,此时VFB 0已经释放,所以此时可以使用VFB(0)来存放解码图像3,并将第二帧图像作为参考帧(即参考VFB(1)),然后模拟DPB操作:将VFB(0)放入DPB中,由于此时DPB中已经存放了VFB(0)和VFB(1),因此DPB已满,引发Bumping过程,Bumping过程的结果是:
Output VFB为“1”:表示输出VFB(1)所对应的解码图像,即输出解码图像3;
Remove VFB为“1”:表示移除VFB(1)。
软件解码器在解码器消息中记录该DPB操作的结果:Decode VFB为“0”,Reference VFB为“1”,Output VFB为“1”,Remove VFB为“1”。
(二)软件解码器驱动硬件解码器进行硬件解码的流程
(1)第一帧
软件解码器驱动硬件解码器以对第一帧编码图像进行硬件解码,如下:
a301、软件解码器解析步骤A303所产生的解码消息,申请RFB(0)存放解码图像1,并更新虚拟帧存映射表:在虚拟帧存映射表中记录VFB(0)对应RFB(0)。
同理,根据所解析的解码消息可知,Reference VFB为“Null”,因此表明第一帧无需参考其他帧。
a302、软件解码器根据虚拟帧存映射表配置并启动硬件解码器,即将VFB(0)对应的RFB(0)配置给硬件解码器,并启动解码解码器以进行硬件解码。
待硬件解码器解完第一帧编码图像之后(即硬件解码后),还可以继续解析解码消息,获知Output VFB为“Null”,表明无需输出,因此不输出该第一帧,即不输出解码图像1;同理,解析解码消息,获知Remove VFB为“Null”,表明无需移除任何虚拟帧存。
(2)第二帧
软件解码器驱动硬件解码器对第二帧编码图像进行硬件解码,如下:
b301、软件解码器解析步骤B303所产生的解码消息,申请RFB(1)存放解码图像2,并更新虚拟帧存映射表:在虚拟帧存映射表中记录VFB(1)对应RFB(1)。
b302、软件解码器根据虚拟帧存映射表配置并启动硬件解码器,即将VFB(0)对应的RFB(0)配置给硬件解码器,以及将VFB(1)对应的RFB(1)配置给硬件解码器,并启动硬件解码器以进行硬件解码。
待硬件解码器解完第二帧编码图像之后(即硬件解码后),还可以继续执行步骤b303和b304:
b303、解析解码消息,获知output VFB为“0”,因此输出VFB(0)所对应的RFB(0)中存放的解码图像,即输出解码图像1,系统显示解码图像1。
b304、解析解码消息,获知Remove VFB为“0”,因此在输出了解码图像1之后,移除VFB(0)对应的RFB(0)以释放空间,并更新虚拟帧存映射表:在虚拟帧存映射表中将VFB(0)所对应的实际帧存记录为“Null”。
(3)第三帧
软件解码器驱动硬件解码器以对第三帧编码图像进行硬件解码,如下:
c301、软件解码器解析步骤C303所产生的解码消息,申请RFB(2)存放解码图像3,并更新虚拟帧存映射表:在虚拟帧存映射表中记录VFB(0)对应RFB(2)。
需说明的是,此时之所以使用RFB(2)来而不是使用RFB(0),是因为此时RFB(0)可能正在输出,如果用RFB(0)存放新的解码图像的话可能会导致输出图像错误。
c302、软件解码器根据虚拟帧存映射表配置并启动硬件解码器,即将VFB(1)对应的RFB(1)配置给硬件解码器,以及将VFB(0)对应的RFB(2)配置给硬件解码器,并启动硬件解码器以进行硬件解码。
待硬件解码器解完第三帧编码图像之后(即硬件解码后),还可以继续执行步骤c303和c304:
c303、解析解码消息,获知Output VFB为“1”,因此输出VFB(1)对应的RFB(1)中存放的解码图像,即输出解码图像2,系统显示解码图像2。
c304、解析解码消息,获知Remove VFB为“1”,因此在输出解码图像2之后,移除VFB(1)对应的RFB(1)以释放空间,并更新虚拟帧存映射表:在虚拟帧存映射表中将VFB(1)所对应的实际帧存记录为“Null”。
如果后续还有其他帧的话,其执行流程依此类推,在此不再赘述。
图3b中,虚框部分表示非软件解码器执行的步骤。
需说明的是,为了描述方便,在本实施例中,仅仅使用了3个RFB(即RFB(0)、RFB(1)和RFB(2))进行说明。应当理解的是,实际RFB的个数,可根据系统需要自行选择,其执行流程同上,在此不再赘述。
由上可知,本实施例的软件解码器在对编码图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,从而可以无需等待硬件解码器解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率,尤其是当解码器分时复用时,如监控产品中的多通道解码等,其性能的优越性更显著。
进一步的,本实施例采用将具有大量逻辑操作的条带头交由软件解码器进行解码,而将数据密集的条带数据交由硬件解码器进行解码,划分合理,有利于提供解码性能;另外,由于使用了动态的虚拟帧存映射表,因此可以解除现有技术中软件解码器和硬件解码器之间的帧存耦合关系。软件解码器和硬件解码器都可以按照协议的标准参考解码器进行独立设计,完全无需考虑实际帧存的数量。
实施例四、
除了采用动态的虚拟帧存映射表之外,也可以使用固定的虚拟帧存映射表,与实施例三不同的是,在本实施例中将以采用固定的虚拟帧存映射表来实现并行解码。
需说明的是,由于虚拟帧存与实际帧存的映射关系是固定的。因此虚拟帧存总数与实际帧存总数相等,而且,帧存总数超过协议规定的最大参考帧数目,并考虑输出解码图像可能占用的实际帧存数量。另外,由于不需要动态更新虚拟帧存映射表,因此可以去掉解码消息中有关的remove VFB的信息。
参见图4,具体流程可以如下:
(1)第一帧
A401、软件解码器获取H.264码流中的第一帧编码图像。
A402、软件解码器解析第一帧编码图像的条带头,生成解码消息,并将第一帧编码图像的条带数据缓存在解码消息中。
A403、软件解码器使用VFB(0)来存放解码图像1,然后模拟DPB操作:将VFB(0)放入DPB中,由于是第一帧为IDR帧,因此没有参考帧(即没有ReferenceVFB),也没有Output VFB,所以,DPB操作的结果为:Decode VFB为“0”,Reference VFB和Output VFB均为“Null”。软件解码器在解码器消息中记录该DPB操作的结果。
(2)第二帧
B401、软件解码器继续获取H.264码流中的下一帧编码图像,即软件解码器获取第二帧编码图像。
需说明的是,软件解码器在获取下一帧编码图像并进行软件解码时并不关心硬件解码器的解码进度,即软件解码过程和硬件解码过程是相互独立的。
B402、软件解码器解析第二帧编码图像的条带头,生成解码消息,并将第二帧编码图像的条带数据缓存在解码消息中。
B403、软件解码器使用VFB(1)存放解码图像2,并将第一帧编码图像作为参考帧(即参考VFB(0)),然后模拟DPB操作,DPB操作的结果为:Decode VFB为“1”,Reference VFB为“0”、Output VFB为“0”,软件解码器在解码器消息中记录该DPB操作的结果。
(3)第三帧
C401、软件解码器继续获取H.264码流中的下一帧编码图像,即软件解码器获取第三帧编码图像。
C402、软件解码器解析第三帧编码图像的条带头,生成解码消息,并将第三帧编码图像的条带数据缓存在解码消息中。
C403、软件解码器使用VFB(2)来存放解码图像3,并将第二帧图像作为参考帧(即参考VFB(1)),然后模拟DPB操作,DPB操作的结果:Decode VFB为“2”,Reference VFB为“1”,Output VFB为“1”,软件解码器在解码器消息中记录该DPB操作的结果。
(二)软件解码器驱动硬件解码器进行硬件解码的流程
(1)第一帧
软件解码器驱动硬件解码器以对第一帧编码图像进行硬件解码,如下:
a401、软件解码器解析步骤A403所产生的解码消息,根据固定的虚拟帧存映射表得知VFB(0)对应的实际帧存为RFB(0),于是将RFB(0)配置给硬件解码器,并启动硬件解码器以进行硬件解码。
待硬件解码器解完第一帧编码图像之后(即硬件解码后),还可以继续解析解码消息,获知Output VFB为“Null”,表明无需输出,因此不输出该第一帧,即不输出解码图像1。
(2)第二帧
软件解码器驱动硬件解码器以对第二帧编码图像进行硬件解码,如下:
b401、软件解码器解析步骤B403所产生的解码消息,根据固定的虚拟帧存映射表得知VFB(0)对应的实际帧存为RFB(0),VFB(1)对应的实际帧存为RFB(1),于是将RFB(0)和RFB(1)配置给硬件解码器,并启动硬件解码器以进行硬件解码。
待硬件解码器解完第二帧编码图像之后(即硬件解码后),还可以继续执行步骤b402:
b402、解析解码消息,获知Output VFB为“0”,因此输出VFB(0)所对应的RFB(0)中存放的解码图像,即输出解码图像1,系统显示解码图像1。
(3)第三帧
软件解码器驱动硬件解码器以对第三帧编码图像进行硬件解码,如下:
c401、软件解码器解析步骤C403所产生的解码消息,根据固定的虚拟帧存映射表得知VFB(2)对应的实际帧存为RFB(2),VFB(1)为对应的实际帧存为RFB(1),于是将RFB(2)和RFB(1)配置给硬件解码器,并启动硬件解码器以进行硬件解码。
待硬件解码器解完第二帧编码图像之后(即硬件解码后),还可以继续执行步骤c402:
c402、解析解码消息,获知output VFB为“1”,因此输出VFB(1)对应的RFB(1)中存放的解码图像,即输出解码图像2,系统显示解码图像2。
如果后续还有其他帧的话,其执行流程依此类推,在此不再赘述。
图4中,虚框部分表示非软件解码器执行的步骤。
需说明的是,为了描述方便,在本实施例中,仅仅使用了3个RFB进行说明。应当理解的是,实际RFB的个数,可根据系统需要自行选择,其执行流程同上,在此不再赘述。
由上可知,本实施例的软件解码器在对图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,从而可以无需等待硬件解码器解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率,尤其是当解码器分时复用时,如监控产品中的多通道解码等,其性能的优越性更显著。
进一步的,本实施例采用将具有大量逻辑操作的条带头交由软件解码器进行解码,而将数据密集的条带数据交由硬件解码器进行解码,划分合理,有利于提供解码性能。
实施例五、
为了更好地实施以上方法,本发明实施例还相应地提供一种软件解码器,参见图5,该软件解码器包括解码单元502和驱动单元503;
解码单元502,用于对获取到的编码图像进行初级处理,其中,该初级处理为:对获取到的编码图像进行软件解码,使用虚拟帧存来模拟硬件解码后的DPB操作,得到DPB操作的结果;例如,可以将条带头交由软件解码器进行解码,而将条带数据交由硬件解码器进行解码;
驱动单元503,用于根据解码单元得到的DPB操作的结果申请实际帧存,并记录虚拟帧存和实际帧存的映射关系,根据虚拟帧存和实际帧存的映射关系配置并启动硬件解码器,以对获取到的编码图像进行硬件解码。
可选的,如图5b所示,该软件解码器还可以包括获取单元501;
获取单元501,用于获取码流中的一帧编码图像,以及在硬件解码的过程中,获取码流中后续的编码图像;
此时,解码单元502,用于对获取单元501获取到的编码图像进行初级处理。
为了使得软件解码和硬件解码的分工更为合理,可以将需要大量逻辑操作的条带头交由软件解码器进行解码,而将数据密集的条带数据交由硬件解码器进行解码,因此,如图5b所示,解码单元502可以包括解析子单元5021、缓存子单元5022和模拟子单元5023;
解析子单元5021,用于解析获取到的编码图像的条带头,并生成解码消息;
缓存子单元5022,用于缓存获取到的编码图像的条带数据到解析子单元5021生成的解码消息中。
模拟子单元5023,用于使用虚拟帧存来模拟硬件解码后的DPB操作,并将DPB操作的结果缓存在解析子单元5021生成的解码消息中,其中,DPB操作的结果用于指示:存放硬件解码后图像的虚拟帧存、用于参考的虚拟帧存和硬件解码后应该输出的虚拟帧存。
如图5b所示,驱动单元503可以包括申请子单元5034、第一配置子单元5031、第二配置子单元5032和启动子单元5033
申请子单元5034,用于根据模拟子单元5023得到的DPB操作的结果申请实际帧存,并在虚拟帧存映射表中记录虚拟帧存和实际帧存的映射关系;
第一配置子单元5031,用于根据解析子单元5021生成的解码消息将条带头和条带数据配置给硬件解码器;
第二配置子单元5032,用于根据虚拟帧存映射表和解析子单元5021生成的解码消息将存放硬件解码器解码后图像的虚拟帧存对应的实际帧存、以及用于参考的虚拟帧存对应的实际帧存配置给硬件解码器;
启动子单元5033,用于在第一配置单元5031和第二配置单元5032配置完毕后,启动硬件解码器。硬件解码器解码以后的解码图像,可以存放在申请子单元5034所申请的实际帧存中。
如图5b所示,该软件解码器还可以包括输出单元504;
输出单元504,用于在硬件解码完成之后,根据解析子单元5021生成的解码消息,将硬件解码后应该输出的虚拟帧存对应的实际帧存中的解码图像输出。
进一步的,该DPB操作的结果还用于指示硬件解码后应该删除的虚拟帧存项,即模拟子单元5023,用于使用虚拟帧存来模拟硬件解码后的DPB操作,并将DPB操作的结果缓存在解析子单元5021生成的解码消息中,该DPB操作的结果用于指示:存放硬件解码后图像的虚拟帧存项、用于参考的虚拟帧存项、硬件解码后应该输出的虚拟帧存项、以及硬件解码后应该删除的虚拟帧存项。
则如图5b所示,该软件解码器还可以包括释放单元505;
释放单元505,用于在硬件解码完成之后,根据解析子单元5021生成的解码消息,将硬件解码后应该删除的虚拟帧存从虚拟帧存映射表中删除,并释放硬件解码后应该删除的虚拟帧存对应的实际帧存。
该软件解码器具体可以为CPU或其他控制处理模块,硬件解码器具体可以为ASIC或DSP,等等。
以上各个单元的具体实施可参见前面实施例,在此不再赘述。
由上可知,本实施例的软件解码器的解码单元502在对编码图像进行解码时,采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,并在硬件解码前,由驱动单元503根据DPB操作的结果申请实际帧存以便后续用于存放硬件解码器解码出来的图像,从而可以无需等待硬件解码器解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器解码结束后才进行DPB操作,所导致的软件解码器和硬件解码器之间相互等待的情景的发生,可以较好地实现软件解码器和硬件解码器的并行处理,提高解码效率,尤其是当解码器分时复用时,如监控产品中的多通道解码等,其性能的优越性更显著。
实施例六、
相应的,本发明实施例还可以提供一种解码设备,如图6所示,该解码设备包括硬件解码器600和本发明实施例提供的任一种软件解码器500,具体可参见前面实施例;
硬件解码器600,用于接受软件解码器500的配置及启动,并对获取到的编码图像进行硬件解码。
硬件解码器600,具体用于对获取到的编码图像的条带数据进行硬件解码。
该解码设备的解码流程可参见前面实施例,在此不再赘述。
需说明的是,在本发明实施例中,均以软件解码器维护虚拟帧存映射表为例进行说明,应当理解的是,也可以由硬件解码器来维护虚拟帧存映射表,其实现方法同理,在此不再赘述。
综上,本实施例所提供的解码设备中的软件解码器500在对编码图像进行解码时,可以采用虚拟帧存来模拟硬件解码器解码一帧编码图像后的DPB操作,从而可以无需等待硬件解码器600解码结束,即可解码后续的编码图像,避免了现有技术中需要等待硬件解码器600解码结束后才进行DPB操作,所导致的软件解码器500和硬件解码器600之间相互等待的情景的发生,可以较好地实现软件解码器500和硬件解码器600的并行处理,提高解码效率和性能。
进一步的,由于该解码设备采用将具有大量逻辑操作的条带头交由软件解码器500进行解码,而将数据密集的条带数据交由硬件解码器600进行解码,划分合理,有利于提供解码性能;另外,由于使用了动态的虚拟帧存映射表,因此可以解除现有技术中软件解码器500和硬件解码器600之间的帧存耦合关系。软件解码器500和硬件解码器600都可以按照协议的标准参考解码器进行独立设计,完全无需考虑实际帧存的数量。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种解码的实现方法、软件解码器和解码设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种解码的实现方法,其特征在于,包括:
软件解码器对获取到的编码图像进行初级处理,所述初级处理为:对获取到的编码图像进行软件解码,使用虚拟帧存来模拟硬件解码后的解码图像缓存DPB操作,得到DPB操作的结果;
根据DPB操作的结果申请实际帧存,并记录虚拟帧存和实际帧存的映射关系;
根据所述虚拟帧存和实际帧存的映射关系配置并启动硬件解码器,以对获取到的编码图像进行硬件解码;在硬件解码的过程中,软件解码器获取码流中的下一帧编码图像,并对该下一帧编码图像进行初级处理;
其中,所述对获取到的编码图像进行软件解码包括:解析获取到的编码图像的条带头,并生成解码消息;缓存获取到的编码图像的条带数据至所述解码消息内;
所述对获取到的编码图像进行硬件解码包括:对获取到的编码图像的条带数据进行硬件解码。
2.根据权利要求1所述的方法,其特征在于,还包括:
将所述DPB操作的结果缓存在所述解码消息中;
所述DPB操作的结果用于指示:存放硬件解码后图像的虚拟帧存、用于参考的虚拟帧存、以及硬件解码后应该输出的虚拟帧存。
3.根据权利要求2所述的方法,其特征在于,
所述记录虚拟帧存和实际帧存的映射关系包括:在虚拟帧存映射表中记录虚拟帧存和实际帧存的映射关系;
所述根据所述虚拟帧存和实际帧存的映射关系配置并启动硬件解码器包括:将所述条带头和条带数据配置给硬件解码器,根据所述解码消息和虚拟帧存映射表将存放硬件解码后图像的虚拟帧存对应的实际帧存、以及用于参考的虚拟帧存对应的实际帧存配置给硬件解码器,并启动硬件解码器。
4.根据权利要求3所述的方法,其特征在于,所述DPB操作的结果还用于指示:硬件解码后应该删除的虚拟帧存;
则所述方法还包括:
根据解码消息,将硬件解码后应该删除的虚拟帧存从虚拟帧存映射表中删除,并释放硬件解码后应该删除的虚拟帧存对应的实际帧存;
根据解码消息,将硬件解码后应该输出的虚拟帧存对应的实际帧存中的解码图像输出。
5.一种解码装置,其特征在于,包括:
解码单元,用于对获取到的编码图像进行初级处理,所述初级处理为:对获取到的编码图像进行软件解码,使用虚拟帧存来模拟硬件解码后的解码图像缓存DPB操作,并得到DPB操作的结果;
驱动单元,用于根据解码单元得到的DPB操作的结果申请实际帧存,并记录虚拟帧存和实际帧存的映射关系,根据所述虚拟帧存和实际帧存的映射关系配置并启动硬件解码器,以对获取到的编码图像进行硬件解码;在硬件解码的过程中,触发解码装置调用解码单元,以便解码单元获取码流中的下一帧编码图像,并对该下一帧编码图像进行初级处理;
其中,所述解码单元包括解析子单元、缓存子单元和模拟子单元;
解析子单元,用于解析获取到的编码图像的条带头,并生成解码消息;
缓存子单元,用于缓存获取到的编码图像的条带数据到解析子单元生成的解码消息中;
模拟子单元,用于使用虚拟帧存来模拟硬件解码后的DPB操作,并将DPB操作的结果缓存在解析子单元生成的解码消息中,所述DPB操作的结果用于指示:存放硬件解码后图像的虚拟帧存、用于参考的虚拟帧存、以及硬件解码后应该输出的虚拟帧存。
6.根据权利要求5所述的解码装置,其特征在于,所述驱动单元包括:
申请子单元,用于根据模拟子单元得到的DPB操作的结果申请实际帧存,并在虚拟帧存映射表中记录虚拟帧存和实际帧存的映射关系;
第一配置子单元,用于根据解析子单元生成的解码消息将条带头和条带数据配置给硬件解码器;
第二配置子单元,用于根据虚拟帧存映射表和解析子单元生成的解码消息将存放硬件解码器解码后图像的虚拟帧存对应的实际帧存、以及用于参考的虚拟帧存对应的实际帧存配置给硬件解码器;
启动子单元,用于在第一配置子单元和第二配置子单元配置完毕后,启动硬件解码器。
7.根据权利要求6所述的解码装置,其特征在于,还包括输出单元和释放单元:
所述DPB操作的结果还用于指示硬件解码后应该删除的虚拟帧存;
所述输出单元,用于在硬件解码完成之后,根据解析子单元生成的解码消息,将硬件解码后应该输出的虚拟帧存对应的实际帧存中的解码图像输出;
所述释放单元,用于在硬件解码完成之后,根据解析子单元生成的解码消息,将硬件解码后应该删除的虚拟帧存从虚拟帧存映射表中删除,并释放硬件解码后应该删除的虚拟帧存对应的实际帧存。
8.一种解码设备,其特征在于,包括硬件解码器和权利要求5至7所述的任一种解码装置;
所述硬件解码器,用于接受解码装置的配置及启动,并对获取到的编码图像进行硬件解码。
CN 201010168682 2010-05-07 2010-05-07 一种解码的实现方法、软件解码器和解码设备 Expired - Fee Related CN101841717B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010168682 CN101841717B (zh) 2010-05-07 2010-05-07 一种解码的实现方法、软件解码器和解码设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010168682 CN101841717B (zh) 2010-05-07 2010-05-07 一种解码的实现方法、软件解码器和解码设备

Publications (2)

Publication Number Publication Date
CN101841717A CN101841717A (zh) 2010-09-22
CN101841717B true CN101841717B (zh) 2012-08-08

Family

ID=42744786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010168682 Expired - Fee Related CN101841717B (zh) 2010-05-07 2010-05-07 一种解码的实现方法、软件解码器和解码设备

Country Status (1)

Country Link
CN (1) CN101841717B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752600B (zh) * 2012-07-13 2015-02-11 航天恒星科技有限公司 一种降低图像传输系统时延的实现方法
CN104185028A (zh) * 2013-05-20 2014-12-03 安凯(广州)微电子技术有限公司 一种视频播放方法及终端
KR102164062B1 (ko) * 2015-09-08 2020-10-13 미디어텍 인크. 인트라 블록 복사 모드를 위한 디코딩된 픽처 버퍼의 방법 및 시스템
CN107592543B (zh) * 2016-07-06 2019-12-24 北京大学 视频解码处理方法及装置
CN106791829B (zh) * 2016-11-18 2020-01-21 华为技术有限公司 虚拟参考帧的建立方法及设备
CN106534922A (zh) * 2016-11-29 2017-03-22 努比亚技术有限公司 视频解码装置及方法
CN109309879A (zh) * 2017-07-27 2019-02-05 飞狐信息技术(天津)有限公司 一种解码方法、装置及设备
CN110519640B (zh) * 2019-08-14 2021-08-13 北京达佳互联信息技术有限公司 视频处理方法、编码器、cdn服务器、解码器、设备及介质
CN112672147A (zh) * 2020-12-15 2021-04-16 深圳乐播科技有限公司 一种基于投屏的解码方法、设备及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1315059C (zh) * 2002-08-20 2007-05-09 联发科技股份有限公司 利用虚拟图像画面重新排序的解码图像序列的方法与装置
US20080002773A1 (en) * 2006-06-26 2008-01-03 Texas Instruments Incorporated Video decoded picture buffer
MY149409A (en) * 2006-10-20 2013-08-30 Nokia Corp Virtual decoded reference picture marking and reference picture list
CN101453640A (zh) * 2007-11-28 2009-06-10 中国科学院微电子研究所 一种软硬件联合解码的avs视频解码器
US8345774B2 (en) * 2008-01-11 2013-01-01 Apple Inc. Hypothetical reference decoder

Also Published As

Publication number Publication date
CN101841717A (zh) 2010-09-22

Similar Documents

Publication Publication Date Title
CN101841717B (zh) 一种解码的实现方法、软件解码器和解码设备
CN104780378B (zh) 一种用于解码视频的方法、装置和播放器
CN102724585A (zh) 一种用于终端设备网络视频播放预加载的方法及装置
CN114257849B (zh) 弹幕播放方法、相关设备及存储介质
CN109640056A (zh) 一种基于Android平台的USB摄像头监控系统及其方法
CN109670128A (zh) 一种基于WebAssembly的网页应用实现方法及装置
MY134622A (en) Apparatus and method to maintain information in one or more virtual volume aggregates comprising a plurality of virtual volumes
CN108134964A (zh) 视频直播道具叠加方法、计算机设备及存储介质
JP6513601B2 (ja) 遊技機
CN107533752A (zh) 用于图形处理的基于表面格式的自适应存储器地址扫描
CN101931808B (zh) 文件逆序播放方法及装置
CN110708609A (zh) 一种视频播放方法及装置
KR960033131A (ko) 메모리제어장치 및 그것을 사용한 화상디코더
CN106658142A (zh) 界面配置方法及装置
CN103686195B (zh) 视频信息处理方法及设备
CN101964205B (zh) 基于固态硬盘的ecc模块动态复用系统及方法
CN104661092B (zh) 一种视频播放控制方法、系统及机顶盒
TW201136324A (en) Image processing apparatus and image processing method
CN101527844A (zh) 分块化执行解码数据的方法
CN101216933A (zh) 一种图像数据内存投影方法、访问方法及装置
US7015918B2 (en) 2-D luma and chroma DMA optimized for 4 memory banks
CN109379622B (zh) 游戏中播放视频的方法和装置
CN110351562A (zh) 一种10比特yuv图像存储格式
CN101304533A (zh) 一种视频处理装置
CN106254961A (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
TR01 Transfer of patent right

Effective date of registration: 20170719

Address after: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee after: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

TR01 Transfer of patent right
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Li Jingjing

Inventor before: Cao Guodong

Inventor before: Yan Zhiwei

Inventor before: Gu Xiang

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170929

Address after: Mao Qizhen caojiabao village 114000 Anshan city Liaoning city of Haicheng province (black rock Temple No. 40 natural villages)

Patentee after: Li Jingjing

Address before: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee before: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120808

Termination date: 20180507