做个好菜鸟

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟  发布于  2017-05-11 14:38:20
采纳率 0%
13个问答
7780

【已解决】HI3531在Qt界面显示视频 GUI界面会遮挡住视频层

 
本帖最后由 做个好菜鸟 于 2018-1-24 13:16 编辑

HI3531 单独显示QT界面或者单独播放视频都是没有问题的,当二者同时显示时GUI层会遮挡住视频层,看论坛里有前辈说是设置ColorKey 可是HI3531只有视频层支持ColorKey,当设置叠加层alpha时代码如下图 当stAlpha.bAlphaEnable = HI_TRUE;时整个GUI层是半透明的但没有QT界面了.   当stAlpha.bAlphaEnable = HI_FALSE;时整个GUI界面是黑色的,请问有遇到同样问题知道怎么解决的吗???
我来回答
回答26个
时间排序
认可量排序

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-05-11 17:18:17
认可0
问题解决了

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-10 15:18:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49603&ptid=15157]做个好菜鸟 发表于 2017-5-11 17:18[/url]
问题解决了[/quote]

请问你的解决方案是?

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-10 17:20:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57205&ptid=15157]jackeyt 发表于 2017-8-10 15:18[/url]
请问你的解决方案是?[/quote]

qt界面设置: this->setAttribute(Qt::WA_TranslucentBackground,true);
    QWSServer::setBackground(QColor(0x0,0x0,0x0,0x0));
然后初始化hifb时设置透明度:
HIFB_ALPHA_S stAlpha;
stAlpha.bAlphaEnable = HI_TRUE; //叠加层使能
    stAlpha.bAlphaChannel = HI_TRUE; //叠加层通道使能
    stAlpha.u8Alpha0 = 0x0;
    stAlpha.u8Alpha1 = 0xff;
    stAlpha.u8GlobalAlpha = 0xff;
ioctl(fd,FBIOPUT_ALPHA_HIFB,&stAlpha)
希望对你有帮助

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-10 18:04:15
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57228&ptid=15157]做个好菜鸟 发表于 2017-8-10 17:20[/url]
qt界面设置: this->setAttribute(Qt::WA_TranslucentBackground,true);
    QWSServer::setBackground( ...[/quote]

我确实也是这样设置的,QT已经是背景透明,单独运行sample_vio 可以直接在显示器上显示视频,在QT中调用就直接黑屏了。。。

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-10 18:15:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57243&ptid=15157]jackeyt 发表于 2017-8-10 18:04[/url]
我确实也是这样设置的,QT已经是背景透明,单独运行sample_vio 可以直接在显示器上显示视频,在QT中调用 ...[/quote]

贴一些调试信息吧,cat /proc/umap/vo 先看下是哪里出现的问题 是HIFB 初始化不正确还是其他的问题

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 09:42:26
认可0
# cat /proc/umap/vo

[VOU] Version: [Hi3520D_MPP_V1.0.4.0 ], Build Time[Sep 29 2014, 18:04:34]

-----MODULE PARAM--------------------------------------------------------------
detectCycle
-----DEV CONFIG----------------------------------------------------------------
DevId   DevEn    Mux1    Mux2    Mux3       InfSync   BkClr  DevFrt DispFrt DoubFrm Toleration  Vtth
     0       Y     VGA                   1366x768@60ff00ff00      60      25       N   10000000   240

-----DEV VDAC STATUS----------------------------------------------------------
DevId    VDAC
     0       -

-----DEV VIDEO STATUS----------------------------------------------------------
DevId VideoEn     PiP  PixFmt    ImgW    ImgH   DispW   DispH   bTdeBypass
     0       Y       N     420    1366     768    1366     768       0

-----DEV VIDEO STATUS 2--------------------------------------------------------
DevId VideoEn     PiP EnChNum  Matrix    Luma    Cont     Hue    Satu
     0       Y       N       1       1      50      50      50      59

-----DEV VIDEO STATUS 3--------------------------------------------------------
DevId  SetBeg  SetEnd   WBCEn bCasCfg  bCasEn bCasSlv  CasRgn CasMode CasPatn
     0       N       N       N       N       N       N                       0

-----GRP STATUS----------------------------------------------------------------
GrpId OnDev ChNum FulFr TgtFr Start Resrv   GrpGap              BasePts
-----CHN BASE INFO-------------------------------------------------------------
DevId ChnId ChnEn  Prio DeFlk  ChnX  ChnY  ChnW  ChnH DispX DispY bSnap Field DoubFrm  bCas CcPos bRcvMatch
     0     0     Y     0     N     0     0  1366   768    -1    -1     N  both       N     N     0       0

-----CHN PLAY INFO-------------------------------------------------------------
DevId ChnId Batch  Show Pause  Step Revrs Refsh Thrshd ChnFrt ChnGap
     0     0     N     Y     N     N     N     N      3     25  40000

-----CHN PLAY INFO-------------------------------------------------------------
DevId ChnId          DisplayPts              PrePts             CurrPts            ScalePts              SetPts
     0     0                   0                   0                   0                   0                  -1

-----HD CHN STATUS1------------------------------------------------------------
DevId ChnId       QCnt      NewDo      OldDo       LCnt       SCnt      ChRpt BusyN ShouD Dsped  Area AreaT
     0     0          0          0          0          0          0          0     0    -1    -1     0     0

-----HD CHN STATUS2------------------------------------------------------------
DevId ChnId  Buf1  Buf2  Buf3  Buf4  DBuf Stat1 Stat2 QNodeAddr SNodeAddr  DispAddr
     0     0     F     F     F     F     0   end   end         0         0         0

-----SD CHN STATUS-------------------------------------------------------------
DevId ChnId   Job     Task     LCnt     SCnt    ChRpt     DRpt CBusy DBusy ShouD Dsped b2Scl  ChnAddr DispAddr

-----CHN OTHER INFO------------------------------------------------------------
DevId ChnId bZoom ZmTyp ZoomX ZoomY ZoomW ZoomH  SrcW  SrcH FltTp  HFlt VlFlt VcFlt
     0     0     N     0     0     0     0     0     0     0     0     0     0     0

-----WBC INFO------------------------------------------------------------------
DevId  WbcW  WbcH PixFmt FrmRat RealRat    Mode  DataSrc  Depth  NotFin

-----GRAPHICS LAYER------------------------------------------------------------
Layer BindDev
   HC0       0

-----LAYER CSC PARAM-----------------------------------------------------------------
LAYERID  Matrix    Luma    Cont     Hue    Satu
     0       6      50      50      50      50
     3       6      50      50      50      50

-----VGA PARAM-----------------------------------------------------------------
DevId  Matrix    Luma    Cont     Hue    Satu    Gain
     0       4      50      50      50      59      10

-----DEV Int Status----------------------------------------------------------------
DevId IntRate IntTime MaxIntT TimePrM  IntGapT  MaxGapT
     0   59.78       9      38     646    16726    16730

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 09:44:05
认可0
# cat /proc/graphics/hifb0
layer name                       :layer_0
Open count                       :2
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1366, 768)
xres_virtual, yres_virtual       :(1366, 768)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :5472
Mem size:                        :8100 KB
Layer Scale (hw):                :NO
ColorFormat:                     :ARGB8888
Alpha Enable                     :ON
AlphaChannel Enable              :ON
Alpha0, Alpha1                   :0, 255
Alpha Global                     :255
Colorkey Enable                  :OFF
Colorkey value                   :0x0
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0x8669c000
display buffer[0] addr           :0x8669c000
display buffer[1] addr           :0x8669c000
displayrect                      :(1366, 768)
screenrect                       :(1366, 768)
device max resolution            :1366, 768
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0x8669c000
canavas updated (w, h)           :1366,768
canvas width                     :1366
canvas height                    :768
canvas pitch                     :5472
canvas format                    :ARGB8888
IsCompress                       :NO

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 10:05:35
认可0
这是在QT中调用sample_vio 想要显示视频的调试信息:
# cat /proc/umap/vo

[VOU] Version: [Hi3520D_MPP_V1.0.4.0 ], Build Time[Sep 29 2014, 18:04:34]

-----MODULE PARAM--------------------------------------------------------------
detectCycle
-----DEV CONFIG----------------------------------------------------------------
DevId   DevEn    Mux1    Mux2    Mux3       InfSync   BkClr  DevFrt DispFrt DoubFrm Toleration  Vtth

-----DEV VDAC STATUS----------------------------------------------------------
DevId    VDAC

-----DEV VIDEO STATUS----------------------------------------------------------
DevId VideoEn     PiP  PixFmt    ImgW    ImgH   DispW   DispH   bTdeBypass

-----DEV VIDEO STATUS 2--------------------------------------------------------
DevId VideoEn     PiP EnChNum  Matrix    Luma    Cont     Hue    Satu

-----DEV VIDEO STATUS 3--------------------------------------------------------
DevId  SetBeg  SetEnd   WBCEn bCasCfg  bCasEn bCasSlv  CasRgn CasMode CasPatn

-----GRP STATUS----------------------------------------------------------------
GrpId OnDev ChNum FulFr TgtFr Start Resrv   GrpGap              BasePts
-----CHN BASE INFO-------------------------------------------------------------
DevId ChnId ChnEn  Prio DeFlk  ChnX  ChnY  ChnW  ChnH DispX DispY bSnap Field DoubFrm  bCas CcPos bRcvMatch

-----CHN PLAY INFO-------------------------------------------------------------
DevId ChnId Batch  Show Pause  Step Revrs Refsh Thrshd ChnFrt ChnGap

-----CHN PLAY INFO-------------------------------------------------------------
DevId ChnId          DisplayPts              PrePts             CurrPts            ScalePts              SetPts

-----HD CHN STATUS1------------------------------------------------------------
DevId ChnId       QCnt      NewDo      OldDo       LCnt       SCnt      ChRpt BusyN ShouD Dsped  Area AreaT

-----HD CHN STATUS2------------------------------------------------------------
DevId ChnId  Buf1  Buf2  Buf3  Buf4  DBuf Stat1 Stat2 QNodeAddr SNodeAddr  DispAddr

-----SD CHN STATUS-------------------------------------------------------------
DevId ChnId   Job     Task     LCnt     SCnt    ChRpt     DRpt CBusy DBusy ShouD Dsped b2Scl  ChnAddr DispAddr

-----CHN OTHER INFO------------------------------------------------------------
DevId ChnId bZoom ZmTyp ZoomX ZoomY ZoomW ZoomH  SrcW  SrcH FltTp  HFlt VlFlt VcFlt

-----WBC INFO------------------------------------------------------------------
DevId  WbcW  WbcH PixFmt FrmRat RealRat    Mode  DataSrc  Depth  NotFin

-----GRAPHICS LAYER------------------------------------------------------------
Layer BindDev
   HC0       0

-----LAYER CSC PARAM-----------------------------------------------------------------
LAYERID  Matrix    Luma    Cont     Hue    Satu

-----VGA PARAM-----------------------------------------------------------------
DevId  Matrix    Luma    Cont     Hue    Satu    Gain

-----DEV Int Status----------------------------------------------------------------
DevId IntRate IntTime MaxIntT TimePrM  IntGapT  MaxGapT

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 10:07:09
认可0
以及HIFB0的调试信息:
# cat /proc/graphics/hifb0
layer name                       :layer_0
Open count                       :2
Show state                       :ON
Start position                   :(0, 0)
xres, yres                       :(1366, 768)
xres_virtual, yres_virtual       :(1366, 768)
xoffset, yoffset                 :(0, 0)
fix.line_length                  :5472
Mem size:                        :8100 KB
Layer Scale (hw):                :NO
ColorFormat:                     :ARGB8888
Alpha Enable                     :ON
AlphaChannel Enable              :ON
Alpha0, Alpha1                   :0, 255
Alpha Global                     :255
Colorkey Enable                  :OFF
Colorkey value                   :0x0
Deflicker Mode:                  :NONE
Deflicker Level:                 :AUTO
Display Buffer mode              :unkown
Displaying addr (register)       :0x8669c000
display buffer[0] addr           :0x8669c000
display buffer[1] addr           :0x8669c000
displayrect                      :(1366, 768)
screenrect                       :(1366, 768)
device max resolution            :1366, 768
IsNeedFlip(2buf)                 :NO
BufferIndexDisplaying(2buf)      :0
refresh request num(2buf)        :0
switch buf num(2buf)             :0
union rect (2buf)                :(0,0,0,0)
canavas updated addr             :0x8669c000
canavas updated (w, h)           :1366,768
canvas width                     :1366
canvas height                    :768
canvas pitch                     :5472
canvas format                    :ARGB8888
IsCompress                       :NO

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-11 11:12:50
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57291&ptid=15157]jackeyt 发表于 2017-8-11 10:05[/url]
这是在QT中调用sample_vio 想要显示视频的调试信息:
# cat /proc/umap/vo

[/quote]

Vo 初始化了吗??什么信息都没有啊,,

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 11:26:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57305&ptid=15157]做个好菜鸟 发表于 2017-8-11 11:12[/url]
Vo 初始化了吗??什么信息都没有啊,,[/quote]

在QT中已经初始化了一次,然后可以正常显示,在QT中调用显示视频的接口之后就显示这些信息了。

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-11 14:27:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57310&ptid=15157]jackeyt 发表于 2017-8-11 11:26[/url]
在QT中已经初始化了一次,然后可以正常显示,在QT中调用显示视频的接口之后就显示这些信息了。[/quote]

你现在是要视频层和GUI界面层同时显示,且可透过QT界面看到视频层的画面是吧?如果是的话按照我上面说的设置QT背景透明、Alpha值是可以实现的,结合现象和调试信息看下是初始化设置的问题还是调用sample的时候出现错误,推荐使用GDB进行调试

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 15:06:39
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57333&ptid=15157]做个好菜鸟 发表于 2017-8-11 14:27[/url]
你现在是要视频层和GUI界面层同时显示,且可透过QT界面看到视频层的画面是吧?如果是的话按照我上面说的 ...[/quote]

嗯。不知道你是如何在QT界面调用查看视频的,如果可以的话,可以提供这部分代码参考一下?

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-11 16:16:33
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57344&ptid=15157]jackeyt 发表于 2017-8-11 15:06[/url]
嗯。不知道你是如何在QT界面调用查看视频的,如果可以的话,可以提供这部分代码参考一下?[/quote]

this->setAttribute(Qt::WA_TranslucentBackground,true);
在界面类构造函数里加这个了吗?没的话加上

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-11 16:35:50
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57357&ptid=15157]做个好菜鸟 发表于 2017-8-11 16:16[/url]
this->setAttribute(Qt::WA_TranslucentBackground,true);
在界面类构造函数里加这个了吗?没的话加上[/quote]

已经有加上的了

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-14 17:15:53
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57357&ptid=15157]做个好菜鸟 发表于 2017-8-11 16:16[/url]
this->setAttribute(Qt::WA_TranslucentBackground,true);
在界面类构造函数里加这个了吗?没的话加上[/quote]

嗯。不知道你是如何在QT界面调用查看视频的,如果可以的话,可以提供这部分代码参考一下?

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-14 17:50:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57513&ptid=15157]jackeyt 发表于 2017-8-14 17:15[/url]
嗯。不知道你是如何在QT界面调用查看视频的,如果可以的话,可以提供这部分代码参考一下?[/quote]

就是我之前设置的那样,然把例程中的相关函数提取出来封装成类,先mpp_init然后开启vo、vi、vpss、初始化fbo和相关模块之后实例化类就可以了,没出来可能是某个地方设置或者调用顺序出错了,,

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-14 17:54:22
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57513&ptid=15157]jackeyt 发表于 2017-8-14 17:15[/url]
嗯。不知道你是如何在QT界面调用查看视频的,如果可以的话,可以提供这部分代码参考一下?[/quote]

叠加层属性中的位域信息别错了
  //设置叠加层属性
    var.xres_virtual = 1280;
    var.yres_virtual = 720 * 2;
    var.xres = 1280;
    var.yres = 720;
    var.transp = {24,8,0};
    var.red = {16,8,0};
    var.green = {8,8,0};
    var.blue = {0,8,0};
    var.bits_per_pixel = 32;

jackeyt

0个粉丝

1

问答

0

专栏

0

资料

jackeyt 2017-08-15 14:32:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57519&ptid=15157]做个好菜鸟 发表于 2017-8-14 17:54[/url]
叠加层属性中的位域信息别错了
  //设置叠加层属性
    var.xres_virtual = 1280;
[/quote]

这个属性设置都没有问题的,跟你的一模一样的

给你看一下我使用vi的代码:
{
    SAMPLE_VI_MODE_E enViMode = SAMPLE_VI_MODE_4_720P;
    HI_U32 u32ViChnCnt = 4;
    HI_S32 s32VpssGrpCnt = 4;
   
//    VB_CONF_S stVbConf;
    VPSS_GRP VpssGrp;
    VPSS_GRP_ATTR_S stGrpAttr;
    VO_DEV VoDev;
    VO_CHN VoChn;
        VI_CHN ViChn;
    VO_PUB_ATTR_S stVoPubAttr;
    SAMPLE_VO_MODE_E enVoMode, enPreVoMode;
   
    HI_S32 i;
    HI_S32 s32Ret = HI_SUCCESS;
    HI_U32 u32BlkSize;
    HI_CHAR ch;
    SIZE_S stSize;
    HI_U32 u32WndNum;

    /******************************************
     step  1: init global  variable
    ******************************************/
    gs_u32ViFrmRate = (VIDEO_ENCODING_MODE_PAL == gs_enNorm)?25:30;
   
//    memset(&stVbConf,0,sizeof(VB_CONF_S));

    u32BlkSize = SAMPLE_COMM_SYS_CalcPicVbBlkSize(gs_enNorm,\
                PIC_HD720, SAMPLE_PIXEL_FORMAT, SAMPLE_SYS_ALIGN_WIDTH);
//    stVbConf.u32MaxPoolCnt = 128;

    /*ddr0 video buffer*/
//    stVbConf.astCommPool[0].u32BlkSize = u32BlkSize;
//    stVbConf.astCommPool[0].u32BlkCnt = u32ViChnCnt * 8;


    /******************************************
     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 END_720P_0;
//    }

    /******************************************
     step 3: start vi dev & chn to capture
    ******************************************/
    s32Ret = SAMPLE_COMM_VI_Start(enViMode, gs_enNorm);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("start vi failed!\n");
        goto END_720P_0;
    }
   
    /******************************************
     step 4: start vpss and vi bind vpss (subchn needn't bind vpss in this mode)
    ******************************************/
    s32Ret = SAMPLE_COMM_SYS_GetPicSize(gs_enNorm, PIC_HD720, &stSize);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("SAMPLE_COMM_SYS_GetPicSize failed!\n");
        goto END_720P_1;
    }

    stGrpAttr.u32MaxW = stSize.u32Width;
    stGrpAttr.u32MaxH = stSize.u32Height;
    stGrpAttr.bDrEn = HI_FALSE;
    stGrpAttr.bDbEn = HI_FALSE;
    stGrpAttr.bIeEn = HI_TRUE;
    stGrpAttr.bNrEn = HI_TRUE;
    stGrpAttr.bHistEn = HI_TRUE;
    stGrpAttr.enDieMode = VPSS_DIE_MODE_NODIE;
    stGrpAttr.enPixFmt = SAMPLE_PIXEL_FORMAT;

    s32Ret = SAMPLE_COMM_VPSS_Start(s32VpssGrpCnt, &stSize, VPSS_MAX_CHN_NUM,&stGrpAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("Start Vpss failed!\n");
        goto END_720P_1;
    }

    s32Ret = SAMPLE_COMM_VI_BindVpss(enViMode);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("Vi bind Vpss failed!\n");
        goto END_720P_2;
    }

        /******************************************
         step 5: start vo HD0 (HDMI), muti-screen, you can switch mode
        ******************************************/
        printf("start vo HD0.\n");
        VoDev = SAMPLE_VO_DEV_DHD0;
        u32WndNum = 4;
        enVoMode = VO_MODE_4MUX;

//        if(VIDEO_ENCODING_MODE_PAL == gs_enNorm)
//        {
//                stVoPubAttr.enIntfSync = VO_OUTPUT_1366x768_60;
//        }
//        else
//        {
//                stVoPubAttr.enIntfSync = VO_OUTPUT_1366x768_60;
//        }
//#ifdef HI_FPGA
//        stVoPubAttr.enIntfType = VO_INTF_HDMI|VO_INTF_VGA|VO_INTF_BT1120;
//#else
//        stVoPubAttr.enIntfType = VO_INTF_HDMI|VO_INTF_VGA;
//#endif
//        stVoPubAttr.u32BgColor = 0x000000ff;
//        stVoPubAttr.bDoubleFrame = HI_FALSE;
//       
//        s32Ret = SAMPLE_COMM_VO_StartDevLayer(VoDev, &stVoPubAttr, gs_u32ViFrmRate);
//        if (HI_SUCCESS != s32Ret)
//        {
//                SAMPLE_PRT("Start SAMPLE_COMM_VO_StartDevLayer failed!\n");
//                goto END_720P_3;
//        }
//       
//        s32Ret = SAMPLE_COMM_VO_StartChn(VoDev, &stVoPubAttr, enVoMode);
//        if (HI_SUCCESS != s32Ret)
//        {
//                SAMPLE_PRT("Start SAMPLE_COMM_VO_StartChn failed!\n");
//                goto END_720P_4;
//        }

//        /* if it's displayed on HDMI, we should start HDMI */
//        if (stVoPubAttr.enIntfType & VO_INTF_HDMI)
//        {
//                if (HI_SUCCESS != SAMPLE_COMM_VO_HdmiStart(stVoPubAttr.enIntfSync))
//                {
//                        SAMPLE_PRT("Start SAMPLE_COMM_VO_HdmiStart failed!\n");
//                        goto END_720P_4;
//                }
//        }
       
        for(i=0;i         {
                VoChn = i;
                VpssGrp = i;
               
                s32Ret = SAMPLE_COMM_VO_BindVpss(VoDev,VoChn,VpssGrp,i);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_720P_4;
                }
        }

    /******************************************
     step 6: HD0 switch mode
    ******************************************/
        VoDev = SAMPLE_VO_DEV_DHD0;
    u32WndNum = 4;
    enVoMode = VO_MODE_4MUX;
//    while(1)
    {
        enPreVoMode = enVoMode;
   
        printf("please choose preview mode, press 'q' to exit this sample.\n");
        printf("\t0) 1 preview\n");
        printf("\t1) 4 preview\n");
        printf("\tq) quit\n");

//        ch = getchar();
//        getchar();
                ch = '1';
        if ('0' == ch)
        {
            u32WndNum = 1;
            enVoMode = VO_MODE_1MUX;
        }
        else if ('1' == ch)
        {
            u32WndNum = 4;
            enVoMode = VO_MODE_4MUX;
        }

        else if ('q' == ch)
        {
//            break;
        }
        else
        {
            SAMPLE_PRT("preview mode invaild! please try again.\n");
//            continue;
        }
        SAMPLE_PRT("vo(%d) switch to %d mode\n", VoDev, u32WndNum);

        s32Ret= HI_MPI_VO_SetAttrBegin(VoDev);
        if (HI_SUCCESS != s32Ret)
        {
            SAMPLE_PRT("Start VO failed!\n");
            goto END_720P_4;
        }
        
//        s32Ret = SAMPLE_COMM_VO_StopChn(VoDev, enPreVoMode);
//        if (HI_SUCCESS != s32Ret)
//        {
//            SAMPLE_PRT("Start VO failed!\n");
//            goto END_720P_4;
//        }
               
                s32Ret = HI_MPI_VO_GetPubAttr(VoDev, &stVoPubAttr);
                if (s32Ret != HI_SUCCESS)
                {
                        printf("Get device attributes failed with error code %#x!\n", s32Ret);
                        stVoPubAttr.enIntfSync = VO_OUTPUT_1366x768_60;
                        stVoPubAttr.enIntfType = VO_INTF_VGA;
                        stVoPubAttr.u32BgColor = 0x0000ff00;
                        stVoPubAttr.bDoubleFrame = HI_FALSE;
                }
                else
                {
                        printf("Get device attributes: \n");
                        printf("stVoPubAttr.u32BgColor:%#x\n",stVoPubAttr.u32BgColor);
                        printf("stVoPubAttr.enIntfType:%#x\n",stVoPubAttr.enIntfType );
                        printf("stVoPubAttr.enIntfSync:%#x\n",stVoPubAttr.enIntfSync );
                        printf("stVoPubAttr.bDoubleFrame:%#x\n",stVoPubAttr.bDoubleFrame);                         
                }
        s32Ret = SAMPLE_COMM_VO_StartChn(VoDev, &stVoPubAttr, enVoMode);
        if (HI_SUCCESS != s32Ret)
        {
            SAMPLE_PRT("Start VO failed!\n");
            goto END_720P_4;
        }
        s32Ret= HI_MPI_VO_SetAttrEnd(VoDev);
        if (HI_SUCCESS != s32Ret)
        {
            SAMPLE_PRT("Start VO failed!\n");
            goto END_720P_4;
        }
    }

    /******************************************
     step 7: exit process
    ******************************************/
   
END_720P_4:        //stop vo hd0

    VoDev = SAMPLE_VO_DEV_DHD0;
    u32WndNum = 4;
    enVoMode = VO_MODE_4MUX;   
    if (stVoPubAttr.enIntfType & VO_INTF_HDMI)
    {
        SAMPLE_COMM_VO_HdmiStop();
    }
    SAMPLE_COMM_VO_StopChn(VoDev, enVoMode);
    for(i=0;i     {
        VoChn = i;
        VpssGrp = i;
        SAMPLE_COMM_VO_UnBindVpss(VoDev,VoChn,VpssGrp,VPSS_PRE0_CHN);
    }
    SAMPLE_COMM_VO_StopDevLayer(VoDev);
END_720P_3:
    SAMPLE_COMM_VI_UnBindVpss(enViMode);
END_720P_2:
    SAMPLE_COMM_VPSS_Stop(s32VpssGrpCnt, VPSS_MAX_CHN_NUM);
END_720P_1:
    SAMPLE_COMM_VI_Stop(enViMode);
END_720P_0:
    SAMPLE_COMM_SYS_Exit();
   
    return s32Ret;
}

做个好菜鸟

0个粉丝

13

问答

0

专栏

0

资料

做个好菜鸟 2017-08-15 14:53:24
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=57580&ptid=15157]jackeyt 发表于 2017-8-15 14:32[/url]
这个属性设置都没有问题的,跟你的一模一样的

给你看一下我使用vi的代码:
[/quote]

你的有关Vo的配置全都注释掉了,肯定cat /proc/umap/vo 是没有信息的,Vo 的通道,视频层都没有打开,肯定没有画面啊。
//        if(VIDEO_ENCODING_MODE_PAL == gs_enNorm)
//        {
//                stVoPubAttr.enIntfSync = VO_OUTPUT_1366x768_60;
//        }
//        else
//        {
//                stVoPubAttr.enIntfSync = VO_OUTPUT_1366x768_60;
//        }
//#ifdef HI_FPGA
//        stVoPubAttr.enIntfType = VO_INTF_HDMI|VO_INTF_VGA|VO_INTF_BT1120;
//#else
//        stVoPubAttr.enIntfType = VO_INTF_HDMI|VO_INTF_VGA;
//#endif
//        stVoPubAttr.u32BgColor = 0x000000ff;
//        stVoPubAttr.bDoubleFrame = HI_FALSE;
//      
//        s32Ret = SAMPLE_COMM_VO_StartDevLayer(VoDev, &stVoPubAttr, gs_u32ViFrmRate);
//        if (HI_SUCCESS != s32Ret)
//        {
//                SAMPLE_PRT("Start SAMPLE_COMM_VO_StartDevLayer failed!\n");
//                goto END_720P_3;
//        }
//      
//        s32Ret = SAMPLE_COMM_VO_StartChn(VoDev, &stVoPubAttr, enVoMode);
//        if (HI_SUCCESS != s32Ret)
//        {
//                SAMPLE_PRT("Start SAMPLE_COMM_VO_StartChn failed!\n");
//                goto END_720P_4;
//        }

//        /* if it's displayed on HDMI, we should start HDMI */
//        if (stVoPubAttr.enIntfType & VO_INTF_HDMI)
//        {
//                if (HI_SUCCESS != SAMPLE_COMM_VO_HdmiStart(stVoPubAttr.enIntfSync))
//                {
//                        SAMPLE_PRT("Start SAMPLE_COMM_VO_HdmiStart failed!\n");
//                        goto END_720P_4;
//                }
//        }
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区