HI_S32 SAMPLE_COMM_VPSS_DisableChn(VPSS_GRP VpssGrp, VPSS_CHN VpssChn)
{
    HI_S32 s32Ret;

    if (VpssGrp < 0 || VpssGrp > VPSS_MAX_GRP_NUM)
    {
        printf("VpssGrp%d is out of rang[0,%d]. \n", VpssGrp, VPSS_MAX_GRP_NUM);
        return HI_FAILURE;
    }

    if (VpssChn < 0 || VpssChn > VPSS_MAX_CHN_NUM)
    {
        printf("VpssChn%d is out of rang[0,%d]. \n", VpssChn, VPSS_MAX_CHN_NUM);
        return HI_FAILURE;
    }
    
    s32Ret = HI_MPI_VPSS_DisableChn(VpssGrp, VpssChn);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("%s failed with %#x\n", __FUNCTION__, s32Ret);
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}
bool HimppVpssChan::disableObject()
{
    int grp = _vpss_group->getGroupId();
    int chn = _chnid;
    HI_S32 s32Ret;

    if ((s32Ret = HI_MPI_VPSS_DisableChn(grp, chn)) != HI_SUCCESS) {
        HIMPP_PRINT("HI_MPI_VPSS_DisableChn %d-%d failed [%#x]\n",
                    grp, chn, s32Ret);
        return false;
    }

    return true;
}
/*****************************************************************************
* function : disable vi dev
*****************************************************************************/
HI_S32 SAMPLE_COMM_VPSS_Stop(HI_S32 s32GrpCnt, HI_S32 s32ChnCnt)
{
    HI_S32 i, j;
    HI_S32 s32Ret = HI_SUCCESS;
    VPSS_GRP VpssGrp;
    VPSS_CHN VpssChn;

    for(i=0; i<s32GrpCnt; i++)
    {
        VpssGrp = i;
        s32Ret = HI_MPI_VPSS_StopGrp(VpssGrp);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_PRT("failed with %#x!\n", s32Ret);
            return HI_FAILURE;
        }
        for(j=0; j<s32ChnCnt; j++)
        {
            VpssChn = j;
            s32Ret = HI_MPI_VPSS_DisableChn(VpssGrp, VpssChn);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("failed with %#x!\n", s32Ret);
                return HI_FAILURE;
            }
        }
    
        s32Ret = HI_MPI_VPSS_DestroyGrp(VpssGrp);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_PRT("failed with %#x!\n", s32Ret);
            return HI_FAILURE;
        }
    }

    return HI_SUCCESS;
}
Example #4
0
static HI_S32 s32StartVPSS(const IPC_VEDIO_S* pstIpcVedio)
{
	HI_S32 s32Ret,i;
	
	static VPSS_GRP_ATTR_S stVpssGrpAttr =
	{
    	.u32MaxW = 1920,  /*MAX width of the group*/                    
    	.u32MaxH = 1080,  /*MAX height of the group*/
    	.enPixFmt = PIXEL_FORMAT_YUV_SEMIPLANAR_420, /*Pixel format*/
    	.bIeEn = HI_FALSE,    				/*Image enhance enable*/
    	.bDciEn =  HI_FALSE, 				/*Dynamic contrast Improve enable*/
    	.bNrEn =   HI_TRUE,					/*Noise reduce enable*/
    	.bHistEn =  HI_FALSE, 				/*Hist enable*/
		.enDieMode =  VPSS_DIE_MODE_NODIE	/*De-interlace enable*/
	};
	
	static VPSS_CHN_ATTR_S stVpssChnAttr =
	{
		.bSpEn = HI_FALSE,            	/*Sharpen enable*/         
	    .bBorderEn = HI_FALSE,          /*Frame enable*/
	    .bMirror = HI_FALSE,            /*mirror enable*/
	    .bFlip = HI_FALSE,              /*flip   enable*/
	    .s32SrcFrameRate = 25,    		/* source frame rate */
	    .s32DstFrameRate = -1,    		/* dest  frame rate */   
	    .stBorder =
	    {
			0,0,0,0,0
		}
	};
	
	static VPSS_CHN_MODE_S stVpssChnMode = 
	{
		.enChnMode = VPSS_CHN_MODE_USER,   /*Vpss channel's work mode*/
	    .u32Width = 1920,              		/*Width of target image*/
	    .u32Height = 1080,             		/*Height of target image*/
	    .bDouble =  HI_FALSE,            	/*Field-frame transfer£¬only valid for VPSS_PRE0_CHN*/
	    .enPixelFormat =PIXEL_FORMAT_YUV_SEMIPLANAR_420,/*Pixel format of target image*/
	    .enCompressMode = COMPRESS_MODE_SEG   /*Compression mode of the output*/
	};
	
    static VPSS_ATTR_S stVpssAttr = {
		.VpssGrp = 0,
  		.VpssChnNum = 1,
  		.pstVpssGrpAttr = &stVpssGrpAttr,
  		.pstVpssChnAttr = &stVpssChnAttr,
  		.pstVpssChnMode = &stVpssChnMode
	};

	g_pstVpssAttr = &stVpssAttr;
	g_pstVpssAttr->VpssChnNum = pstIpcVedio->u32StreamNum;
	/*sync grp attr*/
	g_pstVpssAttr->pstVpssGrpAttr->u32MaxW = pstIpcVedio->astStreamFmt[0].stSize.u32Width;
	g_pstVpssAttr->pstVpssGrpAttr->u32MaxH = pstIpcVedio->astStreamFmt[0].stSize.u32Height;
	g_pstVpssAttr->pstVpssGrpAttr->enPixFmt = pstIpcVedio->e_pixFmt;

	s32Ret = s32VpssStartGrp(g_pstVpssAttr->VpssGrp, g_pstVpssAttr->pstVpssGrpAttr);
	if (HI_SUCCESS != s32Ret)
    {
        printf("Start Vpss Grp failed!\n");
		return s32Ret;
    }
	
	for(i = 0; i < g_pstVpssAttr->VpssChnNum; i++)
	{
		/*sync chn attr*/
		g_pstVpssAttr->pstVpssChnMode->u32Width = pstIpcVedio->astStreamFmt[i].stSize.u32Width;
		g_pstVpssAttr->pstVpssChnMode->u32Height = pstIpcVedio->astStreamFmt[i].stSize.u32Height;
		g_pstVpssAttr->pstVpssChnMode->enPixelFormat = pstIpcVedio->e_pixFmt;

		g_pstVpssAttr->pstVpssChnAttr->s32DstFrameRate = pstIpcVedio->astStreamFmt[i].f32FrameRate;
		s32Ret = s32VpssStartChn(g_pstVpssAttr->VpssGrp,i,g_pstVpssAttr->pstVpssChnAttr,g_pstVpssAttr->pstVpssChnMode,HI_NULL);
		if (HI_SUCCESS != s32Ret)
    	{
	        printf("Start Vpss Chn failed!\n");
			return s32Ret;
    	}
	}
	return HI_SUCCESS;
}

static HI_S32 s32VpssStopGrp(VPSS_GRP VpssGrp)
{
    HI_S32 s32Ret;

    if (VpssGrp < 0 || VpssGrp > VPSS_MAX_GRP_NUM)
    {
        printf("VpssGrp%d is out of rang[0,%d]. \n", VpssGrp, VPSS_MAX_GRP_NUM);
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VPSS_StopGrp(VpssGrp);
    if (s32Ret != HI_SUCCESS)
    {
        printf("%s failed with %#x\n", __FUNCTION__, s32Ret);
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VPSS_DestroyGrp(VpssGrp);
    if (s32Ret != HI_SUCCESS)
    {
        printf("%s failed with %#x\n", __FUNCTION__, s32Ret);
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}

static HI_S32 s32VpssStopChn(VPSS_GRP VpssGrp, VPSS_CHN VpssChn)
{
    HI_S32 s32Ret;

    if (VpssGrp < 0 || VpssGrp > VPSS_MAX_GRP_NUM)
    {
        printf("VpssGrp%d is out of rang[0,%d]. \n", VpssGrp, VPSS_MAX_GRP_NUM);
        return HI_FAILURE;
    }

    if (VpssChn < 0 || VpssChn > VPSS_MAX_CHN_NUM)
    {
        printf("VpssChn%d is out of rang[0,%d]. \n", VpssChn, VPSS_MAX_CHN_NUM);
        return HI_FAILURE;
    }
    
    s32Ret = HI_MPI_VPSS_DisableChn(VpssGrp, VpssChn);
    if (s32Ret != HI_SUCCESS)
    {
        printf("%s failed with %#x\n", __FUNCTION__, s32Ret);
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}
HI_S32 VPSS_init(const IPC_VEDIO_S* pstIpcVedio)
{
	HI_S32 s32Ret;
	if (HI_NULL == pstIpcVedio)
    {
        printf("null ptr,line%d. \n", __LINE__);
        return HI_FAILURE;
    }
	s32Ret = s32StartVPSS(pstIpcVedio);
	return s32Ret;
}
HI_S32 VPSS_exit(void)
{
	HI_S32 i;
	for(i = 0; i < g_pstVpssAttr->VpssChnNum; i++)
	{
		s32VpssStopChn(g_pstVpssAttr->VpssGrp,i);
	}
	s32VpssStopGrp(g_pstVpssAttr->VpssGrp);
	return HI_SUCCESS;
}