片上处理视频数据的方法和系统转让专利

申请号 : CN200610003754.8

文献号 : CN1825964B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 保罗·杨·卢韦平·潘

申请人 : 美国博通公司

摘要 :

本发明公开一种片上处理视频数据的方法和系统。所述方法包括在芯片上接收当前视频帧内的多个行;将在所述当前视频帧内的所述多个行之前出现的多个之前已处理的视频帧的至少一部分存储于位于所述芯片外的第一存储器内;将所述当前视频帧内所述接收的多个行的至少一部分存储于位于所述芯片上的存储器内;在所述芯片上,利用所述多个之前已处理的视频帧的所述存储的至少一部分对所述当前视频帧内所述接收的多个行的第一部分进行编码。所述当前视频帧内所述接收的多个行的所述存储的至少一部分被转换为YUV格式。

权利要求 :

1.一种片上处理视频数据的方法,其特征在于,所述方法包括:

在芯片上接收当前视频帧内的多个行;

将所述接收的当前视频帧内的多个行的至少一部分转换成YUV格式数据并存储在所述芯片上的存储器内;

从所述芯片外的第一存储器内获取在所述当前视频帧内的所述多个行之前出现的多个之前已处理的视频帧的至少一部分;

在所述芯片上,利用所述多个之前已处理的视频帧的所述至少一部分对从所述芯片上的存储器内读取的所述当前视频帧内所述多个行的第一部分的YUV格式数据进行编码;

将编码后的所述当前视频帧内所述多个行的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内;

其中,利用所述多个之前已处理的视频帧的所述至少一部分对所述当前视频帧内所述多个行的第一部分的YUV格式数据进行编码进一步包括:对生成的量化频率系数进行反向量化和反向离散余弦变化以生成至少一个预测误差,基于所述至少一个预测误差生成至少一个重建的参考帧存储于所述芯片外的第二存储器内;

所述方法进一步包括:采用第一片上加速器处理与动作相关的计算,采用第二片上加速器处理与离散余弦变换、量化、反向离散余弦变换和反向量化相关的集中计算处理,采用第三片上加速器处理数据的预处理;

所述方法进一步包括:采用变长编码协处理器以基于每个周期协助CPU处理变长编码相关任务。

2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:将所述多个之前已处理的视频帧的第一部分从位于所述芯片外的所述第一存储器传送至位于所述芯片上的所述存储器内。

3.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:基于所述当前视频帧内所述接收的多个行的第二部分与所述多个之前处理的视频帧的第二部分之间的差别,确定至少一个预测误差。

4.根据权利要求3所述的方法,其特征在于,所述方法进一步包括:对所述确定的至少一个预测误差进行离散余弦变换和量化以获得至少一个量化的频率系数,存储于所述芯片上的紧耦合存储器内。

5.一种片上处理视频数据的方法,其特征在于,所述方法包括:

在芯片上接收当前视频帧内的多个已编码宏块;

将所述接收的当前视频帧内的多个已编码宏块的至少一部分存储于所述芯片上的存储器内;

从所述芯片外的第一存储器内获取在所述当前视频帧内所述多个已编码宏块之前出现的多个之前已解码的视频帧的至少一部分;

在所述芯片上,利用所述多个之前已解码的视频帧的所述至少一部分对从所述芯片上的存储器内读取的所述接收的当前视频帧内的多个已编码宏块的第一部分进行解码;

将解码后的所述当前视频帧内的所述多个已编码宏块的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内;

其中,利用所述多个之前已解码的视频帧的所述至少一部分对从所述芯片上的存储器内读取的所述接收的当前视频帧内的多个已编码宏块的第一部分进行解码进一步包括:对生成的量化频率系数进行反向量化和反向离散余弦变化以生成至少一个预测误差,基于所述至少一个预测误差和所述多个之前已解码的视频帧的所述存储的至少一部分,生成至少一个重建的宏块存储于所述芯片外的第二存储器内;

所述方法进一步包括:采用第一片上加速器处理与动作相关的计算,采用第二片上加速器处理与离散余弦变换、量化、反向离散余弦变换和反向量化相关的集中计算处理,采用第三片上加速器处理数据的预处理;

所述方法进一步包括:采用变长编码协处理器以基于每个周期协助CPU处理变长编码相关任务。

6.根据权利要求5所述的方法,其特征在于,所述方法进一步包括:对应所述当前视频帧内所述接收的多个已编码宏块的所述解码的第一部分,生成至少一个量化的频率系数。

7.一种片上处理视频数据的系统,其特征在于,所述系统包括:

至少一个处理器,在芯片上接收当前视频帧内的多个行;

所述至少一个处理器将所述接收的当前视频帧内的多个行的至少一部分转换成YUV格式数据并存储在所述芯片上的存储器内;

所述至少一个处理器从所述芯片外的第一存储器内获取在所述当前视频帧内的所述多个行之前出现的多个之前已处理的视频帧的至少一部分;

所述至少一个处理器在所述芯片上,利用所述多个之前已处理的视频帧的所述至少一部分对从所述芯片上的存储器内读取的所述当前视频帧内所述多个行的第一部分的YUV格式数据进行编码;

所述至少一个处理器将编码后的所述当前视频帧内所述多个行的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内;

其中,所述至少一个处理器进一步对生成的量化频率系数进行反向量化和反向离散余弦变化以生成至少一个预测误差,基于所述至少一个预测误差生成至少一个重建的参考帧存储于所述芯片外的第二存储器内;

所述系统包括片上加速器,其中,第一片上加速器处理与动作相关的计算,第二片上加速器处理与离散余弦变换、量化、反向离散余弦变换和反向量化相关的集中计算处理,第三片上加速器处理数据的预处理;

所述系统进一步包括变长编码协处理器,所述变长编码协处理器基于每个周期协助CPU处理变长编码相关任务。

8.根据权利要求7所述的系统,其特征在于,所述至少一个处理器将所述多个之前已处理的视频帧的第一部分从位于所述芯片外的所述第一存储器传送至位于所述芯片上的所述存储器内。

9.一种片上处理视频数据的系统,其特征在于,所述系统包括:

至少一个处理器,在芯片上接收当前视频帧内的多个已编码宏块;

所述至少一个处理器将所述接收的当前视频帧内的多个已编码宏块的至少一部分存储于所述芯片上的存储器内;

所述至少一个处理器从所述芯片外的第一存储器内获取在所述当前视频帧内所述多个已编码宏块之前出现的多个之前已解码的视频帧的至少一部分;

所述至少一个处理器在所述芯片上,利用所述多个之前已解码的视频帧的所述至少一部分对从所述芯片上的存储器内读取的所述接收的当前视频帧内的多个已编码宏块的第一部分进行解码;

所述至少一个处理器将解码后的所述当前视频帧内的所述多个已编码宏块的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内;

其中,所述至少一个处理器对生成的量化频率系数进行反向量化和反向离散余弦变化以生成至少一个预测误差,基于所述至少一个预测误差和所述多个之前已解码的视频帧的所述存储的至少一部分,生成至少一个重建的宏块存储于所述芯片外的第二存储器内;

所述系统包括片上加速器,其中,第一片上加速器处理与动作相关的计算,第二片上加速器处理与离散余弦变换、量化、反向离散余弦变换和反向量化相关的集中计算处理,第三片上加速器处理数据的预处理;

所述系统进一步包括变长编码协处理器,所述变长编码协处理器基于每个周期协助CPU处理变长编码相关任务。

10.根据权利要求9所述的系统,其特征在于,所述至少一个处理器对应所述当前视频帧内所述接收的多个已编码宏块的所述解码的第一部分,生成至少一个量化的频率系数。

说明书 :

片上处理视频数据的方法和系统

技术领域

[0001] 本发明涉及视频压缩和解压缩,更具体地说,涉及一种微处理器内用于视频压缩和解压缩的视频数据处理方法和系统。

背景技术

[0002] 视频压缩与解压缩技术,以及各种不同的图像大小标准,被应用于现有的视频压缩系统的视频信息录制、传输、存储和回放过程中。例如,普通中间格式(CIF)和视频图形阵列(VGA)格式用于视频信息的高质量回放和录制,例如便携式摄像机和视频剪辑。CIF格式是ITU-T的H.261/P×64标准提供的一种可选格式。它产生具有288个非隔行扫描量度行的彩色图像,每个包含352个象素。VGA格式支持640×480象素的分辨率,是个人电脑常用的显示视频信息的分辨率。高质量视频的帧率最高可以为30帧每秒(fps)。 [0003] 用于视频信息的高质量回放和录制的现有视频处理系统,例如应用CIF和/或VGA格式的视频处理系统,利用视频编码和解码技术在传输或储存过程中压缩视频信息,以及在传输视频数据至显示器之前对基本视频数据进行解压缩。视频压缩和解压缩技术,例如动作处理、离散余弦变换和变长编码(VLC),在现有视频处理系统中,视频数据编码和/或解码时,占用了微处理器或其它嵌入处理器的通用CPU的大部分数据传输和处理资源。然而,通用CPU还处理其它实时任务,例如在视频会议中与视频网络中的其他模块通信。在现有视频编码/解码系统中,CPU和微处理器执行的集中计算视频处理任务和数据传输任务的增加,严重的降低视频处理网络中CPU可提供的视频质量。
[0004] 通过比较本申请后续部分结合附图的本发明,现有的和传统的方法的进一步局限性和缺点对于本领域的技术人员来说是显而易见的。

发明内容

[0005] 本申请结合至少一副附图展示和/或介绍了一种视频数据的片上处理系统和/或方法,并在权利要求书中给出更完整的描述。
[0006] 根据本发明的一个方面,提供一种片上处理视频数据的方法,包括:在芯片上接收当前视频帧内的多个行;
[0007] 将所述接收的当前视频帧内的多个行的至少一部分转换成YUV格式数据并存储在所述芯片上的存储器内;
[0008] 从所述芯片外的第一存储器内获取在所述当前视频帧内的所述多个行之前出现的多个之前已处理的视频帧的至少一部分;
[0009] 在所述芯片上,利用所述多个之前已处理的视频帧的所述至少一部分对存储在所述芯片上的存储器内的所述当前视频帧内所述多个行的第一部分进行编码; [0010] 将编码后的所述当前视频帧内所述多个行的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内。
[0011] 优选地,所述方法进一步包括:将所述多个之前已处理的视频帧的第一部分从位于所述芯片外的所述第一存储器传送至位于所述芯片上的所述存储器内。 [0012] 优选地,所述方法进一步包括:基于所述当前视频帧内所述接收的多个行的第二部分与所述多个之前处理的视频帧的第二部分之间的差别,确定至少一个预测误差。 [0013] 优选地,所述方法进一步包括:对所述确定的至少一个预测误差进行离散余弦变换和量化,以获得至少一个量化的频率系数。
[0014] 优选地,所述方法进一步包括:将所述至少一个量化频率系数存储于所述芯片上的紧耦合存储器内。
[0015] 优选地,所述方法进一步包括:基于所述离散余弦变换和量化后的所述确定的至少一个预测误差,对所述当前视频帧内所述接收的多个行的所述第二部分进行编码。 [0016] 优选地,所述编码包括通过紧耦合的协处理器接口进行编码。 [0017] 优选地,所述方法进一步包括:对所述离散余弦变换和量化后的所述确定的至少一个预测误差进行反向量化和反向离散余弦变换。
[0018] 优选地,所述方法进一步包括:基于所述经过反向离散余弦变换和反向量化后的所述至少一个预测误差,生成至少一个重建的参考帧。
[0019] 优选地,所述方法进一步包括:存储所述生成的至少一个重建的参考帧于所述芯片外的第二存储器内。
[0020] 根据本发明的一个方面,提供一种片上处理视频数据的方法,包括: [0021] 在芯片上接收当前视频帧内的多个已编码宏块;
[0022] 将所述接收的当前视频帧内的多个已编码宏块的至少一部分存储于所述芯片上的存储器内;
[0023] 从所述芯片外的第一存储器内获取在所述当前视频帧内所述多个已编码宏块之前出现的多个之前已解码的视频帧的至少一部分
[0024] 在所述芯片上,利用所述多个之前已解码的视频帧的所述至少一部分对所述接收的当前视频帧内的多个已编码宏块的第一部分进行解码;
[0025] 将解码后的所述当前视频帧内的所述多个已编码宏块的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内。
[0026] 优选地,所述方法进一步包括:对应所述当前视频帧内所述接收的多个已编码宏块的所述解码的第一部分,生成至少一个量化的频率系数。
[0027] 优选地,所述方法进一步包括:将所述生成的至少一个量化频率系数存储于所述芯片上紧耦合存储器内。
[0028] 优选地,所述方法进一步包括:对所存储的所述生成的至少一个量化频率系数进行反向量化和反向离散余弦变换,以获得至少一个预测误差。
[0029] 优选地,所述方法进一步包括:基于所述至少一个预测误差和所述多个之前已解码的视频帧的所述存储的至少一部分,生成至少一个重建的宏块。
[0030] 优选地,所述方法进一步包括:存储所述生成的至少一个重建的宏块于所述芯片外的第二存储器内。
[0031] 优选地,所述方法进一步包括:将所述生成的至少一个重建的宏块转换为RGB格式。
[0032] 优选地,所述方法进一步包括:存储所述转换后的所述生成的至少一个重建的宏块于所述芯片上的所述存储器内。
[0033] 优选地,所述方法进一步包括:将所存储的所述转换后的所述生成的至少一个重建的宏块传输至显示器。
[0034] 根据本发明的一个方面,提供一种片上处理视频数据的系统,包括: [0035] 至少一个处理器,在芯片上接收当前视频帧内的多个行;
[0036] 所述至少一个处理器将所述接收的当前视频帧内的多个行的至少一部分转换成YUV格式数据并存储在所述芯片上的存储器内;
[0037] 所述至少一个处理器从所述芯片外的第一存储器内获取在所述当前视频帧内的所述多个行之前出现的多个之前已处理的视频帧的至少一部分;
[0038] 所述至少一个处理器在所述芯片上,利用所述多个之前已处理的视频帧的所述至少一部分对所述当前视频帧内所述多个行的第一部分进行编码;
[0039] 所述至少一个处理器将编码后的所述当前视频帧内所述多个行的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内。
[0040] 优选地,所述至少一个处理器将所述多个之前已处理的视频帧的第一部分从位于所述芯片外的所述第一存储器传送至位于所述芯片上的所述存储器内。 [0041] 优选地,所述至少一个处理器基于所述当前视频帧内所述接收的多个行的第二部分与所述多个之前处理的视频帧的第二部分之间的差别,确定至少一个预测误差。 [0042] 优选地,所述至少一个处理器对所述确定的至少一个预测误差进行离散余弦变换和量化,以获得至少一个量化的频率系数。
[0043] 优选地,所述至少一个处理器将所述至少一个量化频率系数存储于所述芯片上的紧耦合存储器内。
[0044] 优选地,所述至少一个处理器基于所述离散余弦变换和量化后的所述确定的至少一个预测误差,对所述当前视频帧内所述接收的多个行的所述第二部分进行编码。 [0045] 优选地,所述编码包括通过紧耦合的协处理器接口进行编码。 [0046] 优选地,所述至少一个处理器对所述离散余弦变换和量化后的所述确定的 至少一个预测误差进行反向量化和反向离散余弦变换。
[0047] 优选地,所述至少一个处理器基于所述经过反向离散余弦变换和反向量化后的所述至少一个预测误差,生成至少一个重建的参考帧。
[0048] 优选地,所述至少一个处理器存储所述生成的至少一个重建的参考帧于所述芯片外的第二存储器内。
[0049] 根据本发明的一个方面,提供一种片上处理视频数据的系统,包括: [0050] 至少一个处理器,在芯片上接收当前视频帧内的多个已编码宏块; [0051] 所述至少一个处理器将所述接收的当前视频帧内的多个已编码宏块的至少一部分存储于所述芯片上的存储器内;
[0052] 所述至少一个处理器从所述芯片外的第一存储器内获取在所述当前视频帧内所述多个已编码宏块之前出现的多个之前已解码的视频帧的至少一部分; [0053] 所述至少一个处理器在所述芯片上,利用所述多个之前已解码的视频帧的所述至少一部分对所述接收的当前视频帧内的多个已编码宏块的第一部分进行解码; [0054] 所述至少一个处理器将解码后的所述当前视频帧内的所述多个已编码宏块的第一部分的YUV格式数据转换成RGB格式数据并存储在所述芯片上的存储器内。 [0055] 优选地,所述至少一个处理器对应所述当前视频帧内所述接收的多个已编码宏块的所述解码的第一部分,生成至少一个量化的频率系数。
[0056] 优选地,所述至少一个处理器将所述生成的至少一个量化频率系数存储于所述芯片上紧耦合存储器内。
[0057] 优选地,所述至少一个处理器对所存储的所述生成的至少一个量化频率系数进行反向量化和反向离散余弦变换,以获得至少一个预测误差。
[0058] 优选地,所述至少一个处理器基于所述至少一个预测误差和所述多个之前已解码的视频帧的所述存储的至少一部分,生成至少一个重建的宏块。
[0059] 优选地,所述至少一个处理器存储所述生成的至少一个重建的宏块于所述芯片外的第二存储器内。
[0060] 优选地,所述至少一个处理器将所述生成的至少一个重建的宏块转换为 RGB格式。
[0061] 优选地,所述至少一个处理器存储所述转换后的所述生成的至少一个重建的宏块于所述芯片上的所述存储器内。
[0062] 优选地,所述至少一个处理器将所存储的所述转换后的所述生成的至少一个重建的宏块传输至显示器。
[0063] 本发明的优点、各个方面和新的特性,以及其中所示的细节,可以通过接下来的阐述和附图得到全面理解。
[0064] 附图说明
[0065] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0066] 图1A是根据本发明一个实施例的视频编码系统的框图;
[0067] 图1B是根据本发明一个实施例的视频解码系统的框图;
[0068] 图2是根据本发明一个实施例利用片上加速器实现视频压缩和解压缩的微处理器结构的框图;
[0069] 图3是根据本发明一个实施例的可用于图2所示的微处理器的片上和片外存储器模块的结构示意图;
[0070] 图4是根据本发明一个实施例通过图2所示的微处理器进行视频编码的时序图; [0071] 图5是根据本发明一个实施例通过图2所示的微处理器进行视频解码的时序图; [0072] 图6是根据本发明一个实施例的视频信息压缩方法的流程图;
[0073] 图7是根据本发明一个实施例的视频信息解压缩方法的流程图。 [0074] 具体实施方式
[0075] 本发明提供一种片上处理视频数据的方法和系统。根据本发明的一个方面,用于视频信息编码/解码的视频处理系统(如CIF或VGA视频会议系统)中的集中计算视频处理和数据传输,可利用视频处理系统的微处理器内的一个或多个硬件加速器得到显著的改善。硬件加速器可从CPU卸下大部分的集中 计算的编码和/或解码任务,这样可以增加视频处理网络中CPU可提供的视频质量。此外,硬件加速器可利用一个或多个本地存储器模块存储编码和/或解码过程中的中间处理结果,因而可最小化微处理器和任何片上存储器(例如微处理器内的一级紧耦合存储器(TCM)和/或二级片上存储器(OCM))的系统总线的负担。例如,可使用OCM存储编码前的YUV格式宏块信息和/或解码后以及显示已解码的视频信息之前的RGB格式的信息。
[0076] 图1A所示为根据本发明一个实施例的视频编码系统的框图。参照图1A,视频编码系统100包括预处理器102、动作分离模块104、离散余弦变换器和量化器模块106、变长编码器108、比特流打包器110、帧缓存112、动作估算器114、动作补偿器116和反向量化和反向离散余弦变换模块118。
[0077] 预处理器102包括恰当的电路、逻辑和/或编码,并可用于从摄像机130获取视频数据并将摄像机视频数据转换至YUV格式以便于编码。动作估算器114包括恰当的电路、逻辑合/或编码,并可用于获取当前宏块及其动作搜索区,并从获得的搜索区中确定最优的运动参考,以用于动作分离和/或动作补偿中。动作分离模块104包括恰当的电路、逻辑和/或编码,并可用于获取当前宏块及其动作参考,并基于获得的当前宏块和其动作参考之间的差别确定一个或多个预测误差。
[0078] 离散余弦变换器和量化器模块106和反向量化和反向离散余弦变换模块118包括恰当的电路、逻辑和/或编码,并可用于将该预测误差转换为频率系数,及将频率系数转换回预测误差。例如,离散余弦变换器和量化器模块106可用于获取一个或多个预测误差,并对该获取的预测误差应用离散余弦变换并随后进行量化,以获得频率系数。近似地,反向量化和反向离散余弦变换模块118可用于获取一个或多个频率系数,并对该频率系数应用反向量化并随后进行反向离散余弦变换,以得到预测误差。
[0079] 动作补偿器116包括恰当的电路、逻辑和/或编码,并可用于获取当前宏块的预测误差及其动作参考,并基于获得的动作参考和预测误差重建当前宏块。VLC编码器108和打包器110包括恰当的电路、逻辑和/或编码,并可用于基于预测动作信息和/或量化频率系数生成已编码的基本视频数据流。例如, 由一个或多个参考宏块获得的预测动作可与对应的频率系数一起编码以生成已编码的基本比特流。
[0080] 在操作中,预处理器102可从摄像机130获得视频数据,并将该视频数据转换为适合编码的YUV格式视频数据。然后,将当前宏块120传输至动作分离模块104和动作估算器114。动作估算器114可从帧缓存112获得一个或多个参考宏块122,并确定对应当前宏块
120的动作参考126。然后将动作参考126传输至动作分离模块104和动作补偿器116。 [0081] 动作分离模块104,已获得当前宏块120及其动作参考126,可基于动作参考126和当前宏块120之间的差别生成预测误差。产生的预测误差可传输至离散余弦变换器和量化器模块106,应用离散余弦变换和量化处理将该预测误差转换为一个或多个频率系数。产生的频率系数可传送至VLC编码器108和打包器110以编码成比特流132。比特流132也包括有一个或多个对应量化频率系数的预测动作参考。
[0082] 离散余弦变换器和量化器模块106生成的频率系数可传输至反向离散余弦变换和反向量化模块118。反向离散余弦变换和反向量化模块118可将频率系数转换回一个或多个预测误差128。动作补偿器116可使用预测误差128和动作参考126生成重建的当前宏块124。重建的宏块124可存储在帧缓存112内,并可用作由预处理器102随后生成的帧内的宏块动作估算的参考。
[0083] 图1B所示为根据本发明一个实施例的视频解码系统的框图。参考图1B,VLC视频解码系统150包括比特流解包器152、VLC解码器154、参考生成模块164、帧缓存160、反向离散余弦变换和反向量化模块156、动作补偿器158和后处理器162。
[0084] 比特流解包器152和VLC解码器154包括恰当的电路、逻辑和/或编码,并可用于对基本视频比特流进行解码,并生成一个或多个已量化的频率系数和/或对应的预测误差。反向离散余弦变换和反向量化模块156包括恰当的电路、逻辑和/或编码,并可用于将一个或多个已量化的频率系数转换为一个或多个预测误差。动作补偿器158包括恰当的电路、逻辑和/或编码,并可用于获取预测误差及其动作参考,并基于获得的动作参考和预测误差重建当前宏块。
[0085] 在操作过程中,比特流解包器152和VLC解码器154可对基本视频比特流174进行解码,并生成一个或多个量化频率系数和/或对应的动作参考指针。生成的量化频率系数可传输至反向离散余弦变换和反向量化模块156。然后将动作参考指针传送给参考生成模块164。参考生成模块164可从帧缓存160获得一个或多个参考宏块166,并可生成对应该量化频率系数的动作参考172。动作参考172可传输至动作补偿器158以用于宏块重建。 [0086] 反向离散余弦变换和反向量化模块156可将已量化的频率系数转换为一个或多个预测误差178。预测误差178可传输至动作补偿器158。然后,动作补偿器158利用预测误差178及其动作参考172重建当前宏块168。重建的当前宏块168可存储在帧缓存160内以用于随后的后处理。例如,重建的宏块170可从帧缓存160传输至后处理器162。后处理器162将YUV格式的宏块170转换为RGB格式,并传输该转换后的宏块至显示器176以进行视频显示。
[0087] 参考图1A和1B,根据本发明的一个方面,在对视频数据进行编码和/或解码的过程中,可利用一个或多个片上加速器减轻CPU的集中计算任务。例如,可使用一个加速器处理与动作相关的计算,例如动作估算、动作分离和/或动作补偿。第二加速器可用于处理与离散余弦变换、量化、反向离散余弦变换和反向量化相关的集中计算处理。另一个片上加速器可用于处理数据的预处理,如RGB至YUV格式转换,以及视频数据的后处理,如YUV至RGB格式转换。此外,可使用一个或多个外部存储器模块以及一个或多个片上存储器模块,用于在编码和/或解码过程中为CPU和微处理器存储视频数据。
[0088] 图2所示为根据本发明一个实施例利用片上加速器用于视频压缩和解压缩的微处理器结构的框图。参考图2,微处理器结构200可包括CPU 202、变长编码协处理器(VLCOP)206、视频预处理和后处理(VPP)加速器208、变换和量化(TQ)加速器210、动作引擎(ME)加速器212、片上共享存储器232、片上参考存储器234、片上当前存储器236、片上存储器(OCM)214、外部存储器接口(EMI)216、显示接口(DSPI)218和摄像机接口(CAMI)242。EMI 216、DSPI 218和CAMI 220可用于微处理器结构200中以分别访问外部存储器238、显示器240和摄像机242。
[0089] CPU 202可包括指令端口226、数据端口228、外围设备端口222、协处理器端口224、紧耦合存储器(TCM)204和直接存储器访问模块230。指令端口226和数据端口228可由CPU 202用来在编码和/或解码过程中通过于系统总线244的连续获取程序和该程序需要的数据。外围设备端口可由CPU 202用来在视频信息编码和/或解码过程中发送命令给加速器并检查其状态。
[0090] TCM 204可用于微处理器结构200中,在不牺牲CPU 202的工作频率的情况下,存储和访问大量数据。例如,TCM 204可用于微处理器结构200存储器储离散余弦变换和量化后的频率系数。DMA模块230可与TCM 204结合使用以确保当CPU 202没有访问TCM 204的情况下,在操作周期中对TCM204中的信息的快速访问和数据传输。
[0091] CPU 202可利用协处理器端口224与VLCOP 206通信。VLCOP 206可用于协助CPU202卸除某些编码和/或解码任务。例如,VLCOP 206可利用适当的编码技术,例如编码表查找和/或基本比特流的打包/解包,以基于每个周期协助CPU 202处理变长编码相关任务。
[0092] OCM 214可在压缩和/或解压过程中对视频数据进行预处理和后处理时用于微处理器结构200。例如,在转换为YUV格式视频数据前,OCM 214可存储通过CAMI 220传输的来自摄像机242的摄像机数据。此外,OCM 214可用于存储RGB格式视频数据,并在随后通过DSPI 218传输此数据至视频显示240以进行显示。OCM 214可被CPU 202、VPP加速器208、TQ加速器218、ME加速器212、EMI 216、DSPI 218和CAMI 220通过系统总线244访问。
[0093] CPU 202可利用外围设备端口222通过总线连接与片上加速器VPP 208、TQ 210和ME 212通信。VPP加速器208可包括恰当的电路和/或逻辑,并在对微处理器结构200中视频数据编码和/或解码的过程中,提供视频数据预处理和后处理。例如,VPP加速器208可用于在编码前将摄像机数据转化为YUV格式视频数据。此外,VPP加速器208可用于将解码的YUV格式视频数据在传输至显示器之前转化为RGB格式视频数据。 [0094] TQ加速器210可包括恰当的电路和/或逻辑,并可用于执行视频数据的离散余弦变换和量化相关处理,包括反向离散余弦变换和反向量化。TQ加速器 210也可与ME加速器212共享存储器232。ME加速器212可包括恰当的电路和/或逻辑,并可在微处理器结构200的视频数据的编码和/或解码过程中用于执行动作估算、动作分离和/或动作补偿。在本发明的一个实施例中,ME加速器212在动作估算、动作分离和/或动作补偿过程中可分别利用片上参考存储器234、片上当前存储器236存储参考宏块数据和当前宏块数据。 [0095] 在本发明另一个实施例中,微处理器结构200可利用外部存储器238储存当前帧的宏块和/或可用于处理当前帧的之前已处理的帧的宏块。在视频数据编码和/或解码过程中利用VLCOP 206、VPP加速器208、TQ加速器210、ME加速器212、参考存储器234、当前存储器236和共享存储器232,CPU 202在编码和/或解码过程中的集中计算任何可得到减轻,并且OCM 214和外部存储器216在编码和/或解码过程中存储过多的视频数据的情况也可以得到减轻。
[0096] 图3所示为根据本发明一个实施例用于图2所示的微处理器的片上和外部存储器模块的结构示意图。参照图2和图3,TCM 204包括有一个缓存,可用于存储量化频率系数。在解码过程中,CPU 202生成量化频率系数,DMA模块230从TCM 204将量化频率系数传输至共享存储器232以便TQ加速器210使用。在编码过程中,TQ加速器210生成量化频率系数,并存储于共享存储器232中,并随后由DMA模块230取出并存入TCM 204中。然后CPU便可在VLC比特流的生成过程中利用该量化频率系数。
[0097] 共享存储器(SM)232包括有缓存318和320。在解码过程中,缓存318和320可用于在动作补偿过程中存储从CPU 202传来的量化频率系数以及从TQ加速器210传来的预测误差。在编码过程中,共享存储器232中的一个缓存可存储由ME加速器212在动作分离过程中产生的预测误差或由TQ加速器210在反向离散余弦变换和反向量化过程中产生的预测误差。第二缓存可在传输量化频率系数至CPU 202之前存储由TQ加速器210产生的量化频率系数。
[0098] 参考存储器(RM)234可用于存储用于当前宏块动作估算的参考帧内的9个参考宏块或3×3宏块搜索区域的亮度(Y)信息。参考存储器234还用于存储用于微处理器结构200中动作分离和动作补偿的色度(U和V)参考。当前存储器(CM)236可用于存储在动作估算和/或动作分离过程中采用的当前 宏块的YUV信息。当前存储器236还可用于存储由ME加速器212从动作补偿中生成的宏块输出。
[0099] 外部存储器238包括缓存332、334、336和338。外部存储器中的每个缓存可用于存储宏块的一个帧的YUV信息。该4个缓存中的2个用于编码过程,剩下的2个缓存用于解码过程中。每对缓存以“乒乓形式(ping-pong fashion)”使用,一个缓存存储正被编码或解码的当前帧,另一个缓存存储在当前帧编码或解码过程中用作动作参考的之前帧。例如,缓存332和334在编码操作中用于保存当前帧和之前已编码的帧。相似地,缓存336和338在解码操作中用于保存当前帧和之前已解码的帧。
[0100] OCM 214包括有缓存324、326、328和330。缓存324和326用于在转换从摄像机242接收的视频数据之后,存储YUV格式数据。例如,缓存324和325用于为一行宏块存储YUV格式数据。该两个缓存中的一个缓存可由VPP加速器208用来在将从摄像机242接收的数据进行转换后,存储YUV格式视频数据。在前一个缓存被VPP加速器208填充时,第二个缓存可由ME加速器212用来读取被填充的YUV格式数据。缓存324和326的写和读可在VPP加速器208填充写缓存之后以“乒乓形式”交换。
[0101] 相似地,缓存328和330可用于在YUV格式数据被转换之后和显示于视频显示240之前存储RGB格式摄像机数据。例如,缓存328和330可用于存储一行宏块的RGB格式数据。在微处理器结构200中的后处理过程中,该两个缓存中的一个可由VPP加速器208用来在VPP加速器转换YUV格式数据之后存储RGB格式视频数据。当VPP加速器208填充前一个缓存时,第二个缓存可由DSPI 218用来读取RGB格式数据以供视频显示240显示。缓存328和330的写和读可在VPP加速器208填充写缓存之后以“乒乓形式”交换。 [0102] 图4所示为根据本发明一个实施例通过图2所示微处理器进行编码的时序图。参照图2、3和4,例如,摄像机数据可从摄像机242通过CAMI 220和系统总线244传输至VPP加速器208。然后VPP加速器208将摄像机数据转换为YUV格式并以逐行形式存储于OCM214中的缓存324内。在缓存324被YUV格式数据填充后,VPP加速器208继续存储YUV转换后的数据于缓 存326中,同时缓存324将变成读缓存以便ME加速器212开始对一行宏块进行编码。
[0103] 对于每个宏块,CPU 202可首先建立用于编码的微处理器结构200。ME加速器212可为宏块MB0从OCM 214内的缓存324中获取YUV格式数据,并将宏块MB0数据存储在当前存储器236中。然后ME加速器212通过EMI216从存储于外部存储器238的缓存332中的前一帧中获取动作搜索区域,并将该动作搜索区域存储在缓存316中。在动作估算过程中,ME加速器212和CPU 202比较当前宏块MB0和存储在参考存储器234内的搜索区域内的所有动作参考的亮度信息。
[0104] 在选择一个动作参考之后,ME加速器212在动作分离过程中基于当前宏块MB0和选择的动作参考之间的差别产生一个或多个预测误差。产生的预测误差存储于共享存储器232中以便随后由TQ加速器210进行处理。TQ加速器210可从共享存储器232中获得产生的预测误差,并对其进行离散余弦变换和量化以获得量化频率系数。然后通过DMA模块
230将该量化频率系数传输至TCM 204,以用于存储和随后编码为VLC比特流。然后由TQ加速器210对该量化频率系数进行反向量化和反向离散余弦变换以生成预测误差。生成的预测误差存储回共享存储器232中以便随后由ME加速器212在动作补偿过程中使用。 [0105] 然后,ME加速器212可基于储存在参考存储器234中的动作参考信息和储存在共享存储器232中的生成的预测误差重建当前宏块MB0。在当前宏块MB0由ME加速器重建后,重建的宏块MB0可存储在外部存储器238中的缓存334内,以用作随后帧的操作周期中的参考宏块。
[0106] 当量化频率系数信息从共享存储器232存储到TCM 204之后,CPU 202可将量化频率系数编码为VLC比特流。CPU可利用VLCOP提供的特殊加速生成比特流。 [0107] 在本发明的一个实施例中,CPU 202和加速器VPP 208、TQ 210、ME212执行的某些任务可同时执行和/或以流水线的形式执行以达到更快和更有效的视频数据编码。例如,CPU可用于执行VLC编码,同时TQ 210执行反向离 散余弦变换或反向量化,而ME 212执行动作补偿以及将重建的宏块写入外部存储器缓存中。
[0108] 在对一行宏块的编码完成后,VPP可将该行宏块的YUV格式数据后处理为RGB格式数据以便逐行显示。
[0109] 图5所示为根据本发明一个实施例通过图2所示的微处理器进行解码的时序图。参考图2、3和5,对于每个宏块MB0,CPU 202首先从已编码为基本视频比特流的当前帧中获得当前已编码宏块MB0。例如,当前已编码帧的比特流可存储于外部存储器238内。然后,CPU 202对当前宏块MB0的VLC比特流进行解码,并生成MB0的动作参考和一个或多个量化频率系数。CPU 202可与协处理器VLCOP 206一起执行VLC比特流的解码。生成的量化频率系数可存储在TCM 204内以便随后传输给共享存储器232。
[0110] 在对VLC比特流进行解码并获得动作参考及量化频率系数之后,DMA模块230可将存储于TCM 204内的量化频率系数通过系统总线244传输至共享存储器232。ME加速器212从存储在外部存储器内的前一已解码的帧中获得动作参考。例如,ME加速器212可从存储于外部存储器的238的缓存338内的前一已解码的帧中获得动作参考。当ME加速器
212从外部存储器238获得以前已解码的参考宏块的同时,TQ加速器210可从共享存储器中获得量化频率系数,并反向量化和反向离散余弦变换该量化频率系数以生成一个或多个预测误差。生成的预测误差可存储在共享存储器232中。
[0111] 然后,ME加速器212利用从外部存储器238获得的参考和存储于共享存储器232中的生成的预测误差,重建当前宏块MB0。重建的宏块MB0最初存储在当前存储器236中,并随后存储于外部存储器238中,用作对随后的帧进行解码的过程中的参考宏块。 [0112] 在本发明的一个实施例中,一个或多个ME、TQ和/或CPU任务可安排为同时运行。例如,TQ 210执行反向离散余弦变换和反向量化的同时,ME加速器212正获取动作参考。
CPU 202用于对下一宏块MB1执行VLC解码时,ME加速器212正执行动作补偿和/或存储重建的MB0于外部存储器中。
[0113] 为了显示解码的视频,VPP加速器208还可从外部存储器获得已解码的 帧,并将YUV格式数据转换为RGB格式以供随后逐行显示。RGB格式的数据可存储于OCM 214的缓存328中。当缓存328中填满RGB格式的解码视频信息后,缓存328可被DSPI 218用作读缓存。然后DSPI 218可以逐行的形式获得RGB格式数据,并传输该数据给视频显示240以进行显示。
[0114] 图6所示为根据本发明一个实施例的视频信息压缩方法600的流程图。参照图6,在步骤601中,一个或多个视频行可从摄像机接收至微处理器中。在步骤603中,来自摄像机的视频行被微处理器内的一个或多个硬件加速器转换为YUV格式,并随后被存储在片上存储器(OCM)中。在步骤605中,当前宏块从OCM中获得,并且对应的动作搜索区域可从外部存储器中获得。在步骤609中,对应当前宏块的一个动作参考可从获得的动作搜索区域中确定。在步骤611中,基于当前宏块与其动作参考之间的差别生成一个或多个预测误差。生成的预测误差可存储于硬件加速器共享的存储器中。
[0115] 在步骤613中,对该预测误差进行离散余弦变换和量化以生成量化频率系数。在步骤615中,对生成的量化频率系数进行反向量化和反向离散余弦变换以生成预测误差。在步骤617中,可由一个或多个硬件加速器基于该动作参考和生成的预测误差重建当前宏块。在步骤619中,重建的宏块可存储于外部存储器中,并用作对随后帧的编码过程中的参考宏块。在步骤621中,可基于量化频率系数和动作参考将当前宏块编码为VLC比特流。 [0116] 图7所示为根据本发明一个实施例的视频信息解压缩方法的流程图。参照图7,在步骤701中,对VLC编码视频比特流进行解码以生成当前宏块的动作参考和量化频率系数。生成的量化频率系数可存储在片上硬件加速器共享的第一片上存储器内。在步骤703中,对存储的量化频率系数进行反向量化和反向离散余弦变换以获得预测误差。在步骤705中,例如,动作参考可从外部存储器中获得。在步骤707中,可利用该动作参考和预测误差重建已解码的宏块。在步骤709中,将已解码的宏块存储在外部存储器中,这样该已解码的宏块可用作随后帧解码过程中的参考。在步骤711中,以逐行的形式将已解码的YUV格式帧转换为RGB格式。然后将该RGB格式的行存储在片上存储器内的RGB显示缓存中。在步骤713中,该RGB格式的行可从RGB缓存传输给视频显 示器以进行显示。 [0117] 因此,本发明可以通过硬件、软件,或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现所述方法的计算机系统或其它设备都是可适用的。常用软硬件的结合可以是安装有计算机程序的通用计算机系统,通过安装和执行所述程序控制计算机系统,使其按所述方法运行。在计算机系统中,利用处理器和存储单元来实现所述方法。 [0118] 本发明的一个实施例可实现为板级产品,如一个芯片、专用集成电路(ASIC)或与系统的其它单独部件多级别的集成于一个芯片内。系统的集成度主要由速度和成本因素决定。因为现代处理器的复杂程度,可利用市场上可用的处理器,这些处理器可实现在本系统的ASIC的外部。或者,如果处理器作为ASIC内核或逻辑块是可用的,那么可以使用市场上可用的处理器作为ASIC设备的一部分,具有固件实现的各种功能。
[0119] 本发明的另一个实施例可实现为ASIC中的专用电路。所述专用电路可用于协助通用处理器并执行本发明所要求的处理。执行本申请公开的方法和系统中的每个任务的通用处理器或专用电路可基于性能和/或成本因素进行选择。
[0120] 本发明还可以通过计算机程序产品进行实施,所述程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,通过运行,可以实现本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、编码或符号;b)以不同的格式再现。 [0121] 本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。 [0122] 本申请全文引用以下专利申请:
[0123] 美国专利申请No.____________(代理案号No.16036US01),申请日为2005年2月7日,名称为“用于便携式视频通信设备的微处理器内图像处理的方法和系统”; [0124] 美国专利申请No._____________(代理案号No.16094US01),申请日为2005年2月7日,名称为“微处理器内编码变长码的方法和系统”;
[0125] 美国专利申请No._____________(代理案号No.16471US01),申请日为2005年2月7日,名称为“微处理器内解码变长码的方法和系统”;
[0126] 美国专利申请No.______________(代理案号No.16232US02),申请日为2005年2月7日,名称为“微处理器内视频动态处理的方法和系统”。