CN114268793B - 编码方法及装置 - Google Patents
编码方法及装置 Download PDFInfo
- Publication number
- CN114268793B CN114268793B CN202111569103.6A CN202111569103A CN114268793B CN 114268793 B CN114268793 B CN 114268793B CN 202111569103 A CN202111569103 A CN 202111569103A CN 114268793 B CN114268793 B CN 114268793B
- Authority
- CN
- China
- Prior art keywords
- pipeline
- frame
- encoded
- current
- coded
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开关于一种编码方法及装置,编码方法包括:在当前待编码帧的下一待编码帧进入流水线之前,执行下述步骤:基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧;在所述第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。根据本公开的编码方法及装置,设置每次输入待编码帧时都确定最早进入流水线的帧,在最早进入流水线的帧完成编码的情况下输出,使得在每次输入待编码帧时都有机会输出最早编码的那一帧,而不必等到流水线满时才输出,能够加快输出帧的速度,降低最小编码延迟,且有机会降低累积的编码延迟。
Description
技术领域
本公开涉及编解码技术领域,尤其涉及一种编码方法及装置。
背景技术
对于视频编码,H.264视频编码标准的x264编码器和H.265视频编码标准的x265编码器均采用了帧级并行方案,但是,这两种方案输出编码帧均不够快,最小编码延迟均较大且在某一帧的编码时间大于最小编码延迟的情况下后续帧的编码延迟可能会累加。
发明内容
本公开提供一种编码方法及装置,以至少解决上述相关技术中存在的输出编码帧较慢且编码延迟累加的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种编码方法,在当前待编码帧的下一待编码帧进入流水线之前,执行下述步骤:基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧;在所述第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。
可选地,所述基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,包括:从所述当前流水线的下一条流水线开始,依次判断空闲流水线,直至确定第一条非空闲流水线,其中,所述空闲流水线是未置入待编码帧的流水线;将所述第一条非空闲流水线中的待编码帧作为所述第一待编码帧。
可选地,所述从所述当前流水线的下一条流水线开始,依次判断空闲流水线,包括:从所述当前流水线的下一条流水线开始,以流水线的序号依次增序判断空闲流水线,直至判断到序号最大的流水线;在所述序号最大的流水线是空闲流水线的情况下,从序号最小的流水线开始判断空闲流水线,直至判断到所述当前流水线的上一条流水线。
可选地,所述基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,包括:在所述当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧;所述编码方法还包括:在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线是所述当前流水线的下一条流水线的情况下,等待所述第一待编码帧完成编码,获取完成编码的第一待编码帧并输出;在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线不是所述当前流水线的下一条流水线的情况下,将所述当前待编码帧的下一待编码帧置入所述当前流水线的下一条流水线进行编码。
可选地,所述基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,包括:在所述当前待编码帧未被置入所述当前流水线,且所述当前流水线是空闲流水线的情况下,在所有流水线中确定最早进入流水线的第一待编码帧。
可选地,在所述获取完成编码的第一待编码帧并输出之后,所述编码方法还包括:将所述当前待编码帧置入所述当前流水线进行编码。
根据本公开实施例的第二方面,提供一种编码装置,包括:确定单元和第一输出单元;在当前待编码帧的下一待编码帧进入流水线之前:确定单元被配置为:基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧;第一输出单元被配置为:在所述第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。
可选地,确定单元被配置为:从所述当前流水线的下一条流水线开始,依次判断空闲流水线,直至确定第一条非空闲流水线,其中,所述空闲流水线是未置入待编码帧的流水线;将所述第一条非空闲流水线中的待编码帧作为所述第一待编码帧。
可选地,确定单元被配置为:从所述当前流水线的下一条流水线开始,以流水线的序号依次增序判断空闲流水线,直至判断到序号最大的流水线;在所述序号最大的流水线是空闲流水线的情况下,从序号最小的流水线开始判断空闲流水线,直至判断到所述当前流水线的上一条流水线。
可选地,确定单元被配置为:在所述当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧;还包括第二输出单元,被配置为:在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线是所述当前流水线的下一条流水线的情况下,等待所述第一待编码帧完成编码,获取完成编码的第一待编码帧并输出;还包括置入单元,被配置为:在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线不是所述当前流水线的下一条流水线的情况下,将所述当前待编码帧的下一待编码帧置入所述当前流水线的下一条流水线进行编码。
可选地,确定单元被配置为:在所述当前待编码帧未被置入所述当前流水线,且所述当前流水线是空闲流水线的情况下,在所有流水线中确定最早进入流水线的第一待编码帧。
可选地,还包括编码单元,被配置为:在所述获取完成编码的第一待编码帧并输出的情况下,将所述当前待编码帧置入所述当前流水线进行编码。
根据本公开实施例的第三方面,提供一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的编码方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的编码方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机指令,所述计算机指令被至少一个处理器执行时实现根据本公开的编码方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的编码方法及装置,设置每次输入待编码帧时都确定最早进入流水线的帧,在最早进入流水线的帧完成编码的情况下输出,使得在每次输入待编码帧时都有机会输出最早编码的那一帧,而不必等到流水线满(所有流水线均不是空闲流水线)时才输出,能够加快输出帧的速度,降低最小编码延迟,且有机会降低累积的编码延迟。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是相关技术中的x265编码器实现帧级并行流水线的流程图。
图2是相关技术中的x264编码器实现帧级并行流水线的流程图。
图3是根据一示例性实施例示出的一种编码方法的流程图。
图4是根据一示例性实施例示出的另一种编码方法的流程图。
图5是根据一示例性实施例示出的又一种编码方法的流程图。
图6是根据一示例性实施例示出的一种编码装置的框图。
图7是根据一示例性实施例的电子设备700的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
视频编码标准规定了编码算法所能使用的编码工具集合,H.264与H.265是目前广泛使用的视频编码标准。编码器是符合特定编码标准的编码算法实现,x264与x265分别是按照这两个编码标准实现的开源编码器,其中,x264是实现H.264标准的开源编码器,x265是实现H.265标准的开源编码器。
若要编码高分辨率和高帧率的视频,极大提升了编码器的计算量。若采用先进的编码算法,节省存储和传输成本的同时引入了复杂的计算,会使得编码耗时增加。目前,编码器面临着保证实时的编码速度和尽量低的编码延迟delay(编码延时latency)的需求。
为了在编码计算量提升、耗时增加的情况下,仍能满足对编码速度的要求,x264与x265等编码器均采用了帧级并行方案,实现流水线,提升吞吐量,提高编码速度。
对于编码器,先输入的待编码帧应先输出,当并行编码多个待编码帧时,若后输入的待编码帧先完成编码,也应等待先输入的待编码帧完成编码并输出后,才输出。在这里需要说明的是,流水线是对帧进行编码的单元,编码器中可存在至少一个流水线。编码器中可以有N条流水线,序号分别是0,1,2,…,N-1(N大于或者等于1且N为整数),若当前待编码帧被置入到当前流水线i进行编码,则下一帧将被置入到流水线(i+1)%N进行编码,若流水线(i+1)%N是非空闲流水线,则流水线(i+1)%N中的帧是最早进入流水线的帧,需要说明的是,%表示做除法取余数,(i+1)%N表示用i+1和N做除法取余数。
x265编码器可采用先输出后编码的方式调度流水线。这里,先输出后编码的方式是指,首先检查流水线中是否有已完成编码的帧可以输出,然后再将当前待编码帧送入流水线。采用了帧级并行方案的x265编码器中可以有N条流水线,序号分别是0,1,2,…,N-1(N大于或者等于1且N为整数)。图1是相关技术中的x265编码器实现帧级并行流水线的流程图。图1所示的流程是指从输入当前待编码帧,到输入当前待编码帧的下一待编码帧的流程。参考图1,首先可输入当前待编码帧。然后可判断当前流水线i是否是空闲流水线,在当前流水线i是空闲流水线的情况下,由当前流水线i编码当前待编码帧;在当前流水线i是非空闲流水线的情况下,说明当前流水线i中的帧是最早进入流水线的帧,等待当前流水线i完成编码并输出已编码帧之后,再由当前流水线i编码当前待编码帧。最后,可设置当前待编码帧的下一待编码帧将被置入的的流水线序号i”是(i+1)%N。
但是,对于帧率为FPS(每秒有FPS帧图像)的视频,每帧的持续时间(两帧的间隔时间)为T=1/FPS。对于x265编码器实现帧级并行流水线的方案,即使编码速度足够快,编码一帧的时间小于T,也需要在输入第i+N帧时才能够输出第i帧,输出编码帧不够快。这种方案的最小编码延迟为T*N,且最小编码延迟随着流水线数N的增加而增加。若某一帧的编码时间大于T*N,不仅会使这一帧的编码延迟大于T*N,而且增加的延迟会累积到后续帧的编码延迟上。
x264编码器可采用先编码后输出的方式调度流水线。这里,先编码后输出的方式是指,首先将当前待编码帧送入流水线,然后再检查流水线中是否有已完成编码的帧可以输出。采用了帧级并行方案的x264编码器中可以有N条流水线,序号分别是0,1,2,…,N-1(N大于或者等于1且N为整数)。图2是相关技术中的x264编码器实现帧级并行流水线的流程图。图2所示的流程是指从输入当前待编码帧,到输入当前待编码帧的下一待编码帧的流程。参考图2,首先可输入当前待编码帧。然后可确定当前流水线的序号以及当前流水线的下一条流水线的序号。接下来可由当前流水线编码当前待编码帧。在当前流水线的下一条流水线是非空闲流水线的情况下,说明当前流水线的下一条流水线中的帧是最早进入流水线的帧,等待当前流水线的下一条流水线完成编码并输出已编码帧。
在这里,当前流水线的序号可由i=(i’+1)%N求得,其中,i为当前流水线的序号,i’为当前待编码帧的上一待编码帧所置入的流水线的序号。当前流水线的下一条流水线的序号可由j=(i+1)%N求得,其中j为当前流水线的下一条流水线的序号。
但是,对于帧率为FPS(每秒有FPS帧图像)的视频,每帧的持续时间(两帧的间隔时间)为T=1/FPS。对于x264编码器实现帧级并行流水线的方案,即使编码速度足够快,编码一帧的时间小于T,也需要在输入第i+N-1帧时才能够输出第i帧,输出编码帧不够快。当N=1时,最小编码延迟为编码一帧的时间。当N>1时,最小编码延迟为T*(N-1),且最小编码延迟随着流水线数N的增加而增加。若某一帧的编码时间大于T*(N-1),不仅会使这一帧的编码延迟大于T*(N-1),而且增加的延迟会累积到后续帧的编码延迟上。
为了解决上述相关技术中存在的问题,本公开提出一种编码方法及装置,设置每次输入待编码帧时都确定最早进入流水线的帧,在最早进入流水线的帧完成编码的情况下输出,使得在每次输入待编码帧时都有机会输出最早编码的那一帧,而不必等到流水线满(所有流水线均不是空闲流水线)时才输出,能够加快输出帧的速度,降低最小编码延迟,且有机会降低累积的编码延迟。
下面,将参照图3至图7来详细描述根据本公开的编码方法及装置。
图3是根据一示例性实施例示出的一种编码方法的流程图。
在本公开的示例性实施例中,在当前待编码帧的下一待编码帧进入流水线之前,执行如图3所示的各步骤操作:
参照图3,在步骤301,可基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧。
根据本公开的示例性实施例,在步骤301之前,可输入当前待编码帧。
根据本公开的示例性实施例,当前流水线的序号是当前待编码帧的上一待编码帧所置入的流水线的第一序号和流水线总数做除法的余数,当前待编码帧的上一待编码帧所置入的流水线的第一序号是当前待编码帧的上一待编码帧所置入的流水线的序号加1。
根据本公开的示例性实施例,对于基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,首先可从当前流水线的下一条流水线开始,依次判断空闲流水线,直至确定第一条非空闲流水线,其中,空闲流水线是未置入待编码帧的流水线。然后可将第一条非空闲流水线中的待编码帧作为第一待编码帧。在这里,非空闲流水线是已置入待编码帧的流水线。
根据本公开的示例性实施例,对于从当前流水线的下一条流水线开始,依次判断空闲流水线,首先可从当前流水线的下一条流水线开始,以流水线的序号依次增序判断空闲流水线,直至判断到序号最大的流水线。然后可在序号最大的流水线是空闲流水线的情况下,从序号最小的流水线开始判断空闲流水线,直至判断到当前流水线的上一条流水线。在这里需要说明的是,在一直未判断到非空闲流水线的情况下,采用如上述所述的顺序进行判断,当确定第一条非空闲流水线时停止判断。
例如,若流水线的序号依次为0、1、2、3、4和5,在当前流水线的序号是2的情况下,则可以从序号为3的流水线开始,以3、4、5、0、1的顺序判断空闲流水线。
在步骤302,可在第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。
根据本公开的示例性实施例,在所有流水线中确定最早进入流水线的第一待编码帧,是分为当前待编码帧被置入当前流水线前和后两种情况的。
对于在当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧的情况,首先可在第一待编码帧未完成编码,且第一待编码帧所置入的流水线是当前流水线的下一条流水线的情况下,等待第一待编码帧完成编码。然后可获取完成编码的第一待编码帧并输出。
对于在当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧的情况,可在第一待编码帧未完成编码,且第一待编码帧所置入的流水线不是当前流水线的下一条流水线的情况下,将当前待编码帧的下一待编码帧置入当前流水线的下一条流水线进行编码。
对于当前待编码帧未被置入当前流水线的情况,首先可在当前流水线是空闲流水线的情况下,才在所有流水线中确定最早进入流水线的第一待编码帧。然后可在第一待编码帧完成编码的情况下输出之后,将当前待编码帧置入当前流水线进行编码。
下面,以当前待编码帧被置入当前流水线前和后两种情况,分别举例来具体说明根据本公开的示例性实施例中的编码方法。
对于在当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧的情况,图4是根据一示例性实施例示出的另一种编码方法的流程图。
参考图4,首先可输入当前待编码帧。
然后可将当前待编码帧置入当前流水线进行编码,其中,当前流水线的序号是当前待编码帧的上一待编码帧所置入的流水线的第一序号和流水线总数做除法的余数,当前待编码帧的上一待编码帧所置入的流水线的第一序号是当前待编码帧的上一待编码帧所置入的流水线的序号加1。在这里,N为流水线总数,当前流水线的序号可由i=(i’+1)%N求得,其中,i为当前流水线的序号,i’为当前待编码帧的上一待编码帧所置入的流水线的序号。当前流水线的下一条流水线的序号可由j=(i+1)%N求得,其中,j为当前流水线的下一条流水线的序号。
接下来可在所有流水线中确定最早进入流水线的第一待编码帧。具体是可从当前流水线的下一条流水线开始,依次判断是否是空闲流水线,直至确定第一条非空闲流水线。然后可将第一条非空闲流水线中的待编码帧作为第一待编码帧。具体的判断逻辑是从k=1开始,到k=N-1为止,以k的增序依次判断序号为(i+k)%N的流水线是否是空闲流水线(k的值取整数),直至确定第一条非空闲流水线。此时第一条非空闲流水线的序号是(i+k)%N(k的取值以具体的判断结果为准)。
然后可判断序号为(i+k)%N的流水线中的第一待编码帧是否完成编码,在第一待编码帧完成编码的情况下,将(i+k)%N赋值给j,在第一待编码帧未完成编码的情况下,j还是取(i+1)%N。
最后可判断序号为j的流水线是否是空闲流水线,此时的j的取值基于第一待编码帧的状态有两种情况,在序号为j的流水线是非空闲流水线的情况下,等待序号为j的流水线中的待编码帧完成编码,获取序号为j的流水线中完成编码的待编码帧作为已编码帧并输出,需要说明的是,序号为j的流水线也可以称为流水线j。
图4所示的流程,对于帧率为FPS(每秒有FPS帧图像)的视频,每帧的持续时间(两帧的间隔时间)为T=1/FPS。若编码速度足够快,编码一帧的时间小于T,输入第i+1帧时即可输出第i帧。因此,当N>1时,最小编码延迟为T,不会随着N的增加而增加。当N=1时,最小编码延迟为编码一帧的时间。由于在每一次输入待编码帧时,都有机会输出最早编码的那一帧,若某一帧的编码时间大于T,只要后续存在编码时间小于T的帧,编码延迟就可以降低。
对于当前待编码帧未置入当前流水线的情况,图5是根据一示例性实施例示出的又一种编码方法的流程图。
参考图5,首先可输入当前待编码帧。
然后可判断当前流水线是否是空闲流水线,其中,当前流水线的序号是当前待编码帧的上一待编码帧所置入的流水线的第一序号和流水线总数做除法的余数,当前待编码帧的上一待编码帧所置入的流水线的第一序号是当前待编码帧的上一待编码帧所置入的流水线的序号加1。在这里,N为流水线总数,当前流水线的序号可由i=(i’+1)%N求得,其中,i为当前流水线的序号,i’为当前待编码帧的上一待编码帧所置入的流水线的序号。
在当前流水线是非空闲流水线的情况下,说明当前流水线中的帧是第一待编码帧,等待第一待编码帧完成编码并输出之后,再由当前流水线编码当前待编码帧。
在当前流水线是空闲流水线的情况下,在所有流水线中确定最早进入流水线的第一待编码帧。具体是可从当前流水线的下一条流水线开始,依次判断是否是空闲流水线,直至确定第一条非空闲流水线。然后可将第一条非空闲流水线中的待编码帧作为第一待编码帧。具体的判断逻辑是从k=1开始,到k=N-1为止,以k的增序依次判断序号为(i+k)%N的流水线是否是空闲流水线(k的值取整数),直至确定第一条非空闲流水线。此时第一条非空闲流水线的序号是(i+k)%N(k的取值以具体的判断结果为准)。判断序号为(i+k)%N的流水线中的第一待编码帧是否完成编码,在第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。接着由当前流水线编码当前待编码帧。
最后,可设置当前待编码帧的下一待编码帧将被置入的的流水线序号i”是(i+1)%N。
图5所示的流程,对于帧率为FPS(每秒有FPS帧图像)的视频,每帧的持续时间(两帧的间隔时间)为T=1/FPS。若编码速度足够快,编码一帧的时间小于T,输入第i+1帧时即可输出第i帧。因此,无论N取何值,最小编码延迟为T,不会随着N的增加而增加。由于在每一次输入待编码帧时,都有机会输出最早编码的那一帧,若某一帧的编码时间大于T,只要后续存在编码时间小于T的帧,编码延迟就可以降低。
图6是根据一示例性实施例示出的一种编码装置的框图。参考图6,编码装置600包括确定单元601和第一输出单元602。
在当前待编码帧的下一待编码帧进入流水线之前:
确定单元601可基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧。
根据本公开的示例性实施例,还包括输入单元,输入单元可输入当前待编码帧。
根据本公开的示例性实施例,当前流水线的序号是当前待编码帧的上一待编码帧所置入的流水线的第一序号和流水线总数做除法的余数,当前待编码帧的上一待编码帧所置入的流水线的第一序号是当前待编码帧的上一待编码帧所置入的流水线的序号加1。
根据本公开的示例性实施例,对于在所有流水线中确定最早进入流水线的第一待编码帧,首先确定单元601可从当前流水线的下一条流水线开始,依次判断空闲流水线,直至确定第一条非空闲流水线,其中,空闲流水线是未置入待编码帧的流水线。然后确定单元601可将第一条非空闲流水线中的待编码帧作为第一待编码帧。在这里,非空闲流水线是已置入待编码帧的流水线。
根据本公开的示例性实施例,对于从当前流水线的下一条流水线开始,依次判断空闲流水线,首先确定单元601可从当前流水线的下一条流水线开始,以流水线的序号依次增序判断空闲流水线,直至判断到序号最大的流水线。然后确定单元601可在序号最大的流水线是空闲流水线的情况下,从序号最小的流水线开始判断空闲流水线,直至判断到当前流水线的上一条流水线。在这里需要说明的是,在确定单元601一直未判断到非空闲流水线的情况下,采用如上述所述的顺序进行判断,当确定第一条非空闲流水线时停止判断。
例如,若流水线的序号依次为0、1、2、3、4和5,在当前流水线的序号是2的情况下,则确定单元601可以从序号为3的流水线开始,以3、4、5、0、1的顺序判断是否是空闲流水线。
根据本公开的示例性实施例,确定单元601可在当前待编码帧未被置入当前流水线,且当前流水线是空闲流水线的情况下,在所有流水线中确定最早进入流水线的第一待编码帧。基于此,还包括编码单元,可在获取完成编码的第一待编码帧并输出的情况下,将当前待编码帧置入当前流水线进行编码。
第一输出单元602可在第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。
根据本公开的示例性实施例,确定单元601可在当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧。基于此,编码装置还包括第二输出单元,首先第二输出单元可在第一待编码帧未完成编码,且第一待编码帧所置入的流水线是当前流水线的下一条流水线的情况下,等待第一待编码帧完成编码。然后第二输出单元可获取完成编码的第一待编码帧并输出。
根据本公开的示例性实施例,确定单元601可在当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧。基于此,编码装置还包括置入单元,置入单元可在第一待编码帧未完成编码,且第一待编码帧所置入的流水线不是当前流水线的下一条流水线的情况下,将当前待编码帧的下一待编码帧置入当前流水线的下一条流水线进行编码。
图7是根据一示例性实施例的电子设备700的框图。
参照图7,电子设备700包括至少一个存储器701和至少一个处理器702,所述至少一个存储器701中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器702执行时,执行根据本公开的示例性实施例的编码方法。
作为示例,电子设备700可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备700并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备700还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备700中,处理器702可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器702可运行存储在存储器701中的指令或代码,其中,存储器701还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器701可与处理器702集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器701可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器701和处理器702可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器702能够读取存储在存储器中的文件。
此外,电子设备700还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备700的所有组件可经由总线和/或网络而彼此连接。
根据本公开的示例性实施例,还可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的编码方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-RLTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开的示例性实施例,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例性实施例的编码方法。
根据本公开的编码方法及装置,设置每次输入待编码帧时都确定最早进入流水线的帧,在最早进入流水线的帧完成编码的情况下输出,使得在每次输入待编码帧时都有机会输出最早编码的那一帧,而不必等到流水线满(所有流水线均不是空闲流水线)时才输出,能够加快输出帧的速度,降低最小编码延迟,且有机会降低累积的编码延迟。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (15)
1.一种编码方法,其特征在于,针对每一当前待编码帧,在当前待编码帧的下一待编码帧进入流水线之前,执行下述步骤:
基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧;
在所述第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。
2.如权利要求1所述的编码方法,其特征在于,所述基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,包括:
从所述当前流水线的下一条流水线开始,依次判断空闲流水线,直至确定第一条非空闲流水线,其中,所述空闲流水线是未置入待编码帧的流水线;
将所述第一条非空闲流水线中的待编码帧作为所述第一待编码帧。
3.如权利要求2所述的编码方法,其特征在于,所述从所述当前流水线的下一条流水线开始,依次判断空闲流水线,包括:
从所述当前流水线的下一条流水线开始,以流水线的序号依次增序判断空闲流水线,直至判断到序号最大的流水线;
在所述序号最大的流水线是空闲流水线的情况下,从序号最小的流水线开始判断空闲流水线,直至判断到所述当前流水线的上一条流水线。
4.如权利要求1所述的编码方法,其特征在于,所述基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,包括:
在所述当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧;
所述编码方法还包括:
在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线是所述当前流水线的下一条流水线的情况下,等待所述第一待编码帧完成编码,获取完成编码的第一待编码帧并输出;
在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线不是所述当前流水线的下一条流水线的情况下,将所述当前待编码帧的下一待编码帧置入所述当前流水线的下一条流水线进行编码。
5.如权利要求1所述的编码方法,其特征在于,所述基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧,包括:
在所述当前待编码帧未被置入所述当前流水线,且所述当前流水线是空闲流水线的情况下,在所有流水线中确定最早进入流水线的第一待编码帧。
6.如权利要求5所述的编码方法,其特征在于,在所述获取完成编码的第一待编码帧并输出之后,所述编码方法还包括:
将所述当前待编码帧置入所述当前流水线进行编码。
7.一种编码装置,其特征在于,包括:确定单元和第一输出单元;
针对每一当前待编码帧,在当前待编码帧的下一待编码帧进入流水线之前:
确定单元被配置为:基于当前待编码帧确定与当前待编码帧对应的当前流水线,基于当前流水线在所有流水线中确定最早进入流水线的第一待编码帧;
第一输出单元被配置为:在所述第一待编码帧完成编码的情况下,获取完成编码的第一待编码帧并输出。
8.如权利要求7所述的编码装置,其特征在于,确定单元被配置为:
从所述当前流水线的下一条流水线开始,依次判断空闲流水线,直至确定第一条非空闲流水线,其中,所述空闲流水线是未置入待编码帧的流水线;
将所述第一条非空闲流水线中的待编码帧作为所述第一待编码帧。
9.如权利要求8所述的编码装置,其特征在于,确定单元被配置为:
从所述当前流水线的下一条流水线开始,以流水线的序号依次增序判断空闲流水线,直至判断到序号最大的流水线;
在所述序号最大的流水线是空闲流水线的情况下,从序号最小的流水线开始判断空闲流水线,直至判断到所述当前流水线的上一条流水线。
10.如权利要求7所述的编码装置,其特征在于,确定单元被配置为:
在所述当前待编码帧被置入当前流水线后,在所有流水线中确定最早进入流水线的第一待编码帧;
还包括第二输出单元,被配置为:
在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线是所述当前流水线的下一条流水线的情况下,等待所述第一待编码帧完成编码,获取完成编码的第一待编码帧并输出;
还包括置入单元,被配置为:
在所述第一待编码帧未完成编码,且所述第一待编码帧所置入的流水线不是所述当前流水线的下一条流水线的情况下,将所述当前待编码帧的下一待编码帧置入所述当前流水线的下一条流水线进行编码。
11.如权利要求7所述的编码装置,其特征在于,确定单元被配置为:
在所述当前待编码帧未被置入所述当前流水线,且所述当前流水线是空闲流水线的情况下,在所有流水线中确定最早进入流水线的第一待编码帧。
12.如权利要求11所述的编码装置,其特征在于,还包括编码单元,被配置为:
在所述获取完成编码的第一待编码帧并输出的情况下,将所述当前待编码帧置入所述当前流水线进行编码。
13.一种电子设备,其特征在于,包括:
至少一个处理器;
至少一个存储计算机可执行指令的存储器,
其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到6中的任一权利要求所述的编码方法。
14.一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到6中的任一权利要求所述的编码方法。
15.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被至少一个处理器执行时实现如权利要求1到6中的任一权利要求所述的编码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111569103.6A CN114268793B (zh) | 2021-12-21 | 2021-12-21 | 编码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111569103.6A CN114268793B (zh) | 2021-12-21 | 2021-12-21 | 编码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114268793A CN114268793A (zh) | 2022-04-01 |
CN114268793B true CN114268793B (zh) | 2024-04-16 |
Family
ID=80828421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111569103.6A Active CN114268793B (zh) | 2021-12-21 | 2021-12-21 | 编码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114268793B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014205690A1 (zh) * | 2013-06-26 | 2014-12-31 | 北京大学深圳研究生院 | 视频压缩编码方法及编码器 |
CN105306951A (zh) * | 2015-10-11 | 2016-02-03 | 华南理工大学 | 数据压缩编码的流水线并行加速方法及其系统架构 |
CN111557093A (zh) * | 2017-12-12 | 2020-08-18 | 相干逻辑公司 | 低时延视频编解码器和利用并行处理的传输 |
CN112235579A (zh) * | 2020-09-28 | 2021-01-15 | 深圳市洲明科技股份有限公司 | 视频处理方法、计算机可读存储介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4616765B2 (ja) * | 2005-12-15 | 2011-01-19 | 富士通株式会社 | 動画像符号化装置 |
JP5791451B2 (ja) * | 2011-09-29 | 2015-10-07 | キヤノン株式会社 | 符号化装置およびプログラム |
US20180027240A1 (en) * | 2016-07-21 | 2018-01-25 | Mediatek Inc. | Video encoding apparatus for encoding video frame segment that is partitioned into multiple column tiles and associated video encoding method |
-
2021
- 2021-12-21 CN CN202111569103.6A patent/CN114268793B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014205690A1 (zh) * | 2013-06-26 | 2014-12-31 | 北京大学深圳研究生院 | 视频压缩编码方法及编码器 |
CN104396246A (zh) * | 2013-06-26 | 2015-03-04 | 北京大学深圳研究生院 | 视频压缩编码方法及编码器 |
CN105306951A (zh) * | 2015-10-11 | 2016-02-03 | 华南理工大学 | 数据压缩编码的流水线并行加速方法及其系统架构 |
CN111557093A (zh) * | 2017-12-12 | 2020-08-18 | 相干逻辑公司 | 低时延视频编解码器和利用并行处理的传输 |
CN112235579A (zh) * | 2020-09-28 | 2021-01-15 | 深圳市洲明科技股份有限公司 | 视频处理方法、计算机可读存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的AVS编码器帧内预测实现;向红莉;《软件》;20120627(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114268793A (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718570B (zh) | 用于数据库的数据迁移方法和装置 | |
US9032175B2 (en) | Data migration between storage devices | |
CN108108127B (zh) | 一种文件读取方法及系统 | |
US20180300250A1 (en) | Method and apparatus for storing data | |
CN110753084B (zh) | 上链数据读取方法、缓存服务器及计算机可读存储介质 | |
CN109213703B (zh) | 一种数据检测方法及数据检测装置 | |
US10761935B2 (en) | Accelerating system dump capturing | |
US20160328285A1 (en) | Error vector readout from a memory device | |
CN107729375B (zh) | 一种日志数据排序的方法及装置 | |
US20110270941A1 (en) | File decoding system and method | |
CN103514140B (zh) | 用于实现可重构系统中配置信息多发射的重构控制器 | |
CN111611479A (zh) | 用于网络资源推荐的数据处理方法及相关装置 | |
CN114268793B (zh) | 编码方法及装置 | |
CN112764684A (zh) | 一种存储系统的硬盘性能识别方法和系统 | |
US11429317B2 (en) | Method, apparatus and computer program product for storing data | |
WO2023103844A1 (zh) | 一种数据处理方法及装置 | |
GB2525613A (en) | Reduction of processing duplicates of queued requests | |
CN112988497B (zh) | 管理备份系统的方法、电子设备和计算机程序产品 | |
US20220375465A1 (en) | Methods to employ compaction in asr service usage | |
CN110716798B (zh) | 一种php定时任务管理方法及系统 | |
CN114205615B (zh) | 解码图像缓存区的管理方法和装置 | |
CN114222118B (zh) | 编码方法及装置、解码方法及装置 | |
CN116679991B (zh) | 存储器的启动管理方法、系统、设备及存储介质 | |
CN113626412B (zh) | 数据库迁移方法、装置、可读存储介质及计算机设备 | |
CN112702511B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |