QT解决视频透视,有阴影的方法

#define BG_DEVNAME "/dev/fb0"
#define FG_DEVNAME "/dev/fb1"

课题5, QT界面与视频透明叠加问题:颜色透明issues已Fixed掉,而像素级的透明叠加问题尚未解决,内部有方案和上车案例(D090).

实现QT Local alpha透出fb1的多媒体视频或手机互联视频,必须同时满足QT layer显示属性设置,和以下工作:

1、控制内核Global Alpha开关,可以实现将fb0设置到fb1上层,且使能local alpha的效果:

API接口:

SetGlobalAlpha(pGlobalDevice, false, 0);

API代码如下:

int SetGlobalAlpha(const char *pFBDevice, bool bEnable, int iAlpha )

{

struct mxcfb_gbl_alpha gbl_alpha;

int fdFB = -1;

//===================// fd

fdFB = open( pFBDevice, O_RDWR, 0 );

if(fdFB < 0)

{

ERROR( "Open FrameBuffer device failed: %s !\n", pFBDevice );

return -1;

}

//===================// alpha

if( (iAlpha <= 255) && (iAlpha >= 0) )

{

gbl_alpha.alpha = iAlpha;

}

else

{

ERROR( "Invalid alpha: %d !\n", iAlpha );

return -2;

}

gbl_alpha.enable = bEnable;

ioctl( fdFB, MXCFB_SET_GBL_ALPHA, &gbl_alpha );

INFO( "%s global alpha, device: %s, alpha: %d !\n", gbl_alpha.enable?"Enable":"Disable", pFBDevice,

gbl_alpha.alpha );

close(fdFB);

return 0;

}

2、定制mfw_v4lsink插件(见附件,之前给过版本给软件部,可以尝试先不更新该库看效果,如果不行再替换成该文件),

在显示的时候不去动framebuffer的叠加层级关系,附件插件是在CN180S中使用的版本。

(替换/usr/lib/gstreamer-0.10/libmfw_gst_v4lsink.so)文件

地址:http://files.cnblogs.com/files/senior-engineer/libmfw_gst_v4lsink.zip

3、测试程序地址:

http://files.cnblogs.com/files/senior-engineer/Desktop.zip

上一篇:关于链接target的问题


下一篇:用canvas制作酷炫射击游戏--part2