七星海棠

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠  发布于  2018-02-06 11:43:50
采纳率 0%
29个问答
5090

Hi3536 怎么将qt显示背景设置成透明或者去掉

 

       大家好,
             Hi3536在视频层上叠加qt代码输出总有一层背景色,可以怎么将这个背景色去掉或者设置成透明,试了下修改下面的参数,没能成功。不清楚这个是要修改FBIOPUT_VSCREENINFO参数,还是要在qt代码量里去修改
static struct fb_bitfield s_a32 = {24,8,0};
static struct fb_bitfield s_r32 = {16,8,0};
static struct fb_bitfield s_g32 = {8,8,0};
static struct fb_bitfield s_b32 = {0,8,0};
     现象如下图:
我来回答
回答12个
时间排序
认可量排序

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠 2018-02-06 17:02:15
认可0
Hi3536初始化程序和qt程序是分开运行的,下面是Hi3536初始化程序
        HI_S32 s32Ret = HI_SUCCESS;
    pthread_t phifb0 = -1;       

    HI_BOOL done = 0;

    HI_U32 u32PicWidth  = WIDTH;
    HI_U32 u32PicHeight = HEIGHT;
    SIZE_S  stSize;

        VO_LAYER VoLayer = SAMPLE_VO_LAYER_VHD0;
    VO_DEV VoDev = SAMPLE_VO_DEV_DHD0;
    VO_PUB_ATTR_S stPubAttr;
    VO_VIDEO_LAYER_ATTR_S stLayerAttr;
    HI_U32 u32VoFrmRate;

    VB_CONF_S stVbConf;
        HI_U32 u32BlkSize;

    struct fb_var_screeninfo stVarInfo;
        HI_CHAR file[12] = "/dev/fb0";
    HI_S32 fd;
    HI_BOOL bEnable;
    HIFB_DDRZONE_S stDDRZonePara;
    HIFB_LAYER_INFO_S stLayerinfo;
    HIFB_COLORKEY_S stColorKey;
    HIFB_ALPHA_S stAlpha;
    HI_BOOL bShow;

    signal(SIGINT, SAMPLE_HIFB_HandleSig);
    signal(SIGTERM, SAMPLE_HIFB_HandleSig);

    /******************************************
     step  1: init variable
    ******************************************/
    memset(&stVbConf,0,sizeof(VB_CONF_S));

    u32BlkSize = CEILING_2_POWER(u32PicWidth,SAMPLE_SYS_ALIGN_WIDTH) * CEILING_2_POWER(u32PicHeight,SAMPLE_SYS_ALIGN_WIDTH) * 2;
    stVbConf.u32MaxPoolCnt = 128;
    stVbConf.astCommPool[0].u32BlkSize = u32BlkSize;
    stVbConf.astCommPool[0].u32BlkCnt =  6;

    /******************************************
     step 2: mpp system init.
    ******************************************/
    s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("system init failed with %d!\n", s32Ret);
        goto SAMPLE_HIFB_NoneBufMode_0;
    }

    stPubAttr.enIntfSync = VO_OUTPUT_1080P60;
    stPubAttr.enIntfType = VO_INTF_HDMI;
        stPubAttr.u32BgColor = 0x00ff00;

    stLayerAttr.bClusterMode = HI_FALSE;
        stLayerAttr.bDoubleFrame = HI_FALSE;
        stLayerAttr.enPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;

    s32Ret = SAMPLE_COMM_VO_GetWH(stPubAttr.enIntfSync,&stSize.u32Width,\
        &stSize.u32Height,&u32VoFrmRate);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("get vo wh failed with %d!\n", s32Ret);
        goto SAMPLE_HIFB_NoneBufMode_0;
    }
    memcpy(&stLayerAttr.stImageSize,&stSize,sizeof(stSize));

        stLayerAttr.u32DispFrmRt = 60;
        stLayerAttr.stDispRect.s32X = 0;
        stLayerAttr.stDispRect.s32Y = 0;
        stLayerAttr.stDispRect.u32Width = stSize.u32Width;
        stLayerAttr.stDispRect.u32Height = stSize.u32Height;

    s32Ret = SAMPLE_COMM_VO_StartDev(VoDev, &stPubAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("start vo dev failed with %d!\n", s32Ret);
        goto SAMPLE_HIFB_NoneBufMode_0;
        }

    s32Ret = SAMPLE_COMM_VO_StartLayer(VoLayer, &stLayerAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("start vo layer failed with %d!\n", s32Ret);
        goto SAMPLE_HIFB_NoneBufMode_1;
        }
   
    if (stPubAttr.enIntfType & VO_INTF_HDMI)
    {
        s32Ret = SAMPLE_COMM_VO_HdmiStart(stPubAttr.enIntfSync);
        if (HI_SUCCESS != s32Ret)
        {
            SAMPLE_PRT("start HDMI failed with %d!\n", s32Ret);
            goto SAMPLE_HIFB_NoneBufMode_2;
            }
    }

    /* 1. open framebuffer device overlay 0 */
        fd = open(file, O_RDWR, 0);
        if(fd < 0)
        {
                SAMPLE_PRT("open %s failed!\n", file);
                return HI_NULL;
        }

    bShow = HI_FALSE;
    if (ioctl(fd, FBIOPUT_SHOW_HIFB, &bShow) < 0)
    {
        SAMPLE_PRT("FBIOPUT_SHOW_HIFB failed!\n");
        return HI_NULL;
    }

        HIFB_POINT_S stPoint = {0, 0};  
    if (ioctl(fd, FBIOPUT_SCREEN_ORIGIN_HIFB, &stPoint) < 0)
    {
        printf("set screen original show position failed!\n");
                close(fd);
        return -1;
    }

    stAlpha.bAlphaEnable = HI_FALSE;//HI_TRUE;
    stAlpha.bAlphaChannel = HI_FALSE;//0;
    stAlpha.u8Alpha0 = 0x0;
    stAlpha.u8Alpha1 = 0xff;
    stAlpha.u8GlobalAlpha = 0x80;
    if (ioctl(fd, FBIOPUT_ALPHA_HIFB,  &stAlpha) < 0)
    {
        SAMPLE_PRT("Set alpha failed!\n");
        close(fd);
        return HI_NULL;
    }

        stColorKey.bKeyEnable = HI_TRUE;
        stColorKey.u32Key = 0x0;
        if (ioctl(fd, FBIOPUT_COLORKEY_HIFB, &stColorKey) < 0)
        {
            SAMPLE_PRT("FBIOPUT_COLORKEY_HIFB!\n");
            close(fd);
            return HI_NULL;
        }

    s32Ret = ioctl(fd, FBIOGET_VSCREENINFO, &stVarInfo);
    if(s32Ret < 0)
    {
        SAMPLE_PRT("FBIOGET_VSCREENINFO failed!\n");
        close(fd);
        return HI_FAILURE;
    }

    stVarInfo.red = s_r32;
        stVarInfo.green = s_g32;
        stVarInfo.blue = s_b32;
        stVarInfo.transp = s_a32;
        stVarInfo.bits_per_pixel = 32;
    stVarInfo.xres = WIDTH;
    stVarInfo.yres = HEIGHT;
    stVarInfo.activate = FB_ACTIVATE_NOW;
    stVarInfo.xres_virtual = WIDTH;
    stVarInfo.yres_virtual = HEIGHT;
    stVarInfo.xoffset = 0;
    stVarInfo.yoffset = 0;

    s32Ret = ioctl(fd, FBIOPUT_VSCREENINFO, &stVarInfo);
    if(s32Ret < 0)
    {
        SAMPLE_PRT("FBIOPUT_VSCREENINFO failed!\n");
        close(fd);
        return HI_FAILURE;
    }
        bShow = HI_TRUE;
    if (ioctl(fd, FBIOPUT_SHOW_HIFB, &bShow) < 0)
    {
        SAMPLE_PRT("FBIOPUT_SHOW_HIFB failed!\n");
        return HI_NULL;
    }

    while(!done)
    {
        usleep(200 * 1000);
    }

SAMPLE_HIFB_NoneBufMode_2:
    SAMPLE_COMM_VO_StopLayer(VoLayer);

SAMPLE_HIFB_NoneBufMode_1:
    SAMPLE_COMM_VO_StopDev(VoDev);

SAMPLE_HIFB_NoneBufMode_0:
    SAMPLE_COMM_SYS_Exit();
   
    return HI_SUCCESS;

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2018-02-07 17:19:52
认可0
qt 里加上QWSServer::setBackground(QColor(0x0,0x0,0x0,0x0));

ricky_zhounj

0个粉丝

2

问答

0

专栏

0

资料

ricky_zhounj 2018-02-07 18:23:56
认可0
本帖最后由 ricky_zhounj 于 2018-2-8 11:18 编辑

修改Qt代码
src/gui/embeded/qwindowsystem_qws.cpp  L1434
[code]
    if (!bgBrush)
        bgBrush = new QBrush(QColor(0x20, 0xb0, 0x50));
[/code]

Qt中设置了window的初期底色 QColor(0x20, 0xb0, 0x50),这个颜色便是你的绿色。
将这个颜色改成4个0  即 QColor(0x00, 0x00, 0x00, 0x00),就可以了。

year

0个粉丝

0

问答

0

专栏

0

资料

year 2018-07-02 19:18:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84334&ptid=38863]ricky_zhounj 发表于 2018-2-7 18:23[/url]
修改Qt代码
src/gui/embeded/qwindowsystem_qws.cpp  L1434

[/quote]

谢谢大神,这个问题也纠结了我好久,终于解决了:handshake

hcb123456

0个粉丝

6

问答

0

专栏

0

资料

hcb123456 2018-12-14 11:12:57
认可0
大神 咨询下你的QT QT_QWS_DISPLAY这个设置的是/dev/fb0还是fb1,谢谢,QT和视频同时显示出来是怎么设置的

七星海棠

1个粉丝

29

问答

0

专栏

1

资料

七星海棠 2018-12-14 11:49:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=116001&ptid=38863]hcb123456 发表于 2018-12-14 11:12[/url]
大神 咨询下你的QT QT_QWS_DISPLAY这个设置的是/dev/fb0还是fb1,谢谢,QT和视频同时显示出来是怎么设置的[/quote]

QT默认是fb0,视频上叠加一个fb0,这个开发包里有demo的,你可以看看

hcb123456

0个粉丝

6

问答

0

专栏

0

资料

hcb123456 2018-12-14 13:16:20
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=116010&ptid=38863]七星海棠 发表于 2018-12-14 11:49[/url]
QT默认是fb0,视频上叠加一个fb0,这个开发包里有demo的,你可以看看[/quote]

好的,非常感谢:handshake

qn1550564235

0个粉丝

2

问答

0

专栏

0

资料

qn1550564235 2019-02-27 10:49:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=116010&ptid=38863]七星海棠 发表于 2018-12-14 11:49[/url]
QT默认是fb0,视频上叠加一个fb0,这个开发包里有demo的,你可以看看[/quote]

你好,请问参考哪个开发包?谢谢

qn1550564235

0个粉丝

2

问答

0

专栏

0

资料

qn1550564235 2019-04-25 10:42:56
认可0
你好我用的qt5 没有关于qws的设置,我的情况不是有背景色,而是qt的对话框设置透明后:
setAttribute(Qt::WA_TranslucentBackground,true);
仍然显示一圈黑色:
[img]https://files-cdn.cnblogs.com/files/xiaojianliu/00.bmp[/img]

qn1566266420

0个粉丝

0

问答

0

专栏

0

资料

qn1566266420 2019-08-29 14:36:45
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=116022&ptid=38863]hcb123456 发表于 2018-12-14 13:16[/url]
好的,非常感谢[/quote]

请问是Qt的开发包还是海思的,哪一个Demo?谢谢。

hcb123456

0个粉丝

6

问答

0

专栏

0

资料

hcb123456 2020-01-02 16:45:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=147142&ptid=38863]qn1566266420 发表于 2019-8-29 14:36[/url]
请问是Qt的开发包还是海思的,哪一个Demo?谢谢。[/quote]

自己移植的qt4.8

ricky_zhounj

0个粉丝

2

问答

0

专栏

0

资料

ricky_zhounj 2018-02-08 11:20:51
认可0
:lol:lol:lol:lol:lol
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区