图像数据或音频数据的叠加处理方法和装置 技术领域 本发明涉及一种音、 视频设备中图像数据或音频数据处理方法和装置, 用于图像 数据的叠加运算或音频数据的叠加运算。
背景技术 带有图像输出的设备必然要用图像数据的叠加运算, 同样带有音频输出的设备必 然要用音频数据的叠加运算, 而音视频设备还分别涉及到图像叠加和音频叠加的运算。目 前图像叠加和音频叠加运算都由音、 视频设备的系统处理器处理, 其处理方法是 : 由 CPU 分 别对图像叠加运算和音频叠加运算, 这样会占用很多 CPU 的资源, 而且处理速度又慢, 功耗 大。
发明内容 本发明要解决的技术问题, 在于提供一种图像数据或音频数据的叠加处理方法和 装置, 用于图像或音频叠加的运算, 独立运作, 不占用系统资源, 不影响处理速度, 功耗小。
本发明是这样实现的 : 一种图像数据或音频数据的叠加处理方法, 其是通过设置 在主设备上并连接于总线的一叠加处理器进行, 该叠加处理器包括一主控制器、 一寄存器、 一运算器, 三个 FIFO、 一主设备总线接口以及一从设备总线接口, 所述三个 FIFO 分别为 FIFO-1、 FIFO-2、 FIFO-3 ; 所述叠加处理方法包括主控制器部分和运算器部分 ;
所述主控制器部分包括如下步骤 :
步骤 11、 从寄存器中读出启动标志位, 判断是否启动, 是: 跳到步骤 12 ; 否: 重新进 行步骤 11 ;
步骤 12、 从寄存器读出要进行叠加处理的两组图像数据或音频数据 A 和 B 的起始 地址和运算后存放的地址, 该两起始地址和运算后存放的地址分别称为地址变量 A0、 B0 和 C0,
步骤 13、 判断 FIFO-1 是否为满?是 : 跳到下一步 ; 否: 通过主设备总线接口访问 主设备的内存控制器, 从内存中读出一段图像数据或音频数据 A 存放到 FIFO-1 中, 并把地 址变量 A0 加上读出的长度, 生成新的地址变量 A0 ;
步骤 14、 判断 FIFO-2 是否为满?是 : 跳到下一步 ; 否: 通过主设备总线接口访问 主设备的内存控制器, 从内存中读出一段图像数据或音频数据 B 存放到 FIFO-2 中, 并把地 址变量 B0 加上读出的长度, 生成新的地址变量 B0 ;
步骤 15、 判断 FIFO-3 是否为空?是 : 跳到下一步 ; 否: 通过主设备总线接口访问 内存控制器, 把 FIFO-3 的数据写到内存中, 并把地址变量 C0 加上写到内存的数据的长度, 生成新的地址变量 C0 ;
步骤 16、 判断是否运算完毕, 是: 清除启动标志, 通过主设备的中断控制器启动中 断输出, 并跳到步骤 11 ; 否: 跳到步骤 13 ;
所述运算器部分包括如下步骤 :
步骤 21、 判断 FIFO-3 是否为满?是 : 继续本步骤的判断 ; 否: 跳到下一步 ;
步骤 22、 判断 FIFO-1 是否为空?是 : 继续本步骤的判断 ; 否: 读出一个图像数据 或音频数据 A, 跳下一步 ;
步骤 23、 判断 FIFO-2 空吗?是 : 继续本步 ; 否: 读出一个图像数据或音频数据 B, 跳下一步 ;
步骤 24、 把图像数据或音频数据和图像数据或音频数据 B 进行图像或音频运算, 把运算结果写到 FIFO-3 中, 然后返回到步骤 21。
其中, 所述叠加处理器具体是设置在主设备的 SOC 上。所述主设备是带有图像输 出的设备、 带有音频输出的设备或者兼带音频和图像输出的设备。
本发明还一种图像数据或音频数据的叠加处理装置, 其是通过设置在主设备上并 连接于总线的一叠加处理器进行, 该叠加处理器包括一主控制器、 一寄存器、 一运算器、 三 个 FIFO、 一主设备总线接口以及一从设备总线接口, 所述三个 FIFO 分别为 FIFO-1、 FIFO-2、 FIFO-3 ;
所述主控制器用于 :
从寄存器中读出启动标志位, 判断是否启动, 是: 跳到下一步 ; 否: 重新开始本步 骤;
从寄存器读出要进行叠加处理的两组图像数据或音频数据 A 和 B 的起始地址和运 算后存放的地址, 该两起始地址和运算后存放的地址分别称为地址变量 A0、 B0 和 C0,
判断 FIFO-1 是否为满, 是: 跳到下一步 ; 否: 通过主设备总线接口访问主设备的内 存控制器, 从内存中读出一段图像数据或音频数据 A 存放到 FIFO-1 中, 并把地址变量 A0 加 上读出的长度, 生成新的地址变量 A0 ;
判断 FIFO-2 是否为满, 是: 跳到下一步 ; 否: 通过主设备总线接口访问主设备的内 存控制器, 从内存中读出一段图像数据或音频数据 B 存放到 FIFO-2 中, 并把地址变量 B0 加 上读出的长度, 生成新的地址变量 B0 ;
判断 FIFO-3 是否为空, 是: 跳到下一步 ; 否: 通过主设备总线接口访问内存控制 器, 把 FIFO-3 的数据写到内存中, 并把地址变量 C0 加上写到内存的数据的长度, 生成新的 地址变量 C0 ;
判断是否运算完毕, 是: 清除启动标志, 通过主设备的中断控制器启动中断输出, 并跳到上述从寄存器中读出启动标志位、 判断是否启动的步骤 ; 否: 跳到上述判断 FIFO-1 是否为满的步骤 ;
所述运算器用于 :
判断 FIFO-3 是否为满, 是: 继续本步骤的判断 ; 否: 跳到下一步 ;
判断 FIFO-1 是否为空, 是: 继续本步骤的判断 ; 否: 读出一个图像数据或音频数据 A, 跳下一步 ;
判断 FIFO-2 是否为空, 是: 继续本步 ; 否: 读出一个图像数据或音频数据 B, 跳下 一步 ;
把图像数据或音频数据和图像数据或音频数据 B 进行图像或音频运算, 把运算结 果写到 FIFO-3 中, 然后返回到上述判断 FIFO-3 是否为满的步骤。
本发明具有如下优点 :1、 本发明方法主要通过主控制器和运算器配合运作, 用于图像或音频数据的叠加 的运算, 其主控制器部分主要用于将需要叠加的数据读出存放在两个 FIFO 中, 由运算器提 取运算后存放在另一 FIFO 中, 再由主控制器把 FIFO-3 的数据写到内存中, 方法简单, 实现 方便 ;
2、 本发明方法是在带有图像输出或音频输出的设备上专门设置一图像数据或音 频数据的叠加处理器进行, 并将该叠加处理器设置在 SOC 上, 该叠加处理器独立运作, 不占 用系统资源, 不影响系统的处理速度, 功耗小。 附图说明
下面参照附图结合实施例对本发明作进一步的说明。 图 1 为实现本发明方法专门设置的数据叠加处理器的结构示意图。 图 2 为本发明方法的主控制器的处理流程框图。 图 3 为本发明方法的运算器的处理流程框图。具体实施方式 本发明方法, 可用于带有图像输出的设备、 带有音频输出的设备, 或兼带图像输出 和音频输出的设备, 下称主设备。
请参阅图 1 所示, 为实现本发明方法专门设计的数据叠加处理器的结构示意图, 主设备的总线上连接有一系统处理器 1、 一内存控制器 2、 一中断控制器 3, 以及本发明的叠 加处理器 4。所述叠加处理器 4 设置于主设备的 SOC( 未图示 ) 上。
所述叠加处理器 4 包括一主控制器 41、 一寄存器 42、 一运算器 43, 三个 FIFO44、 一主设备总线接口 45 以及一从设备总线接口 46 ; 所述寄存器 42、 主设备总线接口 45、 从设 备总线接口 46 均连接所述主控制器 41, 所述主控制器 41 再分别通过所述三个 FIFO44 连 接所述运算器 43, 所述主控制器 41 还与所述中断控制器 3 连接。所述三个 FIFO44 分别为 FIFO-1、 FIFO-2、 FIFO-3。
所述主控制器 41 : 通过总线把内存储器中待运算的数据读取放到 FIFO-1 和 FIFO-2 中, 并把运算后存于 FIFO-3 中的数据写到内存储器中。
所述寄存器 42 : 用于存储该图像叠加或音频叠加处理器的状态和配置参数。
所述运算器 43 : 用于运算需要叠加的两组图像数据或音频数据 ;
所述 FIFO-1 和 FIFO-2 : 用于存放需要叠加的两组图像数据或音频数据。
所述 FIFO-3 : 用于存放运算完的图像数据或音频数据。
结合图 2 和图 3 所示, 本发明方法的处理流程分为主控制器部分和运算器部分。 下 面具体举三个实例进行详细说明 :
实施例一、 仅图像数据的叠加
主控制器 41 的处理流程为 :
步骤 11、 从寄存器 42 中读出启动标志位, 判断是否启动, 是: 跳到步骤 12 ; 否: 重 新进行步骤 11 ;
步骤 12、 从寄存器 42 读出要进行叠加处理的两组图像数据 A 和 B 的起始地址 ( 称 为地址变量 A0 和地址变量 B0) 和运算后存放的地址 ( 称为变量 C0) ;
步骤 13、 判断 FIFO-1 是否为满?是 : 跳到下一步 ; 否: 通过主设备总线接口 45 访 问内存控制器 2, 从内存中读出一段图像数据 A 存放到 FIFO-1 中, 并把地址变量 A0 加上读 出的长度, 生在新的地址变量 A0, 以供下一次读取 ;
步骤 14、 判断 FIFO-2 是否为满?是 : 跳到下一步 ; 否: 通过主设备总线接口 45 访 问内存控制器 2, 从内存中读出一段图像数据 B 存放到 FIFO-2 中, 并把地址变量 B0 加上读 出的长度, 生在新的地址变量 B0, 以供下一次读取 ;
步骤 15、 判断 FIFO-3 是否为空?是 : 跳到下一步 ; 否: 通过主设备总线接口 45 访 问内存控制器 2, 把 FIFO-3 的数据写到内存中供主设备使用, 并把地址变量 C0 加上写到内 存的数据的长度, 生在新的地址变量 C0, 以供下一次读取 ;
步骤 16、 判断是否运算完毕, 是: 清除启动标志, 通过中断控制器 3 启动中断输出, 跳到步骤 11 ; 否: 跳到步骤 13。
运算器的处理流程为 :
步骤 21、 判断 FIFO-3 是否为满?是 : 因无法提供空间存储运算器的运算结果, 因 此继续本步骤的判断, 直至不满 ; 否: 说明有剩余空间, 跳到下一步 ;
步骤 22、 判断 FIFO-1 是否为空?是 : 说明 FIFO-1 中没有用于运算的数据, 因此继 续本步骤的判断, 直至有需要运算的数据 ; 否: 说明有需要运算的数据, 此时读出一个图像 数据 A, 跳下一步 ; 步骤 23、 判断 FIFO-2 空吗?是 : 说明 FIFO-2 中没有用于运算的数据, 因此继续本 步, 直至有需要运算的数据 ; 否: 说明有需要运算的数据, 此时读出一个图像数据 B, 跳下一 步;
步骤 24、 把图像数据 A 和图像数据 B 进行运算, 把运算结果写到 FIFO-3 中, 以供主 控制器 41 把 FIFO-3 的数据写到内存中供主设备使用, 然后返回到步骤 21。
实施例二、 仅音频数据的叠加
主控制器 41 的处理流程为 :
步骤 11、 从寄存器 42 中读出启动标志位, 判断是否启动, 是: 跳到步骤 12 ; 否: 重 新进行步骤 11 ;
步骤 12、 从寄存器 42 读出要进行叠加处理的两组音频数据 A 和 B 的起始地址 ( 称 为地址变量 A0 和地址变量 B0) 和运算后存放的地址 ( 称为变量 C0) ;
步骤 13、 判断 FIFO-1 是否为满?是 : 跳到下一步 ; 否: 通过主设备总线接口 45 访 问内存控制器 2, 从内存中读出一段音频数据 A 存放到 FIFO-1 中, 并把地址变量 A0 加上读 出的长度, 生在新的地址变量 A0, 以供下一次读取 ;
步骤 14、 判断 FIFO-2 是否为满?是 : 跳到下一步 ; 否: 通过主设备总线接口 45 访 问内存控制器 2, 从内存中读出一段音频数据 B 存放到 FIFO-2 中, 并把地址变量 B0 加上读 出的长度, 生在新的地址变量 B0, 以供下一次读取 ;
步骤 15、 判断 FIFO-3 是否为空?是 : 跳到下一步 ; 否: 通过主设备总线接口 45 访 问内存控制器 2, 把 FIFO-3 的数据写到内存中, 并把地址变量 C0 加上写到内存的数据的长 度, 生在新的地址变量 C0, 以供下一次读取 ;
步骤 16、 判断是否运算完毕, 是: 清除启动标志, 通过中断控制器 3 启动中断输出, 跳到步骤 11 ; 否: 跳到步骤 13。
运算器的处理流程为 :
步骤 21、 判断 FIFO-3 是否为满?是 : 因无法提供空间存储运算器的运算结果, 因 此继续本步骤的判断, 直至不满 ; 否: 说明有剩余空间, 跳到下一步 ;
步骤 22、 判断 FIFO-1 是否为空?是 : 说明 FIFO-1 中没有用于运算的数据, 因此继 续本步骤的判断, 直至有需要运算的数据 ; 否: 说明有需要运算的数据, 此时读出一个音频 数据 A, 跳下一步 ;
步骤 23、 判断 FIFO-2 空吗?是 : 说明 FIFO-2 中没有用于运算的数据, 因此继续本 步, 直至有需要运算的数据 ; 否: 说明有需要运算的数据, 此时读出一个音频数据 B, 跳下一 步;
步骤 24、 把音频数据 A 和音频数据 B 进行运算, 把运算结果写到 FIFO-3 中, 以供主 控制器 41 把 FIFO-3 的数据写到内存中供主设备使用, 然后返回到步骤 21。
实施例三、 图像数据和音频数据的叠加
本实施例为实施例一和实施例二的合并, 如可先进行实施例一中所有步骤将图像 数据叠加完毕之后进行实施例二的所有步骤进行音频数据的叠加 ; 也可反过来进行, 即先 进行实施例二的所有步骤进行音频数据的叠加完毕之后进行实施例一中所有步骤将图像 数据叠加, 因此, 此处不做重复描述。 本发明还一种图像数据或音频数据的叠加处理装置, 其是通过设置在主设备上并 连接于总线的一叠加处理器进行, 该叠加处理器包括一主控制器、 一寄存器、 一运算器、 三 个 FIFO、 一主设备总线接口以及一从设备总线接口, 所述三个 FIFO 分别为 FIFO-1、 FIFO-2、 FIFO-3 ;
所述主控制器用于 :
从寄存器中读出启动标志位, 判断是否启动, 是: 跳到下一步 ; 否: 重新开始本步 骤;
从寄存器读出要进行叠加处理的两组图像数据或音频数据 A 和 B 的起始地址和运 算后存放的地址, 该两起始地址和运算后存放的地址分别称为地址变量 A0、 B0 和 C0,
判断 FIFO-1 是否为满, 是: 跳到下一步 ; 否: 通过主设备总线接口访问主设备的内 存控制器, 从内存中读出一段图像数据或音频数据 A 存放到 FIFO-1 中, 并把地址变量 A0 加 上读出的长度, 生成新的地址变量 A0 ;
判断 FIFO-2 是否为满, 是: 跳到下一步 ; 否: 通过主设备总线接口访问主设备的内 存控制器, 从内存中读出一段图像数据或音频数据 B 存放到 FIFO-2 中, 并把地址变量 B0 加 上读出的长度, 生成新的地址变量 B0 ;
判断 FIFO-3 是否为空, 是: 跳到下一步 ; 否: 通过主设备总线接口访问内存控制 器, 把 FIFO-3 的数据写到内存中, 并把地址变量 C0 加上写到内存的数据的长度, 生成新的 地址变量 C0 ;
判断是否运算完毕, 是: 清除启动标志, 通过主设备的中断控制器启动中断输出, 并跳到上述从寄存器中读出启动标志位、 判断是否启动的步骤 ; 否: 跳到上述判断 FIFO-1 是否为满的步骤 ;
所述运算器用于 :
判断 FIFO-3 是否为满, 是: 继续本步骤的判断 ; 否: 跳到下一步 ;
判断 FIFO-1 是否为空, 是: 继续本步骤的判断 ; 否: 读出一个图像数据或音频数据 A, 跳下一步 ;
判断 FIFO-2 是否为空, 是: 继续本步 ; 否: 读出一个图像数据或音频数据 B, 跳下 一步 ;
把图像数据或音频数据和图像数据或音频数据 B 进行图像或音频运算, 把运算结 果写到 FIFO-3 中, 然后返回到上述判断 FIFO-3 是否为满的步骤。
综上所述, 本发明方法主要通过主控制器和运算器配合运作, 用于图像或音频数 据的叠加的运算, 其主控制器部分主要用于将需要叠加的数据读出存放在两个 FIFO 中, 由 运算器提取运算后存放在另一 FIFO 中, 再由主控制器把 FIFO-3 的数据写到内存中, 方法简 单, 实现方便 ; 另外本发明方法是在带有图像输出或音频输出的设备上专门设置一图像数 据或音频数据的叠加处理器, 并将该叠加处理器设置在 SOC 上, 用于图像或音频叠加的运 算, 该叠加处理器独立运作, 不占用系统资源, 不影响系统的处理速度, 功耗小。