e1909

e1909

0个粉丝

1

问答

0

专栏

0

资料

e1909  发布于  2015-07-13 11:05:48
采纳率 0%
1个问答
7312

HI3531运行sample_hifb报错

 
运行sample_hifb时,HI_MPI_VO_SetPubAttr函数报错,错误码0xa00f8010,查找文档:
0xA00F8010 HI_ERR_VO_SYS_NOTREADY 系统未初始化
但是SAMPLE_COMM_SYS_Init已经将系统初始化过了,求解决方法,谢谢!

代码如下:
int main(int argc, char *argv[])
{
        pthread_t phifb0;
#if HICHIP == HI3531_V100       
        pthread_t phifb1;
        PTHREAD_HIFB_SAMPLE_INFO stInfo1;
        VOU_GFX_BIND_LAYER_E enGfxBindLayer;
#endif
        pthread_t phifb2;
        PTHREAD_HIFB_SAMPLE_INFO stInfo0;
       
        PTHREAD_HIFB_SAMPLE_INFO stInfo2;
        VO_PUB_ATTR_S stPubAttr;
        VB_CONF_S stVbConf;
        HI_S32 s32Ret = HI_SUCCESS;
        HI_S32 i;
        SAMPLE_VI_MODE_E enViMode = SAMPLE_VI_MODE_1_D1;
        SAMPLE_VO_MODE_E stVoMode = VO_MODE_4MUX;
        HI_U32 u32ViChnNum = 4;
        HI_U32 u32ViDevNum;
       
        memset(&stVbConf, 0, sizeof(VB_CONF_S));
        stVbConf.u32MaxPoolCnt             = 16;
        stVbConf.astCommPool[0].u32BlkSize = 768*576*2;
        stVbConf.astCommPool[0].u32BlkCnt  = 16;
       
        stPubAttr.u32BgColor = 0xff00ff00;
#if HICHIP == HI3531_V100
        stPubAttr.enIntfType = VO_INTF_VGA | VO_INTF_HDMI;
#else
        stPubAttr.enIntfType = VO_INTF_BT1120;
#endif
        stPubAttr.enIntfSync = VO_OUTPUT_720P50;
        stPubAttr.bDoubleFrame = HI_FALSE;
       
        signal(SIGINT, SAMPLE_VIO_HandleSig);
        signal(SIGTERM, SAMPLE_VIO_HandleSig);
   
        if(HI_SUCCESS != SAMPLE_COMM_SYS_Init(&stVbConf))
        {
                printf("func:%s,line:%d\n", __FUNCTION__, __LINE__);
                return -1;       
        }
   
        /* start VO to preview*/
        if(HI_SUCCESS != SAMPLE_COMM_VO_StartDevLayer(VoDev, &stPubAttr,25))
        {       
                printf("%s: Start DevLayer failed!\n", __FUNCTION__);
                SAMPLE_COMM_SYS_Exit();
                return -1;
        }

。。。。。。。。。。。

    return 0;
}


HI_S32 SAMPLE_COMM_SYS_Init(VB_CONF_S *pstVbConf)
{
    MPP_SYS_CONF_S stSysConf = {0};
    HI_S32 s32Ret = HI_FAILURE;

    HI_MPI_SYS_Exit();
    HI_MPI_VB_Exit();

    if (NULL == pstVbConf)
    {
        SAMPLE_PRT("input parameter is null, it is invaild!\n");
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VB_SetConf(pstVbConf);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_VB_SetConf failed!\n");
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VB_Init();
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_VB_Init failed!\n");
        return HI_FAILURE;
    }

    stSysConf.u32AlignWidth = SAMPLE_SYS_ALIGN_WIDTH;
    s32Ret = HI_MPI_SYS_SetConf(&stSysConf);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_SYS_SetConf failed\n");
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_SYS_Init();
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_SYS_Init failed!\n");
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}


HI_S32 SAMPLE_COMM_VO_StartDevLayer(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr, HI_U32 u32SrcFrmRate)
{
    HI_S32 s32Ret = HI_SUCCESS;
    HI_U32 u32Width = 0;
    HI_U32 u32Height = 0;
    HI_U32 u32Frm = 0;
    VO_VIDEO_LAYER_ATTR_S stLayerAttr;

    if ( 0 == u32SrcFrmRate )
    {
        SAMPLE_PRT("vo u32SrcFrmRate invaild! %d!\n", u32SrcFrmRate);
        return HI_FAILURE;
    }
    printf("-----------------dev:%d\n", VoDev);
    s32Ret = HI_MPI_VO_SetPubAttr(VoDev, pstPubAttr);//-----------------此函数报错
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VO_Enable(VoDev);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_VO_GetWH(pstPubAttr->enIntfSync, &u32Width, &u32Height, &u32Frm);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }

    stLayerAttr.enPixFormat = SAMPLE_PIXEL_FORMAT;
    stLayerAttr.u32DispFrmRt = u32SrcFrmRate;

    stLayerAttr.stDispRect.s32X       = 0;
    stLayerAttr.stDispRect.s32Y       = 0;
    stLayerAttr.stDispRect.u32Width   = u32Width;
    stLayerAttr.stDispRect.u32Height  = u32Height;
    stLayerAttr.stImageSize.u32Width  = u32Width;
    stLayerAttr.stImageSize.u32Height = u32Height;
   
    s32Ret = HI_MPI_VO_SetVideoLayerAttr(VoDev, &stLayerAttr);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VO_EnableVideoLayer(VoDev);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }
   
    return s32Ret;
}

日志如下:
# cat /dev/logmpp
<3>[    vo] [Func]:VouCascadePosUnBindChnBatch [Line]:11215 [Info]:<3>[    vo] Vo cascade device ID 92 invalid!
<3>[    vi] [Func]:VIU_DRV_DisableChn [Line]:1465 [Info]:<3>[    vi] !! Disable ViChn:0 timeout 120ms!!!
我来回答
回答3个
时间排序
认可量排序

andy_mqy

1个粉丝

26

问答

0

专栏

0

资料

andy_mqy 2015-09-23 16:47:59
认可0
    HI_ERR_VO_SYS_NOTREADY是VO模块未初始化,看看是否没有调用下面这个函数

SAMPLE_COMM_VO_StartChn(VoDev, &stPubAttr, stVoMode))
       

horllion

0个粉丝

0

问答

0

专栏

0

资料

horllion 2016-12-23 14:25:30
认可0
请问楼主问题解决了吗?

qn1514905793

0个粉丝

1

问答

0

专栏

0

资料

qn1514905793 2018-02-19 16:46:19
认可0
楼主有解决吗?
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区