发明内容
有鉴于此,本发明提供了一种视频编码的方法和系统,以便于提高多编码器整体编码所产生图像的视觉效果。
一种视频编码的方法,该方法应用于包含至少两个编码器的视频编码系统,一帧图像被分割后形成的各子图像块按照连续的不同时刻被依次送入各编码器,该方法包括:
所述各编码器如果不存在上一相邻编码器,则在当前时刻接收到子图像块后,将接收到的子图像块进行编码后输出给码流拼接装置,并将产生的编码控制信息发送给下一相邻的编码器;
如果存在上一相邻编码器,则判断上一时刻接收到的编码控制信息携带的帧标识是否与当前时刻接收到的子图像块携带的帧标识相同;如果相同,则利用上一时刻接收到的来自上一相邻编码器的编码控制信息,对当前时刻接收到的子图像块进行编码后输出给码流拼接装置,并且如果同时存在下一相邻编码器,则当前时刻将产生的编码控制信息发送给下一相邻的编码器;如果不相同,则进行报错处理。
一种视频编码的系统,该系统包含图像分配装置、至少两个编码器和码流拼接装置;
所述图像分配装置,用于将一帧图像分割成与编码器相同数目的子图像块,并将各子图像块按照连续的不同时刻依次送入各编码器;
所述编码器,如果不存在上一相邻编码器,则用于在当前时刻接收到子图像块后,将接收到的子图像块进行编码后输出给所述码流拼接装置,并将产生的编码控制信息发送给下一相邻的编码器;如果存在上一相邻编码器,则用于判断上一时刻接收到的编码控制信息携带的帧标识是否与对当前时刻接收到的子图像块携带的帧标识相同;如果相同,则利用上一时刻接收到的来自上一相邻编码器的编码控制信息,对当前时刻接收到的子图像块进行编码后输出给所述码流拼接装置,并且如果同时存在下一相邻编码器,则在当前时刻将产生的编码控制信息发送给下一相邻的编码器;如果不相同,则进行报错处理;
所述码流拼接装置,用于将接收到的属于同一帧的各子图像块进行拼接。
由以上技术方案可以看出,本发明中的各编码器不再是各自独立地按照固定的编码控制参数进行编码,而是在各相邻的编码器之间传递编码后实时产生的编码控制信息,使得下一相邻编码器能够根据该编码控制信息进行编码。本发明这种各编码器进行协作编码的方式,能够用于实现在编码过程中控制编码后产生的码流总带宽不超过网络传输所设定的额定带宽,从而避免由于网络丢包所导致的图像花块;也能够用于实现同一帧中相邻子图像块边界处的量化值差别较小,从而使得各子图像块之间的图像细腻程度相似,从而提高了编码器整体编码所产生图像的视觉效果。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明所提供的方法应用于包含至少两个编码器的视频编码系统,一帧图像被切割后形成的各子图像块被分别依次送入各编码器。
其中,各编码器如果不存在上一相邻编码器,则在接收到子图像块后,将接收到的子图像块进行编码后输出给码流拼接装置,并将产生的编码控制信息发送给下一相邻的编码器;如果存在上一相邻编码器,则利用接收到的来自上一相邻编码器的编码控制信息,对接收到的子图像块进行编码后输出给码流拼接装置,并在存在下一相邻编码器时将产生的编码控制信息发送给下一相邻的编码器。
本发明中相邻编码器中涉及的“相邻”并不是指的物理位置上的相邻,而是在进行编码处理操作上的相邻,也就是说,如果两个编码器分别接收到一帧图像被分割所形成的子图像块中连续的两个子图像块,则该两个编码器为相邻的编码器。
上述方法中的编码器可以通过DSP、特定用途集成电路(ASIC,Application Specific Integrated Circuit)等来实现,以下均以DSP为例进行描述。
下面举一个具体的实施例对上述方法进行详细描述。图3为本发明实施例提供的方法流程图,在该实施例中以三个DSP进行整体编码为例,其所在的系统结构图可以如图4所示,图像分配装置将图像数据中的各帧数据分割成三个子图像块依次分别送入DSP 1、DSP 2和DSP 3,可以分别在t0、t1和t3时刻将同一帧中的三个子图像块分别送入DSP 1、DSP 2和DSP 3。如图3所示,该方法的处理流程可以为以下过程:
在t0时刻,DSP 1将第一帧图像的子图像块A1进行编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP 2。
在t1时刻,DSP1开始进行第二帧图像的子图像块B1的编码,编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP 2。在同一时刻,DSP 2利用DSP 1上一时刻发送来的编码控制信息对第一帧图像的子图像块A2进行编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP 3。
在t2时刻,DSP1开始进行第三帧图像的子图像块C1的编码,编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP2。在同一时刻,DSP 2利用DSP1上一时刻发送的编码控制信息对第二帧图像的子图像块B2进行编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP 3。在同一时刻,DSP 3利用DSP 2上一时刻发送的编码控制信息对第一帧图像的子图像块A3进行编码后输出给码流拼接装置。
在t3时刻,DSP1开始进行第四帧图像的子图像块D1的编码,编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP 2。在同一时刻,DSP 2利用DSP1上一时刻发送的编码控制信息对第三帧图像的子图像块C2进行编码后输出给码流拼接装置,并将编码产生的编码控制信息发送给DSP 3。在同一时刻,DSP 3利用DSP 2上一时刻发送的编码控制信息对第二帧图像的子图像块B3进行编码后输出给码流拼接装置。
以下时刻采用相似流程直至结束所述图像数据的编码,上述过程对应的编码时序图如图5所示。可见上述实施例中各DSP采用流水式的编码方式对一帧数据进行编码。
另外,由于各帧的子图像块都携带有该帧的帧标识,为了保证DSP在编码子图像块时使用的编码控制信息来源于同一帧的子图像块,DSP可以在发送的编码控制信息中携带帧标识,DSP在利用接收到的编码控制信息进行子图像块的编码之前,可以首先判断该编码控制信息中携带的帧标识是否与子图像块携带的帧标识相同,如果是,则继续执行编码的操作,否则,该DSP可以进行报错处理。
图3所示的实施例是通过对各DSP的编码时刻进行控制从而实现各DSP进行流水式编码,除此之外,还可以直接在编码控制信息中携带帧标识,仍以图4所示系统为例,DSP1对第一帧的子图像块A1进行编码后输出给码流拼接装置,并将编码产生的携带第一帧的帧标识的编码控制信息发送给DSP 2。DSP 2会在接收到第一帧的子图像块A2以及包含第一帧的帧标识的编码控制信息后,才会对子图像块A2进行编码并输出给码流拼接装置,并将编码产生的携带第一帧的帧标识的编码控制信息发送给DSP 3。DSP 3也会在接收到第一帧的字图像块A3以及包含第一帧的帧标识的编码控制信息后,才会对字图像块A3进行编码并输出给码流拼接装置。其他帧的图像编码过程类似。这种方式可以不对各DSP接收并编码子图像块的时刻进行严格设定。
上述过程中涉及的编码控制信息可以至少包含以下信息中的一种:该帧中已编码图像消耗的带宽和该帧中已编码图像最后一行的量化值。DSP在编码后可以将该帧中已编码图像所消耗的带宽和/或该帧中已编码图像最后一行的量化值携带在编码控制信息中发送给下一相邻DSP。
如果编码控制信息包括该帧中已编码图像所消耗的带宽,则接收到该编码控制信息的DSP可以根据已编码图像所消耗的带宽来调整自身对接收到的该帧的子图像块进行编码时的额定带宽,以保证该帧图像数据的整体带宽不超过网络传输的额定带宽。例如,DSP 1将编码A1后消耗的带宽发送给DSP 2,DSP 2利用编码A1后消耗的带宽对自身编码A2时的额定带宽进行调整,并将编码A2后消耗的带宽发送给DSP 3,此时编码A2后消耗的带宽也就是A1和A2共同消耗的带宽,DSP 2可以根据编码A2后消耗的带宽对编码A3时的额定带宽进行调整。
如果编码控制信息中包括该帧中已编码图像最后一行的量化值,则接收到编码控制信息的DSP根据已编码图像最后一行的量化值调整接收到的子图像块的第一行编码后的量化值,并利用该调整后的量化值对接收到的该帧子图像块的第一行进行编码,以此来防止相邻子图像块的量化值突变造成的图像细腻度相差较大,即避免边界效应。例如,DSP 1在对A1进行编码后,将子图像块A1中最后一行的量化值发送给DSP 2,DSP 2接收到该量化值后,可以将该量化值作为子图像块A2中第一行的量化值进行编码,并将编码后图像块A2最后一行的量化值发送给DSP 3,DSP 3接收到该量化值后,将该量化值作为子图像块A3中第一行的量化值进行编码。
另外,在上述实施例的过程中,DSP 3还可以以固定的周期逐级向DSP2和DSP 1反馈一个周期内DSP 3的编码状况信息,DSP 1和DSP 2可以根据DSP 3反馈的编码控制信息适当地调整自身的编码状况。例如,DSP 3可以每隔10帧向DSP 1和DSP 2反馈自身在该10帧内编码的平均带宽值或平均量化值,DSP 1和DSP 2可以根据该平均带宽值或平均量化值来调整自身编码时所使用的额定带宽或量化值。
以上是对本发明所提供方法进行的描述,下面对本发明提供的系统进行详细描述。图6为本发明实施例提供的视频编码的系统结构图,如图6所示,该系统可以包含图像分配装置601、包含至少两个编码器的编码器组602(图中以包含三个编码器为例)和码流拼接装置603。
图像分配装置601,用于将一帧图像分割成与编码器602相同数目的子图像块,并将各子图像块依次送入各编码器602。
编码器组602中的各编码器,如果不存在上一相邻编码器,则用于在接收到子图像块后,将接收到的子图像块进行编码后输出给码流拼接装置603,并将产生的编码控制信息发送给下一相邻的编码器;如果存在上一相邻编码器,则用于利用接收到的来自上一相邻编码器的编码控制信息,对接收到的子图像块进行编码后输出给码流拼接装置603,并且如果同时存在下一相邻编码器,则将产生的编码控制信息发送给下一相邻的编码器。
码流拼接装置603,用于将接收到的属于同一帧的各子图像块进行拼接。
其中,上述编码控制信息中可以携带帧标识;编码器组602中的各编码器如果存在上一相邻编码器,则仅在接收到的来自上一相邻编码器的编码控制信息中携带的帧标识和接收到的子图像块携带的帧标识相同时,执行所述利用接收到的来自上一相邻编码器的编码控制信息,对接收到的子图像块进行编码后输出给码流拼接装置603的操作。
另外,图像分配装置601可以将各子图像按照连续的不同时刻被依次送入编码器组602中的各编码器。
各编码器如果不存在上一相邻编码器,则在当前时刻接收到子图像块后,将接收到的子图像块进行编码后输出给码流拼接装置603,并将产生的编码控制信息发送给下一相邻的编码器;如果存在上一相邻编码器,则利用上一时刻接收到的来自上一相邻编码器的编码控制信息,对当前时刻接收到的子图像块进行编码后输出给码流拼接装置603,并且如果同时存在下一相邻编码器,则在当前时刻将产生的编码控制信息发送给下一相邻的编码器。
更优地,各编码器如果存在上一相邻编码器,则还用于判断上一时刻接收到的编码控制信息携带的帧标识是否与当前时刻接收到的子图像块携带的帧标识相同,如果相同,则执行对当前时刻接收到的子图像块进行编码的操作;否则,进行报错处理。
具体地,编码器组602中的各编码器如果存在上一相邻编码器,则还用于根据编码控制信息中包含的该帧中已编码图像消耗的带宽,调整对接收到的子图像块进行编码的额定带宽,并利用调整后的额定带宽对接收到的子图像块执行编码的操作;或者,根据编码控制信息中包含的已编码图像最后一行的量化值,调整对接收到的子图像块编码后第一行的量化值,并利用调整后第一行的量化值对接收到的子图像块执行编码的操作。
更优地,编码器组602中的各编码器如果不存在下一相邻编码器,则以预设的周期向其上一相邻编码器反馈当前周期内的编码状况信息;如果接收到下一相邻编码器反馈的编码状况信息,则根据接收到的编码状况信息调整自身的编码状况,并且,如果存在上一相邻编码器,将接收到的编码状况信息转发给上一相邻编码器。
由以上描述可以看出,本发明提供的方法和系统中,各编码器不再各自独立编码,而是如果不存在上一相邻编码器时,在接收到子图像块后,将接收到的子图像块进行编码后输出给码流拼接装置,并将产生的编码控制信息发送给下一相邻的编码器;如果存在上一相邻编码器,则利用接收到的来自上一相邻编码器的编码控制信息,对接收到的子图像块进行编码后输出给码流拼接装置,并且如果同时存在下一相邻编码器,则将产生的编码控制信息发送给下一相邻编码器。也就是说,本发明中的各编码器不再是各自独立地按照固定的编码控制参数进行编码,而是在各相邻的编码器之间传递编码后实时产生的编码控制信息,使得下一相邻编码器能够根据该编码控制信息进行编码。本发明这种各编码器进行协作编码的方式,能够用于实现在编码过程中控制编码后产生的码流总带宽不超过网络传输所设定的额定带宽,从而避免由于网络丢包所导致的图像花块;也能够用于实现同一帧中相邻子图像块边界处的量化值差别较小,从而使得各子图像块之间的图像细腻程度相似,从而提高了编码器整体编码所产生图像的视觉效果。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。