利用编码器硬件对视频内容进行预处理的制作方法
【专利说明】利用编码器硬件对视频内容进行预处理
【背景技术】
[0001] 在视频编码中,可使用不同类型的帧编码方案以便改进编码效率(例如,以特定位 速率获得最佳视频质量)。例如,高级视频编码器可基于诸如场景改变和/或底层视频内容 中的大量运动的存在之类的因素在帧内编码帧(I帧)、帧间预测编码帧(P帧)和双向帧间 预测编码帧(B帧)的使用之间进行选择。对视频内容进行预处理可涉及到场景改变和运动 水平的检测,其中,常规解决方案可在可编程软件或固定功能硬件中执行预处理。在基于软 件的视频预处理解决方案中,性能和功率效率可能由于与高帧速率下的场景改变检测和运 动水平检测有关的复杂性而不良,特别是对于移动设备而言。虽然硬件加速视频预处理解 决方案可实现更好的性能和功率效率,但在实现那些解决方案中涉及到的硅面积可再次地 由于与场景改变和运动水平检测有关的复杂性而显著地增加。硅面积的此类增加在竞争性 的计算平台行业中可能是成本异常高昂的。
【附图说明】
[0002] 通过阅读以下说明书和所附权利要求书以及通过参考以下各图,本发明的实施例 的各种优点将变得对于本领域的技术人员而言清楚,在所述附图中: 图1是根据实施例的视频编码架构的示例的框图; 图2是根据实施例的在低延迟应用中对视频进行编码的方法的示例的流程图; 图3是根据实施例的在存储应用中对视频进行编码的方法的示例的流程图; 图4是根据实施例的视频编码器的示例的框图; 图5是根据实施例的具有导航控制器的系统的示例的框图;以及 图6是根据实施例的具有小形状因数的系统的示例的框图。
【具体实施方式】
[0003] 实施例可包括一种视频编码器,其具有用以相对于视频内容进行场景改变确定的 第一编码器实例。该视频编码器还可具有用以基于场景改变确定对视频内容进行编码的第 二编码器实例。
[0004] 实施例还可包括一种系统,其具有用以向系统供应功率的电池和具有用以相对于 视频内容进行场景改变确定的第一编码器实例的视频编码器。该视频编码器还可包括用以 基于场景改变确定对视频内容进行编码的第二编码器实例。
[0005] 实施例还可包括一种方法,其涉及到调用硬件视频编码器的多个并行实例,其中, 所述多个并行实例包括第一编码器实例和第二编码器实例。该方法还可提供使用第一编码 器实例来相对于视频内容进行场景改变确定并相对于视频内容进行运动水平确定。另外, 该方法可涉及到使用第二编码器实例基于场景改变确定和运动水平确定来对视频内容进 行编码。
[0006] 实施例还可包括一种计算机可读存储介质,其具有指令集,该指令集如果被处理 器执行则使得计算机调用硬件视频编码器的多个并行实例,其中,所述多个并行实例将包 括第一编码器实例和第二编码器实例。该指令如果被执行的话还可使用第一编码器实例来 相对于视频内容进行场景改变确定,并且使用第二编码器实例基于该场景改变确定对视频 内容进行编码。
[0007] 现在转到图1,示出了其中硬件视频编码器12 (12a、12b)基于视频内容16生成已 编码视频14的视频编码架构10。视频内容16可由图像捕捉设备和/或视频应用生成,视 频应用诸如例如视频会议应用、视频流式传输应用、录像摄像机应用、视频编辑应用、游戏 应用等。因此可将已编码视频14用于多种目的,诸如例如有线或无线传输、本地存储等,其 中,编码过程可减少要传输和/或存储的数据量。
[0008] 在所示示例中,硬件视频编码器12包括多个并行实例,其可用来增强性能、改 进功率效率、延长电池寿命等,而不增加专用于视频编码过程的半导体实用面积(real estate)(例如,娃面积)的量。更特别地,可使用第一编码器实例12a来相对于视频内容 16进行场景改变确定18和运动水平确定20。可使用第二编码器实例12b基于场景改变确 定18和运动水平确定20来对视频内容16进行编码(例如,压缩)。特别注意的是所示架构 10使用硬件视频编码器12的附加实例来执行视频预处理。因此,架构10可提供比常规的 基于软件的预处理解决方案更大的性能和更多的功率效率,并且可占用比常规的硬件加速 预处理解决方案明显更小的硅面积。
[0009] 图2示出了在低延迟应用中对视频进行编码的方法22,低延迟应用诸如例如视频 会议和/或视频流式传输应用。可用可执行软件将方法22实现为逻辑指令集,其被存储 在存储器的机器或计算机可读存储介质中,存储器诸如随机访问存储器(RAM)、只读存储器 (R0M)、可编程ROM (PR0M)、固件、闪存等,存储在可配置逻辑中,诸如例如可编程逻辑阵列 (PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)中,存储在使用电路技术的 固定功能逻辑硬件中,诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶 体管-晶体管逻辑(TTL)技术,或其任何组合。例如,可用一个或多个编程语言的任何组 合来编写将执行方法22中所示的操作的计算机程序代码,一个或多个编程语言包括诸如 Java、Smal I talk、C++等面向对象编程语言和常规过程编程语言,诸如"C"编程语言或类似 编程语言。
[0010] 所示处理块24提供调用硬件视频编码器的多个并行实例,其中,所述多个并行实 例包括第一编码器实例和第二编码器实例。可在框26处使用第一编码器实例来将视频帧 编码为帧内编码帧(I帧)。在这点上,I帧编码使用被约束在帧内的预测(即,预测不参考其 他帧)。因此,虽然I帧编码可能由于使用更多的位来表达视频信息而从编码观点看相对低 效,但其由于可执行I帧编码的速度而对在具有相对低延迟公差的视频应用(例如,流式传 输和/或会议应用)中的预处理而言可特别有用。可在框28处进行关于已编码I帧是否包 括场景改变的确定。
[0011] 场景改夺-编码位差 在一个示例中,可使用帧之间的已编码位差来确定场景改变是否已发生。特别地,可由 第一编码器实例将视频帧编码为具有恒定量化参数(即,无位速率控制)的I帧。一般地,视 频编码器可采用离散余弦变换(DCT)系数,其又可使得能够在频域内监视、分析和控制视频 内容。视频编码系统的量化参数(QP)可建立用于使DCT系数与步幅的有限集相关联的步 长。因此,QP的大值可表示相对大的步幅,其大致地近似空间变换,使得可以通过仅几个系 数来捕捉大部分信号。另一方面,QP的小值可以更准确地近似空间频谱,但是以更多的位 为代价。使用恒定QP因此可使得能够使用已编码位的数量作为用于确定场景改变是否已 发生的度量。
[0012] 例如,如果用于帧η的已编码位的数量是B(n)且用于帧n+1的已编码位的数量是 B(n+1),则可以将帧n+1检测为场景改变帧,如果以下的话:
【主权项】
1. 一种方法,包括: 调用硬件视频编码器的多个并行实例,其中,所述多个并行实例包括第一编码器实例 和第二编码器实例; 使用第一编码器实例来相对于视频内容进行场景改变确定,并相对于视频内容进行运 动水平确定;以及 使用第二编码器实例基于场景改变确定和运动水平确定来对视频内容进行编码。
2. 权利要求1的方法,还包括使用第二编码器实例基于运动水平确定来选择帧间预 测编码帧(P帧)和双向帧间预测编码帧(B帧)编码方案。
3. 权利要求1的方法,还包括使用第一编码器实例将视频内容的帧编码为帧内编码 帧(I帧)和帧间预测编码帧(P帧)中的一个或多个。
4. 一种系统,包括: 电池,用于向系统供电;以及 视频编码器,其包括用以相对于视频内容进行场景改变确定的第一编码器实例以及用 以基于该场景改变确定对视频内容进行编码的第二编码器实例。
5. 权利要求4的系统,其中,所述第一编码器实例将相对于视频内容进行运动水平确 定,并且其中,所述第二编码器实例将进一步基于运动水平确定来对视频内容进行编码。
6. 权利要