예제 #1
0
/*************************************************************************
* FUNCTION
*  custom_rtsp_create
*
* DESCRIPTION
*  Customize RTSP create function.
*  Return KAL_FALSE directly if RTSP should not be created.
*
* PARAMETERS
*
* RETURNS
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_bool custom_rtsp_create(comptask_handler_struct **handle)
{
#ifdef __RTSP__
   return rtsp_create(handle);
#else
   return KAL_FALSE;
#endif /*  __RTSP__ */
}
예제 #2
0
void Rtsp_Thead_quit_CB(void)
{
	rtsp_finish(rtsp_hl);

	msleep(100);
	
	rtsp_hl = rtsp_create(max_con, priority, Rtsp_Thead_quit_CB);
	if(NULL == rtsp_hl) {
		printf("create rtsp fial!! \n");
		return HI_FALSE;
	}

	rtsp_send_err = 0;
}
예제 #3
0
HI_S32 SAMPLE_VENC_TEST(HI_VOID)
{
	HI_S32 s32Ret = HI_SUCCESS;
	HI_MPP_SENSOR_ATTR_S stSensorAttr;
	HI_MPP_VCAP_ATTR_S stVcapAttr1;
	HI_MPP_DISP_ATTR_S vo_attr = {0};

	stSensorAttr.s32FrameRate = s_s32SampleVencFrameRate;
	stSensorAttr.stResolution.u32Width = s_s32SampleVencWidth;
	stSensorAttr.stResolution.u32Height = s_s32SampleVencHeigth;
	stSensorAttr.enWdrMode = HI_MPP_WDR_MODE_NONE;
	
	stVcapAttr1.enWdrMode = HI_MPP_WDR_MODE_NONE;
	stVcapAttr1.s32FrameRate = 30;
	stVcapAttr1.stResolution.u32Width = 1280;
	stVcapAttr1.stResolution.u32Height = 720;
	stVcapAttr1.enPixelFormat = HI_MPP_PIXEL_FORMAT_420;

	rtsp_hl = rtsp_create(max_con, priority, Rtsp_Thead_quit_CB);
	if(NULL == rtsp_hl) {
		printf("create rtsp fial!! \n");
		return HI_FALSE;
	}
	
	//add vcap sample here
	s32Ret = HI_MAPI_Media_Init();
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_Media_Init fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}
	
	s32Ret = HI_MAPI_Sensor_SetAttr(s_hSensorHdl, &stSensorAttr);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_Sensor_SetAttr fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}
	
	
	//start cap1
	s32Ret = HI_MAPI_VCap_SetAttr(s_hVCapHdl1, &stVcapAttr1);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VCap_SetAttr fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}
	
	s32Ret = HI_MAPI_VCap_Isp_Start(s_hVCapHdl1);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VCap_Isp_Start fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}

	s32Ret = HI_MAPI_VCap_Start(s_hVCapHdl1);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VCap_Start capture:%d Fail s32Ret:%d\n", s_hVCapHdl1, s32Ret);
		return HI_FAILURE;
	}


	HI_VPROC_ATTR_S stVprocAttr;
	stVprocAttr.enVProcType = VPROC_TYPE_VIDEO;
	stVprocAttr.u32MaxW = s_s32SampleVencWidth;
	stVprocAttr.u32MaxH = s_s32SampleVencHeigth;
	s32Ret = HI_MAPI_VProc_Init(s_hVProcHdl, &stVprocAttr);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VProc_Init fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}

	s32Ret = HI_MAPI_VProc_Start(s_hVProcHdl);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VProc_Start fail s32Ret:%x\n",s32Ret);
		return HI_FAILURE;
	}

	//vpss 0
	HI_VPORT_ATTR_S stVPortAttr;
	stVPortAttr.stResolution.u32Width = s_s32SampleVencWidth;//s_s32SampleVencWidth;
	stVPortAttr.stResolution.u32Height = s_s32SampleVencHeigth;//s_s32SampleVencHeigth;
	stVPortAttr.enPixFormat = HI_MPP_PIXEL_FORMAT_420;
	stVPortAttr.s32FrameRate = 30; // -1 no frame rate control
	s32Ret = HI_MAPI_VProc_Port_SetAttr(s_hVProcHdl, s_hVPortHdl, &stVPortAttr);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VProc_Port_SetAttr fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}
	
	s32Ret = HI_MAPI_VProc_Port_Start(s_hVProcHdl, s_hVPortHdl);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VProc_Port_Start fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}


	//start vpss and vi bind
	s32Ret = HI_MAPI_VProc_Bind_VCap(s_hVCapHdl1, s_hVProcHdl);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VProc_Bind_VCap fail s32Ret:%d\n",s32Ret);
		return HI_FAILURE;
	}

	//start venc
	HI_MPP_VENC_ATTR_S stVencAttr;
	stVencAttr.stVencPloadTypeAttr.enType = HI_MPP_PAYLOAD_TYPE_H264;
	stVencAttr.stVencPloadTypeAttr.stResolution.u32Width = s_s32SampleVencWidth;//s_s32SampleVencWidth;//s_s32SampleVencWidth;
	stVencAttr.stVencPloadTypeAttr.stResolution.u32Height = s_s32SampleVencHeigth;//s_s32SampleVencHeigth;//s_s32SampleVencHeigth;
	stVencAttr.stVencPloadTypeAttr.u32BufSize = s_s32SampleVencWidth * s_s32SampleVencHeigth;
	stVencAttr.stVencPloadTypeAttr.stAttrH264e.u32Profile = 0;
	stVencAttr.stVencPloadTypeAttr.stAttrH264e.stParamRef.u32Base = 1;
	stVencAttr.stVencPloadTypeAttr.stAttrH264e.stParamRef.u32Enhance = 0;
	stVencAttr.stVencPloadTypeAttr.stAttrH264e.stParamRef.bEnablePred = 0;
	stVencAttr.stRcAttr.enRcMode = HI_MPP_VENC_RC_MODE_CBR;
	stVencAttr.stRcAttr.stAttrCbr.u32BitRate = 2*2048;
	stVencAttr.stRcAttr.stAttrCbr.u32Gop = 10;
	s32Ret = HI_MAPI_VEnc_Init(s_hVencHdl, &stVencAttr);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VEnc_Creat fail s32Ret:%x\n",s32Ret);
		return HI_FAILURE;
	}

	s_stVencCB.pfnDataCB = VENC_DataProc;
	s_stVencCB.pPrivateData = HI_NULL;
	s32Ret = HI_MAPI_VEnc_RegisterCallback(s_hVencHdl, &s_stVencCB);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VEnc_RegisterCallback fail s32Ret:%x\n",s32Ret);
		return HI_FAILURE;
	}

	s32Ret = HI_MAPI_VEnc_Start(s_hVencHdl, HI_VENC_LIMITLESS_FRAME_COUNT);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VEnc_Start fail s32Ret:%x\n",s32Ret);
		return HI_FAILURE;
	}
	
	s32Ret = HI_MAPI_VEnc_Bind_VProc(s_hVProcHdl, 0, s_hVencHdl);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VEnc_Bind_VProc fail s32Ret:%x\n",s32Ret);
		return HI_FAILURE;
	}

	printf("please press enter key twice to quit\n");
	getchar();
	getchar();

	s32Ret= HI_MAPI_VCap_Stop(s_hVCapHdl1);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VCap_Stop capture:%d Fail s32Ret:%d\n", s_hVCapHdl1, s32Ret);
		return HI_FAILURE;
	}

	s32Ret= HI_MAPI_VCap_Isp_Stop(s_hVCapHdl1);
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_VCap_Isp_Stop capture:%d Fail s32Ret:%d\n", s_hVCapHdl1, s32Ret);
		return HI_FAILURE;
	}

	s32Ret= HI_MAPI_Media_DeInit();
	if (HI_SUCCESS != s32Ret)
	{
		printf("HI_MAPI_Media_DeInit capture:%d Fail s32Ret:%d\n", s_hVCapHdl1, s32Ret);
		return HI_FAILURE;
	}

	return HI_SUCCESS;
}