예제 #1
0
파일: sample_codec.c 프로젝트: AxelLin/Drv
HI_S32 SampleInitVoMScreen(HI_U32 ScreenCnt)
{
    HI_U32 i;
    VO_PUB_ATTR_S  VoPubAttr;

    VoPubAttr.stTvConfig.stComposeMode = g_u32TvMode;
    VoPubAttr.u32BgColor = 0xff;

    if (HI_SUCCESS != HI_MPI_VO_SetPubAttr(&VoPubAttr))
    {
        return HI_FAILURE;
    }

    if (HI_SUCCESS != SampleSetVochnMscreen(ScreenCnt))
    {
        return HI_FAILURE;
    }

    if (HI_SUCCESS != HI_MPI_VO_Enable())
    {
        return HI_FAILURE;
    }

    for (i = 0; i < ScreenCnt; i++)
    {
        CHECK(HI_MPI_VO_EnableChn(i), "HI_MPI_VO_EnableChn");
    }

    return HI_SUCCESS;
}
예제 #2
0
파일: test.c 프로젝트: dongwencai/NewDVR
HI_S32 sw_HIFB_VO_Start(void)
{
#define HIFB_HD_WIDTH  1280
#define HIFB_HD_HEIGHT 720

    HI_S32 s32Ret = HI_SUCCESS;

    VO_PUB_ATTR_S stPubAttr;
    VO_VIDEO_LAYER_ATTR_S stLayerAttr;
    VO_CHN_ATTR_S stChnAttr;

    HI_MPI_VO_Disable(VoDev);

    stPubAttr.enIntfType = VO_INTF_VGA;
    stPubAttr.enIntfSync = VO_OUTPUT_720P50;
    stPubAttr.u32BgColor = 0xff0000ff;

    stLayerAttr.stDispRect.s32X       = 0;
    stLayerAttr.stDispRect.s32Y       = 0;
    stLayerAttr.stDispRect.u32Width   = HIFB_HD_WIDTH;
    stLayerAttr.stDispRect.u32Height  = HIFB_HD_HEIGHT;
    stLayerAttr.stImageSize.u32Width  = HIFB_HD_WIDTH;
    stLayerAttr.stImageSize.u32Height = HIFB_HD_HEIGHT;
    stLayerAttr.u32DispFrmRt          = 50;
    stLayerAttr.enPixFormat           = PIXEL_FORMAT_YUV_SEMIPLANAR_422;

    stChnAttr.stRect.s32X               = 0;
    stChnAttr.stRect.s32Y               = 0;
    stChnAttr.stRect.u32Width           = HIFB_HD_WIDTH;
    stChnAttr.stRect.u32Height          = HIFB_HD_HEIGHT;
    stChnAttr.bDeflicker                = HI_FALSE;
    stChnAttr.u32Priority               = 1;

    if (HI_SUCCESS != HI_MPI_VO_SetPubAttr(VoDev, &stPubAttr))
    {
        printf("set VO pub attr failed !\n");
        return -1;
    }

    if (HI_SUCCESS != HI_MPI_VO_Enable(VoDev))
    {
        printf("enable vo device failed!\n");
        return -1;
    }

    s32Ret = HI_MPI_VO_SetVideoLayerAttr(VoDev, &stLayerAttr);
    if (s32Ret != HI_SUCCESS)
    {
        printf("set video layer attr failed with %#x!\n", s32Ret);
        return -1;
    }

    if (HI_SUCCESS != HI_MPI_VO_EnableVideoLayer(VoDev))
    {
        printf("enable video layer failed!\n");
        return -1;
    }

    return 0;
}
예제 #3
0
파일: test.c 프로젝트: dongwencai/NewDVR
HI_S32 sw_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 )
    {
        printf("vo u32SrcFrmRate invaild! %d!\n", u32SrcFrmRate);
        return HI_FAILURE;
    }
    s32Ret = HI_MPI_VO_SetPubAttr(VoDev, pstPubAttr);
    if (s32Ret != HI_SUCCESS)
    {
        printf("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }

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

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

    stLayerAttr.enPixFormat = sw_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)
    {
        printf("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VO_EnableVideoLayer(VoDev);
    if (s32Ret != HI_SUCCESS)
    {
        printf("failed with %#x!\n", s32Ret);
        return HI_FAILURE;
    }
    
    return s32Ret;
}
예제 #4
0
파일: v_producer.c 프로젝트: AxelLin/Drv
HI_S32 SampleEnableVo(VO_CHN VoChn, VO_PUB_ATTR_S *pVoPubAttr,
											VO_CHN_ATTR_S *pVoChnAttr)
{
	HI_S32 s32Ret;

	s32Ret = HI_MPI_VO_SetPubAttr(pVoPubAttr);
	if (HI_SUCCESS != s32Ret)
	{
		printf("set VO attribute failed 0x%x!\n",s32Ret);
		return HI_FAILURE;
	}

	s32Ret = HI_MPI_VO_SetChnAttr(VoChn, pVoChnAttr);
	if (HI_SUCCESS != s32Ret)
	{
		printf("set VO Chn attribute failed !\n");
		return HI_FAILURE;
	}

	s32Ret = HI_MPI_VO_Enable();
	if (HI_SUCCESS != s32Ret)
	{
		printf("set VO  enable failed 0x%x!\n",s32Ret);
		return HI_FAILURE;
	}

	s32Ret = HI_MPI_VO_EnableChn(VoChn);
	if (HI_SUCCESS != s32Ret)
	{
		printf("set VO Chn enable failed 0x%x!\n",s32Ret);
		return HI_FAILURE;
	}

	return HI_SUCCESS;
}
예제 #5
0
파일: pciv_test_slave.c 프로젝트: mglz/Drv
HI_S32 PCIV_Slave_SysInit()
{
    HI_S32         s32Ret, i;
    MPP_SYS_CONF_S stSysConf = {0};
    VB_CONF_S      stVbConf = {0};
    VI_PUB_ATTR_S  stviAttr;
    VO_PUB_ATTR_S  stvoAttr;

    HI_MPI_SYS_Exit();
    HI_MPI_VB_Exit();

    stVbConf.u32MaxPoolCnt = 128;
    stVbConf.astCommPool[0].u32BlkSize = 884736;/* 768*576*1.5*/
    stVbConf.astCommPool[0].u32BlkCnt  = 20;
    stVbConf.astCommPool[1].u32BlkSize = 221184;/* 384*288*1.5*/
    stVbConf.astCommPool[1].u32BlkCnt  = 60;
    s32Ret = HI_MPI_VB_SetConf(&stVbConf);
    HI_ASSERT((HI_SUCCESS == s32Ret));

    s32Ret = HI_MPI_VB_Init();
    HI_ASSERT((HI_SUCCESS == s32Ret));

    stSysConf.u32AlignWidth = 64;
    s32Ret = HI_MPI_SYS_SetConf(&stSysConf);
    HI_ASSERT((HI_SUCCESS == s32Ret));

    s32Ret = HI_MPI_SYS_Init();
    HI_ASSERT((HI_SUCCESS == s32Ret));

    /* Enable VI device*/
    memset(&stviAttr,0,sizeof(VI_PUB_ATTR_S));
    stviAttr.enInputMode = VI_MODE_BT656;
    stviAttr.enWorkMode  = VI_WORK_MODE_2D1;
    stviAttr.u32AdType   = AD_2815;
    stviAttr.enViNorm    = VIDEO_ENCODING_MODE_PAL;
    for (i = 0; i < VIU_MAX_DEV_NUM; i++)
    {
        s32Ret = HI_MPI_VI_SetPubAttr(i, &stviAttr);
        HI_ASSERT((HI_SUCCESS == s32Ret));

        s32Ret = HI_MPI_VI_Enable(i);
        HI_ASSERT((HI_SUCCESS == s32Ret));
    }

    /* Enable VO device*/
    stvoAttr.stTvConfig.stComposeMode = VIDEO_ENCODING_MODE_PAL;
    stvoAttr.u32BgColor = 0x000000;
    s32Ret = HI_MPI_VO_SetPubAttr(&stvoAttr);
    HI_ASSERT((HI_SUCCESS == s32Ret));

    s32Ret = HI_MPI_VO_Enable();
    HI_ASSERT((HI_SUCCESS == s32Ret));

    return HI_SUCCESS;
}
예제 #6
0
HI_S32 SAMPLE_COMM_VO_StartDev(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr)
{
    HI_S32 s32Ret = HI_SUCCESS;
    //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;
    }
    
    return s32Ret;
}
예제 #7
0
파일: v_producer.c 프로젝트: AxelLin/Drv
HI_S32 SampleEnableVo4Cif(HI_VOID)
{
	HI_U32 i;

	VO_PUB_ATTR_S  VoPubAttr;

	VoPubAttr.stTvConfig.stComposeMode = VIDEO_ENCODING_MODE_PAL;
	VoPubAttr.u32BgColor = 0xff;

	if (0!=HI_MPI_VO_SetPubAttr(&VoPubAttr))
	{
		printf("HI_MPI_VO_SetPubAttr faild!\n");
		return HI_FAILURE;
	}

	if(HI_SUCCESS!=SampleSetVochnMscreen(4))
	{
		printf("SampleSetVochnMscreen faild!\n");
		return HI_FAILURE;
    }

	if(HI_SUCCESS!=HI_MPI_VO_Enable())
	{
		printf("HI_MPI_VO_Enable faild!\n");
		return HI_FAILURE;
    }

	for(i=0;i<4;i++)
	{
		if(HI_SUCCESS!=HI_MPI_VO_EnableChn(i))
		{
			printf("HI_MPI_VO_EnableChn faild!\n");
	        return HI_FAILURE;
        }
	}

	return HI_SUCCESS;
}
예제 #8
0
파일: sample_vdec.c 프로젝트: AxelLin/Drv
/*
* init system
*/
static HI_S32 SampleVoInit(void)
{
    HI_S32 s32ret;
    VO_PUB_ATTR_S VoAttr;

    VoAttr.stTvConfig.stComposeMode = VIDEO_ENCODING_MODE_PAL;  /*p制显示模式*/
    VoAttr.u32BgColor = 0x0 /*10*/;

    s32ret = HI_MPI_VO_SetPubAttr(&VoAttr);
    if (HI_SUCCESS != s32ret)
    {
        Printf("HI_MPI_VO_SetPubAttr errno: 0x%x!\n", s32ret);
        return s32ret;
    }

    s32ret = HI_MPI_VO_Enable();
    if (HI_SUCCESS != s32ret)
    {
        Printf("HI_MPI_VO_Enable errno: 0x%x!\n", s32ret);
        return s32ret;
    }
    
    return HI_SUCCESS;
}
예제 #9
0
파일: vo_open.c 프로젝트: 119/myimpsrc2
			.enIntfType = VO_INTF_CVBS,
			.enIntfSync = VO_OUTPUT_PAL,
			.stSyncInfo = {0},
		}
		#else
		{
			.u32BgColor = 0x0000FF,
			.enIntfType = VO_INTF_CVBS,
			.enIntfSync = VO_OUTPUT_PAL,
			.stSyncInfo = {0},
		}
		#endif
	};
	
	HI_S32 s32Ret = 0;
	s32Ret = HI_MPI_VO_SetPubAttr(DevId,&s_stPubAttrDflt[DevId]);
	if(s32Ret != HI_SUCCESS)
	{
        printf("set vo attr on dev %d failed:%x!\n",DevId,s32Ret);
        return -1;
    }
    s32Ret = HI_MPI_VO_Enable(DevId);
	if(s32Ret != HI_SUCCESS)
    {
        printf("enable vo dev %d failed:%x!\n",DevId,s32Ret);
        return -1;
    }
	return HI_SUCCESS;
} 

HI_S32 DisableVoDev(HI_S32 DevId)