《基于OMAP的MPEG-4实时解码器的实现》由会员分享,可在线阅读,更多相关《基于OMAP的MPEG-4实时解码器的实现(3页珍藏版)》请在金锄头文库上搜索。
1、随着移动通信和多媒体技术的发展 !人们对通信的要求已不满足于传统的语音业务!而是追求更高品质的视频“音频等多媒体信息服务# 在多媒体通信中!视频区别于音 频和 文字的 显著 特点 是其大 数 据 量 以 及 高 处 理复杂度$ 现有的移动终端一般采用!“#芯片作为核心!“$芯片在数据处理方面具有较多的优势!但其系统处理和控制能力比较弱$ 第三代移动通 信 %:67751 N751开发0开发%(端程序“ 前者主要是为了使设计的算 法 与?%0=$4AB477%( JJ?的片 内存 储器容 量小 而存取 速度 快 # 片 外存储 器容 量 大 但 存 取 速 度慢“ 在分配存储器的时候应考虑到这个
2、特点合理地安排程序各 部分 “ 对于那 些使 用频 繁的变 量 应 考 虑 放 在 片内#如!“;表!运动矢量!反量化!反%;JJ?的 片 内 存 储 器 资 源 不 是 很 多P必 须 合 理 利用“ 例如一帧.SESO的T;=UL)VW!).R图像P如果以紧凑的方式LE个字节存到一个)W36X的字中R存放也需要)YZ字“ 因此不可能在解码时把一整帧都放在片内P而应考虑使用%*0在需要时把图像的一部分传入片内进行处理“ 此外# 为了使;(访问和%*0传输同时无冲突地进行P将数据访问设计成乒乓结构“ 在解=帧时片内准备 两 个 大 小 为 一 宏 块 行 的 存 储 区 用 于 存 放!数 据
3、P;(将解码的一宏块行数据放在其中一块后P%*0把这一宏块行的数据传输到片外对应的位置P同时;(解下一宏块行的数据并将结果放在另外一块存储区P%*0再传送此块的数据P如此反复执行“ 选择两宏块行大小的原因是不能使用片内太多的存储器资源P同时如果每次解码传输的数据太少将过 于频繁 地启 动%*0# 导 致效率下降P折衷考虑决定在片内为解码数据开辟两宏块行大小的缓存“ 而在解(帧的时候因为要先读入参考帧的某些数据所以更为复杂“ 在片内开辟两块缓存#用以存放对=FX4B宏块进行运动补偿所需的参考帧中 对应 搜索范围内的数据P同时准备两个宏块大小的片内空间用于存 放 当 前 宏 块 解 码 的 结 果
4、$ 为 描 述 方 便 称 为*)和*E%“ 此时需要使用两个%*0通道P通道)负责将解当前 宏块进 行运 动补偿 时所 需的 参考帧 部 分 数 据 读 到 片内缓存中#通道E负责将解码的数据传输到片外对应的空间 “ 先启 动通道)读所 需 参 考 帧 数 据 到 缓 存)#;(用这些数据和读入的码流对=FX4B宏块进行运 动补偿 解分配处理器分配节点建立数据流创建节点运行节点关闭数据流删除节点删除函数 $无效算法#释放资源# 释放数据流#释放存储器%执行函数 $查询是否有消息和数据 流的循环 %创建函数 $分配存储器#创建数据流# 分配资源 #有效算法%图E 0(节点的关系连接数据流通讯与
5、电视J)使用数据分割没使用数据分割!“#$%解码示意图出当前宏块的数据放入54# 同时通道4读下一宏块所需的参考帧数据到缓存3$ 之后678%通道4%通道3并行工作#678利用缓存3的数据解下一宏块放入53#通道4再读数据到缓存4中# 通道3将解码的数据从54传输到片外对应的空间#如此循环#7帧利用:5;解码如图9所示$?提供的?5A?B库函数$?5A?B是专门为图像处理和视频提供的库# 用来提高视频处理速度$这些库函数中有的是软件库函数#是用汇编写成的高效代码 例如 反量化 函数?5CD$EF74M4N芯片中一些专门为视频 编解 码的硬 件加 速模块 来 处 理 数 据 # 如 利 用 反:
6、6模 块 的?5CHD/GCJKJ等 # 这 些 函 数 处 理 数 据 的 速 度 更快#效率更高$ 在使用某些库函数的时候需要按照其接口的要求调整$?公司* L5;74M4W 5FYGH%$DH& 7#“/$,“# $/0H/&Y $!$#T$/$ 5&F&Y* :$/*3WW32宋 彬#常义林*视频通信抗误码方法研究的新进展*电子学报#3WW36 4VO6 3.V_ 44 aWMRb ?!“#%&GH“ G$/0“YT“T6“DH “! &FDH“TcHF,&Y “de$/G,T7G3fgH,F&Yb g$#,H“4ZWb X& b3WWW!收稿日期3WW2TWMT4a“通讯与电视M3