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 ! ", pFBDevice );

       return -1;

    }

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

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

    {

        gbl_alpha.alpha = iAlpha;

    }

    else

    {

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

        return -2;

    }

    gbl_alpha.enable = bEnable;

    ioctl( fdFB, MXCFB_SET_GBL_ALPHA, &gbl_alpha );

    INFO( "%s global alpha, device: %s, alpha: %d ! ", 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

原文地址:https://www.cnblogs.com/senior-engineer/p/6337202.html