exynos 4412 mfc 介绍
exynos 系列处理器的多媒体编解码依靠的是mfc硬件模块
目前对MFC的介绍较少。
这里粗略的总结一下
MFC 有个RISC的小核,有8K的Icache,4K的Dcache,这个RISC可以对ES流每一帧的头数据进行分析或者合成
MFC由以下部分构成:RISC, MFC core(各种加速器),寄存器组,总线接口,内存接口
RISC和HOST都可以访问寄存器组,通过寄存器组互相通信,RISC通过产生一个中断,告诉HOST有消息,HOST收到消息后处理,
然后写MFC_RISC_HOST_INT 寄存器清掉中断位
MFC有两个AXI 总线接口。构成两个通道,可以同时全速运行。从而同时进行两路的编解码。
上图中的Search SRAM用来防止参考image, 这个主要是在运动估计和运动补偿的时候用到
Share SRAM的作用主要是保存共享当前视频帧。供前后帧在编码的时候使用。
Pixel cache, 这个位于MFC core内部,用来减少对参考帧的访问次数。对亮度数据有2K的缓存,对色度数据有1K的缓存
Host 和MFC之间通过共享内存来交换要解码的数据和解码完毕的数据
MFC的固件版本会更新,很多编解码的内部的状态设置,参数设置会变化,所以不能用寄存器这种固定的东西来实现,要用共享内存来实现主机和MFC的互联
S5PV210 mfc寄存器分为以下几类
1,buffer地址设置类
2,R2H,H2R设置类
3,一些相对固定的编解码器状态设置/读取类
R2H H2R是什么东西?
R2H,主要用在了中断,H2R主要用在告诉MFC的一些状态,例如wake up,sleep等,似乎和解码的具体细节无关