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