首页> 中国专利> 平行编码系统中执行速率控制的方法及平行编码系统

平行编码系统中执行速率控制的方法及平行编码系统

摘要

本发明公开了一种包含多个平行编码器的平行编码系统中执行速率控制的方法及平行编码系统。此方法可包含基于多个平行编码器的平行程度决定多个平行编码器中的一个的量化参数。此方法还可包含提供量化参数至多个平行编码器中的一个以编码视频序列的分块,以基于量化参数产生编码块。

著录项

  • 公开/公告号CN104052999A

    专利类型发明专利

  • 公开/公告日2014-09-17

    原文格式PDF

  • 申请/专利权人 广达电脑股份有限公司;

    申请/专利号CN201410089741.1

  • 申请日2014-03-12

  • 分类号H04N19/436;H04N19/176;H04N19/147;

  • 代理机构北京中誉威圣知识产权代理有限公司;

  • 代理人王正茂

  • 地址 中国台湾桃园县龟山乡文化村文化二路188号

  • 入库时间 2023-12-17 01:39:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-05

    授权

    授权

  • 2014-10-22

    实质审查的生效 IPC(主分类):H04N19/436 申请日:20140312

    实质审查的生效

  • 2014-09-17

    公开

    公开

说明书

相关申请案的交互参照

本申请案主张2013年3月14日及2014年2月5日于美国专利商标局分 别提出的美国专利临时申请案第61/785,270号及美国专利申请案第14/173, 259号的优先权权益,其所公开的内容在此全部纳入以作为参考。

技术领域

本发明涉及一种平行编码系统中执行速率控制的方法及平行编码系 统。

背景技术

除非文中另有指出,在此章节中的近似描述非本发明权利要求书的先前 技术,且并非承认包含在此章节的先前技术中。

为了在有限频带传输频道传送数码视频帧(video frames),或者使用数码存 储设备存储及读取视频帧,当要最小化数据质量(quality)的损失时,会采用压 缩技术以降低数据带宽。举例而言,采用MPEG-2压缩技术的编码器接受原 始视频帧的输入序列而后输出已编码的视频帧的序列。编码器的控制参数, 传统上称为量化参数(Quantization Parameter,QP),其控制编码后的输出质量, 即人眼所观看到输出的好坏。

通过熟知的MPEG-2,较低数值的量化参数QP产生较高质量的输出。此 外,量化参数QP亦会影响输出的大小,所谓输出的大小为编码输出帧所需要 的位数量。然而,由于输出帧的大小为量化参数QP及输入帧的复杂度 (complexity)的函数,因此仅为间接的影响。通常而言,越复杂的视频序列要 求越多的位,越高品质要求越多的位。

虽然编码器通过量化参数QP而参数化,实际上很多应用不仅需施加限制 在输出质量上,亦得施加限制在输出位的数量上。举例而言,若已编码的视 频帧经由每秒可传送N位的网络传送,编码器必须最多每秒产生N位。由于 输出位的数量亦会被输入序列的复杂度影响,量化参数QP及输出大小之间的 关系为间接的。因此,设定可达成所需的输出速率的量化参数QP通常是困难 的。

发明内容

有鉴于上述熟知的问题,本发明的目的就是提供一种包含多个平行编码 器的平行编码系统中执行速率控制的方法,包含:对多个平行编码器中的一 个,基于有关多个平行编码器的平行程度决定量化参数,其中平行程度为对 应多个平行编码器平行处理的视频序列的分块数量;以及提供量化参数至多 个平行编码器中的一个,基于量化参数对视频序列的分块进行编码以产生编 码块。

前述的分块数量为对应多个平行编码器能够平行处理的视频序列的分块 最大数量。

前述的决定量化参数还包含:通过多个平行编码器决定已编码开始但尚 未完成的未完成分块数量;以及根据未完成分块数量增加平行程度,其中未 完成分块数量最大为多个平行编码器曾经平行处理的分块最大数量。

前述的决定量化参数还包含:通过平行程度分割增益参数以决定量化参 数,且将分割的结果与错误参数相乘。

此外,前述的方法还包含:基于编码块的所需大小及实际大小,在编码 视频序列的分块后更新错误参数。

本发明还提出一种平行编码系统,包含:多个平行编码器,用来编码视 频序列的分块;以及多个速率控制器,分别用来通过下列方法执行多个平行 编码器的速率控制:对多个平行编码器中的一个,基于有关多个平行编码器 的平行程度决定量化参数,其中平行程度为对应多个平行编码器平行处理的 视频序列的分块数量;以及提供量化参数至多个平行编码器中的一个,基于 量化参数对视频序列的分块进行编码以产生编码块。

前述的分块数量为对应多个平行编码器能够平行处理的视频序列的分块 最大数量。

前述的多个速率控制器系通过下列方法决定量化参数:通过多个平行编 码器决定已编码开始但尚未完成的未完成分块数量;以及根据未完成分块数 量增加平行程度,其中未完成分块数量最大为多个平行编码器曾经平行处理 的分块最大数量。

前述的多个速率控制器为通过平行程度分割增益参数以决定量化参数, 且将分割的结果与错误参数相乘。

前述的多个速率控制器还用来基于编码块的所需大小及实际大小,在编 码视频序列的分块后更新错误参数。

前述的多个平行编码器使用下列视频编码标准中的至少一个:MPEG-1、 MPEG-2、MPEG-4及H.264/AVC。

前述的平行编码系统提供云端编码服务至多个远程使用者。

为使贵审查员对本发明的技术特征及所达到的技术效果有更进一步的了 解与认识,谨佐以较佳的实施例及配合详细的说明如后。

附图说明

图1为根据本发明的至少一些实施例,在包含多个平行编码器的平行编 码系统中执行速率控制的示例性过程的流程图;

图2为根据本发明的至少一些实施例,执行速率控制的示例性平行编码 系统的示意图;

图3为根据本发明的至少一些实施例,包含图2的速率控制器及编码器 的处理单元的详细实施例的示意图;

图4为根据本发明的至少一些实施例,使用图3的速率控制器及编码器 执行速率控制的示例性过程的流程图;以及

图5为根据本发明的至少一些实施例,用来在包含多个平行编码器的平 行编码系统中执行速率控制的示例性系统。

具体实施方式

在下文的详细描述中,为参照形成下文的一部份的附图。在附图中,相 同符号通常表示相同元件,除非文中另有指出。描述于实施方式中的示例性 实施例、附图及权利要求书非用来限制性其含义。可适用于其他实施例,且 可进行其他变更,而不背离本发明的精神与范畴。将被容易地理解的是,本 发明通常在文中所描述的实施例及所示的附图可以不同的型态而广泛地安 排、置换、结合及设计,且皆明确地在文中公开。

本发明的全文中,编码器的示例性控制参数,如量化参数(Quantization  Parameter,QP),可用来控制编码的输出质量(quality)。术语“速率控制”为 表示为维持所欲的传输速率而产生的输出位所对应的量化参数QP的数值。术 语“平行编码系统”表示为能够在实质上相同时间使用多个平行编码器执行 多个编码操作的系统。

图1为根据本发明的至少一些实施例,在包含多个平行编码器的平行编 码系统中执行速率控制的示例性过程的流程图;过程100可包含通过一个或 多个结构所示的一个或多个操作、步骤或行为,如步骤110及120。不同的步 骤可基于所需的实施而结合成更少的步骤、分割成额外的步骤及/或消除。

在步骤110中,量化参数QP的决定基于有关多个平行编码器的平行程度 而得用于多个平行编码器中的一个。平行程度,在全文中亦表示为P,对应于 平行处理的多个平行编码器的视频序列的分块(chunks)的数量。在某些实施例 中,P可对应于能够平行处理的多个平行编码器视频序列的分块的最大数量。 P亦可对应于曾经平行处理的多个平行编码器的视频序列的分块的最大数量。

在步骤120中,量化参数QP被提供至多个平行编码器中的一个,以基于 此量化参数QP对视频序列的一个分块编码。

根据本发明的至少一些实施例,基于平行程度所决定的量化参数QP可改 善在平行编码系统中的速率控制的稳定度。特别是,由于编码器为独立操作, 平行程度可用于速率控制以避免或降低量化参数QP由于平行编码器的大量 有效增益而未随时间收敛的可能性。

此外,图1的示例性过程可降低编码时间及增加输出速率,通过促进即 时视频编码。图1的示例性过程可用于任何适合的视频应用,如视频通信、 安全性、监控及娱乐,且甚至特别有利于更快速的速率控制及编码(如高画质 电视(HDTV)、即时视频流串、视频点播(VOD)等)的应用。在其他实施例中, 平行编码系统可提供云端编码至多个远程使用者等。

图2为根据本发明的至少一些实施例,可执行图1的速率控制的示例性 平行编码系统200的示意图。平行编码系统200包含多个可同时操作的处理 单元210。各个处理单元210包含相互影响的速率控制器220及编码器240, 以将视频序列206的分块202编码成编码块(encoded chunks)204。

处理单元210,可使用软件、硬件或两者的组合而实施。处理单元210的 数量(如N)可取决于应用及基础系统硬件等,为任何适合的数量。在各个处理 单元210中,速率控制器220决定编码器240的量化参数QP222的数值,以 将分块202编码成编码块204。举例而言,速率控制器1决定编码器1的量化 参数QP1,以将分块基于量化参数QP1编码成编码块1等。

本发明的全文中,术语“分块(chunk)”,如分块202,通常可表示视频序 列的一部份,如视频序列206的一部份。举例而言,视频序列206包含多个 帧,其更可分割成大区块(macroblocks)(通常为16×16像素,但不限于此大小) 及包含任意数量大区块的切片(slices)等。实际上,分块202可为任何适合的大 小,大如整个视频帧、小如大区块或任何介于二者之间的大小。当然,分块 202可大于整个视频帧或小于大区块。

虽不同处理单元210的分块202以相同大小绘示,其可为不同的大小。 举例而言,使用MPEG-2,分块1可为大区块,且分块N可为切片或切片的 群组等。如此一来,分块的大小可视为速率控制的单元。分块202可分配至 使用任何适合的分配运算方法的不同的处理单元210。

根据本发明的一些实施例,速率控制器220为基于平行编码器240的平 行程度来决定量化参数QP222,在图2中平行程度以“P”表示。举例而言, 平行程度P224可基于通过平行编码器240平行编码的分块的数量而决定。在 平行编码系统220中的量化参数222及平行程度P之间的相互影响涉及速率 控制器220及编码器240之间的控制回路的稳定度。

更详细地,在接下来的编码系统中(假设仅具有一个处理单元210的系统, 即N=1),分块202为接续地编码。举例而言,当使用MPEG-2编码第i个分 块时,速率控制器220设定量化参数QP[i]的数值如下所示:

QP[i]=GAIN*ERROR[i]   (1)

在公式(1)中,GAIN为适当的(通常为正值)常数且在量化参数为QP[i]的 质量下执行编码器。编码器240产生大小为ACTUAL[i]位226的编码块204 时,不仅取决于QP[i],亦取决于视频序列的复杂度。在编码第i个分块之后, 速率控制器220便基于ACTUAL[i]226及所需的第i个分块DESIRED[i]228 的大小来更新错误参数ERROR[i]。

ERROR[i+1]=ERROR[i]+(ACTUAL[i]-DESIRED[i])   (2)

ERROR[i+1]用来计算接下来的分块i+1的QP[i+1]。若编码器240有系统 地输出相较于所需的更多的位(即ACTUAL[i]>DESIRED[i]),ERROR[i+1]便 随着时间而增长。如此会增加接下来的分块202的量化参数QP222的数值, 造成这些分块202使用较少位以完成所需的输出速率。

相较之下,对于图2的N>1编码器的平行编码系统200,分块202(如分 块1)与其他分块202(如分块N)同时编码,且不使用其他处理单元210(如处理 单元N)的反馈。举例而言,分块1的量化参数QP1不基于反馈ACTUALN而 决定。此举在数学上约等同于使用较接下来的步骤中大P倍的GAIN的数值, 其中P为被预定来同时执行的分块的最大数量。换言之,若公式(1)中的QP[i] =GAIN*ERROR[i]的计算在各个处理单元210重复执行,系统200的有效增 益约为GAIN*P。如此一来,虽GAIN可为接下来的系统的稳定数值,然而平 行系统200则并非如此。

此外,下述的实施例为示意GAIN的选择的重要性。以简化及示例为目 的,考虑N=1的例子。假设量化参数QP的范围为[0…10],编码器输出(10-QP) 位/每分块,ERROR[0]初始为0,GAIN=2且DESIRED=5位/分块。表1显 示使用公式(1)及(2)所计算的ERROR[i]、QP[i]、ACTUAL[i]于i=0,…,5的数 值:

表1:由于不稳定度而造成量化参数QP的波动

i ERROR[i] QP[i]=GAIN*ERROR[i] ACTUAL[i]=10-QP 0 0 0 10 1 5 10 0 2 0 0 10 3 5 10 0 4 0 0 10 5 5 10 0

上述循环为重复极值在0及10之间波动的量化参数QP,而从未收敛至 最佳(optimal)数值如QP=5。在此实施例中,结果GAIN<2的数值最终收敛 至量化参数QP的稳定数值,而大于GAIN≥2则从未收敛。如此一来,若GAIN 变得太大,速率控制器220及编码器240之间的控制回路则变得不稳定。

为改善图2的平行编码系统200的稳定度,速率控制器220根据下列公 式(3)以基于平行程度P224而决定量化参数QP222:

QP=(GAIN/P)*ERROR   (3)

在某些实施例中且如上所述,平行程度P可为平行编码器240能够平行 处理的分块的最大数量。在图2所示的实施例中,平行程度P可高达N,即 编码器240的数量。如前所述,若GAIN太大,则控制回路变得不稳定。无 论P为何,得通过平行程度P来分割GAIN而达成稳定控制回路的功效。

图3为根据本发明的至少一些实施例,包含速率控制器220及编码器240 的处理单元210的详细实施例的示意图。在图2及图3中,虽速率控制器220 及编码器240以分别的方块显示,其应被理解的是,速率控制器220亦可为 编码器240的一部份。

在图3的实施例中,速率控制器220还包含分别在分块编码执行之前及 之后的BEGIN_CHUNK()310及END_CHUNK()320。与图2相同,速率控制 器220基于编码器240的平行程度P而决定量化参数QP222(如QPn),以将 分块202编码成编码块204。

编码器240可使用任何适合的视频编码标准,如MPEG-1、MPEG-2、 MPEG-4、H.264/AVC(先进视频编码(Advanced Video Coding))等。举例而言, MPEG-2视频编码通常包含下列元件:动作估计单元330、动作补偿单元332、 转换单元334、量化单元336、反向量化单元338、反向转换单元340、帧存 储器单元342、可变长度编码器单元344及输出缓冲单元346。元件330至346 可使用任何适合的软件、硬件或两者的组合而实施。

一般而言,视频序列包含相当大量冗余量(redundancies)在帧内部之间, 如时间及空间冗余量。帧压缩(intra-frame compression)技术可通过转换编码 (transform coding)降低单一帧的空间冗余量,并可通过编码预测帧及目前帧之 间的差异以降低空间冗余量。在图3的实施例中,动作估计单元330根据先 前帧以搜寻最佳动作向量,动作补偿单元332用来降低时间冗余量。转换单 元334执行转换编码(如离散余弦转换(discrete cosine transform))以编码不同帧 的动作补偿预测,以降低空间冗余量。

转换单元334,产生的转换系数通过量化单元336以量化,其结果通过可 变长度编码器单元344来编码。编码块204在传输或存储前存储在输出缓冲 单元346中。反向量化单元338及反向转换单元340(如反向离散余弦转换 (inverse discrete cosine transform))用来重建参照资料以作为后续使用。动作补 偿单元330亦可处理参照资料以使用在动作估计单元330中。

在图3的实施例中,当编码器240为了编码分块202而将量化参数QP222 的数值发至量化单元336时,编码器240呼叫BEGIN_CHUNK()310以回传 量化参数QP222的数值。在编码分块202之后,编码器240呼叫 END_CHUNK(ACTUAL)320,其中ACTUAL为用来编码分块202的位实际 数量。BEGIN_CHUNK()310及END_CHUNK()320可通过多个分块202的不 同的平行编码器240以任何顺序而同时被呼叫,但END_CHUNK()必须在相 同分块202的对应的BEGIN_CHUNK()之后被呼叫。

BEGIN_CHUNK()310及END_CHUNK()320可使用任何适合的软件、硬 件或两者的组合而实施。举例而言,BEGIN_CHUNK()310及END_CHUNK() 320为可被编码器240执行的功能函数。表2为根据本发明的至少一些实施例, 显示BEGIN_CHUNK()310及END_CHUNK()320的示例性虚拟码 (pseudo-code)。变数OUTSTANDING及P(表2,第3行及第6行)在平行速率 控制器220及编码器240之间被引用。

表2:BEGIN_CHUNK()310及END_CHUNK()320之虚拟码

图4为根据本发明的至少一些实施例,使用图2及图3的速率控制器220 及编码器240执行速率控制的示例性过程400的流程图。过程400可包含通 过一个或多个方块所示的一个或多个操作、步骤或动作,如通过编码器240 执行的步骤410至434,及通过速率控制器220执行的步骤412至418及步骤 432至434。虽步骤以不同顺序描述,这些步骤亦可同时执行,及/或以文中所 述的不同顺序执行。此外,不同的步骤可基于所需的实施而结合成更少的步 骤、分割成额外的步骤及/或消除。步骤410至434可针对每一个由编码器240 编码的分块202而重复执行。

在图4的步骤410中,平行编码系统200的编码器240(如编码器n)引发 (invoke)BEGIN_CHUNK(),以获得量化参数QP(如QPn)的数值。

在图4的步骤412至418中,速率控制器220(如速率控制器n)执行 BEGIN_CHUNK()。在步骤412中(涉及表2的第1至3行及第21行),计数 器OUTSTANDING表示编码已经开始但尚未完成的分块的数量,在每次 BEGIN_CHUNK()被呼叫时增加(increased)。在步骤414中(涉及表2的第4至 6行及第22行),平行程度P初始值为1,且根据OUTSTANDING而增加。 举例而言,若有5个平行编码器240,速率控制器220根据OUTSTANDING 增加平行程度P的数值,最多增加至最大值5。在步骤416及418中(涉及表2 的第23至24行),速率控制器220使用公式(3)决定量化参数QP,并且提供 结果至编码器240。

在图4的步骤420中,编码器240(如编码器n)基于通过速率控制器220(如 速率控制器n)提供的量化参数QP(如QPn)来编码分块202以产生编码块204。 举例而言,如参照图3的解释,可使用动作估计单元330、动作补偿单元332、 转换单元334、量化单元336、反向量化单元338、反向转换单元340、帧存 储器单元342、可变长度编码器单元344及输出缓冲单元346。

在图4的步骤430中,编码器240(如编码器n)在产生编码块204之后引 发END_CHUNK(ACTUAL)。

在步骤432及434中,速率控制器220(如速率控制器n)执行 END_CHUNK(ACTUAL)。在步骤432中(涉及表2的第33行),速率控制器 220(如速率控制器n)基于编码块204的ACTUAL之大小(size)及DESIRED的 大小(size)更新ERROR。在步骤434中(涉及表2之第36行),速率控制器220(如 速率控制器n)减少(decrease)计数器OUTSTANDING以指出目前分块的编码处 理的完成。如436所指出,由于OUTSTANDING为分享于多个速率控制器220 之中的参数(涉及表2的第3行),当下次被引发时,BEGIN_CHUNK()将使用 OUTSTANDING的最新数值。

必须说明的是,任何适合的平行计算技术可用来在各个处理单元210的 速率控制器220中实施BEGIN_CHUNK()及END_CHUNK()。举例而言,处 理单元210可作为称之为线程(thread)的平行程序来实施。再者,由于 BEGIN_CHUNK()及END_CHUNK()可通过多个编码器240而同时呼叫,闩锁 L用来提供互斥锁(见表2的第18、25、31、37行)。一般而言,闩锁为程序 化语言结构,其允许一个编码器240控制变数且预防其他编码器240读取或 写入。举例而言,若一个编码器240锁住变数OUTSTANDING及P,没有其 他编码器240可对其更新,以避免资料错误。

上述实施例可通过硬件、软件或固件或其组合而实施。图5为根据本发 明的至少一些实施例,用来在操作系统中执行网络内部状态监控(network  introspection)的示例性系统。示例性系统500可包含处理器510、存储器520、 网络介面装置540及在这些所示的元件及其他元件之中促进连通的总线530。

处理器510执行参照图1至图4在文中所述的过程。虽显示一个处理器 510,然而多个处理器510亦可用来实施参照图2及图3所解释的平行编码系 统200。存储器520可存储参照图1至图4所述的平行编码系统200中执行速 率控制所需的任何信息,如平行编码器240的平行程度(P)及在表2中的其他 参数等。存储器520还可存储可通过处理器510执行的机器可读取指令524, 以使处理器执行参照图1至图4所述的过程。

文中所述的方法、过程及单元可通过硬件(包含硬件逻辑电路)、软件或固 件或其组合而实施。术语“处理器”广泛地解释为包含处理单元ASIC、逻辑 单元或可程序化门极阵列等。

上述所介绍的技术可在特殊目的固线式电路(special-purpose hardwired  circuitry)、与可程序化电路连接的软件及/或固件或其组合中实施。特殊目的 固线式电路可例如为一个或多个特定应用集成电路(application-specific  integrated circuits,ASICs)、可程序化逻辑装置(programmable logic devices, PLDs)、可程序化逻辑门阵列(field-programmable gate arrays,FPGAs)及其他的 形式。

前文的详细描述已提出经由使用结构图、流程图及/或实施例的装置及/ 或过程的各种不同的实施例。在此包含一个或多个功能及/或操作的结构图、 流程图及/或实施例的范围中,将被本领域技术人员理解的是,在此结构图、 流程图或实施例中的各个功能及/或操作可通过广泛地硬件、软件、固件或任 何其实际上的组合而独立地及/或合并地实施。

本领域技术人员将理解的是,文中所公开的实施例的整体或部分的某些 方面,可在集成电路如在一个或多个电脑上执行的一个或多个计算机程序(如 在一个或多个电脑系统上执行的一个或多个程序)、固件或任何其实际上的组 合而等同实施,且电路的设计及/或软件及/或固件的代码的编写包含在本发明 所公开的范围中。

实施文中所述的技术的软件及/或固件可存储在非暂态电脑可读取存储媒 介,且可通过一个或多个通用或特殊目的可程序化微处理器而执行。文中所 使用的术语“电脑可读取存储媒介”包含任何以机器(如电脑、网络装置、个 人数码助理(PDA)、移动装置、制造工具、一个或多个处理器所构成的任何装 置)可存取的形式提供(即存储即/或传输)数据的任何机构。举例而言,电脑可 读取存储媒介包含可记录/不可记录媒介(如只读内存read-only memory, ROM)、随机存取存储器(random access memory,RAM)、磁碟存储媒介、光 学存储媒介、闪速存储器装置等)。

附图仅为实施例的说明,其中附图中所示的单元或程序并非实施本发明 的必要基础。本领域技术人员将理解的是,实施例中的装置的单元可安排在 文中所述的实施例的装置中,或者可选择性地位于不同于实施例的一个或多 个装置中。所述的实施例中的单元可结合成一个组件或更可分割成多个次单 元。

本领域技术人员应当理解,可由上述实施例进行各种变动及/或修改,而 不背离本发明的广泛的范畴。因此,本发明的实施例考虑到所说明的所有方 面而不为其所限。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号