首页 > 其他 > 详细

HDMI blend alpha 配置

时间:2014-03-30 02:10:34      阅读:660      评论:0      收藏:0      [点我收藏+]

问题:usb摄像头图像经过fimc0格式转换后并没有alpha值,只有rgb值,再输出到HDMI时,显示器背景出现蓝色;

分析:  在linux3.9.7中fimc-m2m只实现了格式转化和分辨率调整,没有s_ctrl中alpha配置功能的实现,当输出为RGB不能设置输出图像的alpha值,alpha值为0. 导致输出图像不正常。

解决方法:

1、fimc-m2c.c中添加配置alpha的函数;

2、修改mixer,使其默认输出为有0xff的alpha值;

为了简单测试,这里尝试修改mixer寄存器。

s5pv210 hdmi和tvout 结构如下图:

bubuko.com,布布扣

s5pv210 视频输入有三个:一个VP(Video Processor)、两个Mixer;视频输出有两个Video DAC(TV Out)、HDMI。

1、VP(Video Processor) 主要负责接收YUV数据输入;

2、MIXER中的grp0和grp1主要负责接收RGB的数据输入;

3、然后这三种输入流按照blend的配置显示在输出设备上;

s5pv210支持 三者的优先级,alpha值和默认背景的配置。

blend流程如下图:

bubuko.com,布布扣


mixer的alpha的配置有三种实现方式:

1、window blend方式:就是设置一个window blend的值,使整个画面都配置成这一个相同的alpha值,

2、pixel blend方式:根据每个像素的alpha值,和其他层的图像组合,

3、window blend + pixel blend方式:组合方式

下面是数据手册给出的公式:

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣


这里测试例程只使用到了一个 grp0或者grp1,驱动默认使用的是pixel blend方式。

在mxr_reg_reset函数中:

bubuko.com,布布扣

当fimc0出来的rgb数据的alpha值为0时,出来的不正常图像如下:


bubuko.com,布布扣



修改寄存器,使能windows blend方式,禁用piexl blend方式,默认alpha值为0xff(为什么为0xff,下面会讲)

bubuko.com,布布扣

效果图像为:

bubuko.com,布布扣


这样,图像就显示正常了,只是在混合的时候不能按照每个像素的alpha值单独混合了。


当把alpha值设置为0x00时,这时blend因子为0,理论上,图像是100%透明,因为有之前已经设置了背景图像0x80808080,为灰度,显示效果如下:

bubuko.com,布布扣

显示的是灰色的图像。


alpha设置0x80的效果图:

bubuko.com,布布扣

花也变成了灰色。


这里通过驱动的修改,使hdmi的输出图像能够正常,因为测试都是比较简单的,不会考虑到pixel之间的混合,所以就舍弃了原有的配置。

如果使用原有的配置,不得不在fimc0输出的图像再重新遍历一遍,添加alpha值,影响了cam预览的的帧率。


以上纯属个人理解,可能存在错误和不足。




HDMI blend alpha 配置,布布扣,bubuko.com

HDMI blend alpha 配置

原文:http://blog.csdn.net/liujia2100/article/details/22530523

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!