1.同步P+V IQ和修改卡机问题
This commit is contained in:
		
							parent
							
								
									2ecffd7895
								
							
						
					
					
						commit
						8ef3f67b2b
					
				|  | @ -98,6 +98,7 @@ static lfqueue_t write_queue = {0}; | |||
| #define MOVIE_THUMB_WIDTH	640 | ||||
| #define PRI_MOVIEFAST_CMDTSK      11 | ||||
| #define STKSIZE_MOVIEFAST_CMDTSK   8192 | ||||
| #define MOVIEFAST_REC_SEC         10 | ||||
| 
 | ||||
| //local variable
 | ||||
| static DCF_HANDLE g_dcf_hdl = 0; | ||||
|  | @ -285,20 +286,19 @@ static void MovieFast_ShutDown(void) | |||
| #if POWERON_BOOT_REPORT == ENABLE | ||||
| 
 | ||||
| 	DBG_DUMP("PhotoMovie mode = %u\n", mode); | ||||
| 	VOS_TICK tick; | ||||
| 
 | ||||
| 	PhotoFast_GetTick(g_vprc_trigger_frm_count, &tick); | ||||
| 
 | ||||
| 	DBG_DUMP("\n\n**********************************************************\n" | ||||
| 			" Trigger Speed(vcap frame count = %lu) : %lu us  alg_start_time = %lu g_alg_end_time = %lu,  perf tick = %lu us\n" | ||||
| 			"**********************************************************\n", | ||||
| 			g_vprc_trigger_frm_count, g_vprc_trigger_frm_time, g_alg_start_time, g_alg_end_time, tick); | ||||
| 
 | ||||
| 	vos_perf_list_dump(); | ||||
| 
 | ||||
| 	if(mode == DX_HUNTING_MODE_PHOTO_MOVIE){ | ||||
| 		MovieFast_PV_Info_Dump(); | ||||
| 	} | ||||
| 	else if(mode == DX_HUNTING_MODE_MOVIE2){ | ||||
| 
 | ||||
| 		DBG_DUMP("\n\n**********************************************************\n" | ||||
| 				" Trigger Speed(vcap frame count = %lu) : %lu us  alg_start_time = %lu us g_alg_end_time = %lu us\n" | ||||
| 				"**********************************************************\n", | ||||
| 				g_vprc_trigger_frm_count, g_vprc_trigger_frm_time, g_alg_start_time, g_alg_end_time); | ||||
| 	} | ||||
| 
 | ||||
| 	vos_perf_list_dump(); | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
|  | @ -308,7 +308,16 @@ static void MovieFast_ShutDown(void) | |||
|         #endif | ||||
|     	sf_file_thumb_cfg_sava(); | ||||
|         sf_para_print(); | ||||
|         DBG_DUMP("wait filesys close ...\n"); | ||||
|         #if (LOGFILE_FUNC==ENABLE) | ||||
|         UIMenuStoreInfo *puiPara = sf_ui_para_get(); | ||||
|         if(puiPara->DebugMode) | ||||
|         { | ||||
|             DBG_DUMP("LogFile_Close ...\n"); | ||||
|             LogFile_Suspend(); | ||||
|             LogFile_Close(); | ||||
|         } | ||||
|         #endif | ||||
|         //DBG_DUMP("wait filesys close ...\n");
 | ||||
|         FileSys_Close(FST_TIME_INFINITE); | ||||
|         #if SF_IQ_TEST != ENABLE | ||||
| 		if(sf_get_power_off_flag()){ | ||||
|  | @ -332,19 +341,18 @@ static void MovieFast_ShutDown(void) | |||
| 
 | ||||
| #if POWERON_BOOT_REPORT == ENABLE | ||||
| 
 | ||||
| 	VOS_TICK tick; | ||||
| 
 | ||||
| 	PhotoFast_GetTick(g_vprc_trigger_frm_count, &tick); | ||||
| 
 | ||||
| 	DBG_DUMP("\n\n**********************************************************\n" | ||||
| 			" Trigger Speed(vcap frame count = %lu) : %lu us  alg_start_time = %lu g_alg_end_time = %lu,  perf tick = %lu us\n" | ||||
| 			"**********************************************************\n", | ||||
| 			g_vprc_trigger_frm_count, g_vprc_trigger_frm_time, g_alg_start_time, g_alg_end_time, tick); | ||||
| 
 | ||||
| 	vos_perf_list_dump(); | ||||
| 	if(mode == DX_HUNTING_MODE_PHOTO_MOVIE){ | ||||
| 		MovieFast_PV_Info_Dump(); | ||||
| 	} | ||||
| 	else if(mode == DX_HUNTING_MODE_MOVIE2){ | ||||
| 
 | ||||
| 		DBG_DUMP("\n\n**********************************************************\n" | ||||
| 				" Trigger Speed(vcap frame count = %lu) : %lu us  alg_start_time = %lu us g_alg_end_time = %lu us\n" | ||||
| 				"**********************************************************\n", | ||||
| 				g_vprc_trigger_frm_count, g_vprc_trigger_frm_time, g_alg_start_time, g_alg_end_time); | ||||
| 	} | ||||
| 
 | ||||
| 	vos_perf_list_dump(); | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
|  | @ -772,11 +780,11 @@ static void MovieFast_OnRecStart(void) | |||
| 			//ImageApp_MovieMulti_RecStart(gMovie_Clone_Info[i].rec_id);
 | ||||
| 
 | ||||
| #if HUNTING_CAMERA_MCU == ENABLE | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Clone_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, puiPara->VideoLenth); | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Clone_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, puiPara->VideoLenth + 1); | ||||
| 			ImageApp_MovieMulti_TrigOnce(gMovie_Clone_Info[i].rec_id, puiPara->VideoLenth); | ||||
| #else | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Clone_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, 10); | ||||
| 			ImageApp_MovieMulti_TrigOnce(gMovie_Clone_Info[i].rec_id, 10); | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Clone_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, MOVIEFAST_REC_SEC + 1); | ||||
| 			ImageApp_MovieMulti_TrigOnce(gMovie_Clone_Info[i].rec_id, MOVIEFAST_REC_SEC); | ||||
| #endif | ||||
| 		} | ||||
| 
 | ||||
|  | @ -786,12 +794,13 @@ static void MovieFast_OnRecStart(void) | |||
| 			ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_BUFRESSEC, uifile_buffer_reserved_sec); | ||||
| 			//ImageApp_MovieMulti_RecStart(gMovie_Rec_Info[i].rec_id);
 | ||||
| 
 | ||||
| 			vos_perf_list_mark("trig once", __LINE__, 0); | ||||
| #if HUNTING_CAMERA_MCU == ENABLE | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, puiPara->VideoLenth); | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, puiPara->VideoLenth + 1); | ||||
| 			ImageApp_MovieMulti_TrigOnce(gMovie_Rec_Info[i].rec_id, puiPara->VideoLenth); | ||||
| #else | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, 10); | ||||
| 			ImageApp_MovieMulti_TrigOnce(gMovie_Rec_Info[i].rec_id, 10); | ||||
| 			ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, MOVIEFAST_REC_SEC + 1); | ||||
| 			ImageApp_MovieMulti_TrigOnce(gMovie_Rec_Info[i].rec_id, MOVIEFAST_REC_SEC); | ||||
| #endif | ||||
| 		} | ||||
| 
 | ||||
|  | @ -897,10 +906,11 @@ static void MovieFast_Manual_Raw_Task(void* arg) | |||
| 		} | ||||
| 
 | ||||
| 		ret = hd_videoproc_push_in_buf(vprc_path, &frame, NULL, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS); | ||||
| 		if(ret != HD_OK){ | ||||
| 		/* exposure time might quicker than ipp capability , ignore overrun err */ | ||||
| 		if(ret != HD_OK && ret != HD_ERR_OVERRUN){ | ||||
| 			DBG_ERR("hd_videoproc_push_in_buf failed!(%d)\n", ret); | ||||
| 			hd_videocap_release_out_buf(vcap_path, &frame); | ||||
| 			continue; | ||||
| 			break; | ||||
| 		} | ||||
| 
 | ||||
| 		ret = hd_videocap_release_out_buf(vcap_path, &frame); | ||||
|  | @ -912,14 +922,16 @@ static void MovieFast_Manual_Raw_Task(void* arg) | |||
| 
 | ||||
| 	while(1) | ||||
| 	{ | ||||
| 		ret = hd_videocap_pull_out_buf(vcap_path, &frame, 33); | ||||
| 		ret = hd_videocap_pull_out_buf(vcap_path, &frame, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS); | ||||
| 		if(ret != HD_OK){ | ||||
| 			DBG_ERR("hd_videocap_pull_out_buf failed!(%d)\n", ret); | ||||
| 			break; | ||||
| 		} | ||||
| 
 | ||||
| 		ret = hd_videoproc_push_in_buf(vprc_path, &frame, NULL, 33); | ||||
| 		if(ret != HD_OK){ | ||||
| 		ret = hd_videoproc_push_in_buf(vprc_path, &frame, NULL, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS); | ||||
| 
 | ||||
| 		/* exposure time might quicker than ipp capability , ignore overrun err */ | ||||
| 		if(ret != HD_OK && ret != HD_ERR_OVERRUN){ | ||||
| 			DBG_ERR("hd_videoproc_push_in_buf failed!(%d)\n", ret); | ||||
| 			hd_videocap_release_out_buf(vcap_path, &frame); | ||||
| 			break; | ||||
|  | @ -1336,7 +1348,7 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
| 
 | ||||
| 		//UI_SetData(FL_MOVIE_SIZE, MOVIE_SIZE_CLONE_1920x1080P30_1280x720P30);
 | ||||
| 		Set_NIGHTMODE(0, 0); | ||||
|         nvt_cmdsys_runcmd("ae set_speed 0 128 200 200 100"); | ||||
| 		nvt_cmdsys_runcmd("ae set_speed 0 128 700 700 100 "); | ||||
| 	} | ||||
| 	else{ | ||||
| 	    Set_NIGHTMODE(0, 1); | ||||
|  | @ -1362,11 +1374,12 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
| 	ImageApp_MovieMulti_Config(MOVIE_CONFIG_ALG_INFO, (UINT32)&gMovie_Alg_Info[0]); | ||||
| 
 | ||||
| 	if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_MOVIE2){ | ||||
| 		MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_VIDEO); | ||||
| 		MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_PHOTO); | ||||
| 	} | ||||
| 	else{ | ||||
| 		MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_PHOTO); | ||||
|     } | ||||
| 
 | ||||
| 	MovieMapping_GetStreamInfo(UI_GetData(FL_MOVIE_SIZE), (UINT32)&gMovie_Strm_Info); | ||||
| 	ImageApp_MovieMulti_Config(MOVIE_CONFIG_STREAM_INFO, (UINT32)&gMovie_Strm_Info); | ||||
| 	ImageApp_MovieMulti_Config(MOVIE_CONFIG_AUDIO_INFO, (UINT32)&gMovie_Audio_Info); | ||||
|  | @ -1458,7 +1471,7 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
| 	ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_AUD_ACAP_ANR, (UINT32)&audio_cfg_param); | ||||
| #endif | ||||
| 
 | ||||
| 	setet_preset_param(); | ||||
| //	setet_preset_param();
 | ||||
| 
 | ||||
| 	ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_FILE_USE_FILEDB, FALSE); | ||||
| 	ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_FILE_CB_CLOSED_FILE_INFO, TRUE); | ||||
|  | @ -1537,24 +1550,17 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
| 
 | ||||
|     MovieFast_InstallID(); | ||||
| 
 | ||||
|     HD_VIDEO_FRAME frame_capture = {0}; | ||||
| 
 | ||||
|     { | ||||
| 		HD_VIDEO_FRAME frame; | ||||
| 		HD_PATH_ID alg_path; | ||||
| 		HD_PATH_ID vcap_path, vprc_path; | ||||
| 		BOOL stop = FALSE; | ||||
| 		UINT32 ae_cnt = 0; | ||||
| 		UINT32 stop_cnt = 0; | ||||
| 		BOOL ae_locked = FALSE; | ||||
| 		HD_RESULT ret; | ||||
| 
 | ||||
| 		if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){ | ||||
| 			ae_cnt = 6; | ||||
| 			stop_cnt = 12; | ||||
| 		} | ||||
| 		else{ | ||||
| 			ae_cnt = 9999; | ||||
| 			stop_cnt = 12; | ||||
| 		} | ||||
| 		UINT32 vcap_frm_cnt = 0; /* start from 1 */ | ||||
| 		UINT32 vprc_frm_cnt = 0; | ||||
| 		UINT32 vprc_frm_cnt_ae_preset = 9999; | ||||
| 		BOOL ae_preset_flag = FALSE; | ||||
| 
 | ||||
| 		alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3); | ||||
| 		vcap_path = ImageApp_MovieMulti_GetVcapPort(_CFG_REC_ID_1); | ||||
|  | @ -1563,11 +1569,26 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
| 		vos_perf_mark(&g_alg_start_time); | ||||
| 
 | ||||
| 		do { | ||||
| 			if(vcap_frm_cnt > 2 && ae_preset_flag == FALSE){ | ||||
| 				extern AET_STATUS_INFO ae_status; | ||||
| 				memset(&ae_status, 0, sizeof(AET_STATUS_INFO)); | ||||
| 				vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status); | ||||
| 				if ((ae_status.status_info.state_adj == 0) || (vcap_frm_cnt >= PHOTOFAST_AE_PRESET_FRAME_CNT)){ | ||||
| 					ae_preset_flag = TRUE; | ||||
| 					vprc_frm_cnt_ae_preset = vprc_frm_cnt; | ||||
| 					DBG_DUMP("ae preset vprc frame cnt = %lu\n", vprc_frm_cnt_ae_preset); | ||||
| 					Set_AEMODE(1); | ||||
| 					setet_preset_param(); | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			ret = hd_videocap_pull_out_buf(vcap_path, &frame, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS); | ||||
| 			if(ret != HD_OK){ | ||||
| 				DBG_ERR("hd_videocap_pull_out_buf failed!(%d)\n", ret); | ||||
| 			} | ||||
| 
 | ||||
| 			vcap_frm_cnt = frame.count; | ||||
| 
 | ||||
| 			ret = hd_videoproc_push_in_buf(vprc_path, &frame, NULL, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS); | ||||
| 			if(ret != HD_OK){ | ||||
| 				DBG_ERR("hd_videoproc_push_in_buf failed!(%d)\n", ret); | ||||
|  | @ -1582,39 +1603,31 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
| 			if(ret != HD_OK){ | ||||
| 				DBG_ERR("hd_videoproc_pull_out_buf failed!(%d)\n", ret); | ||||
| 			} | ||||
| 			++vprc_frm_cnt; | ||||
| 
 | ||||
| 			DBG_DUMP("count = %llu, timestamp = %llu\n", frame.count, frame.timestamp); | ||||
| 
 | ||||
| 			if(frame.count >= ae_cnt && ae_locked == FALSE){ | ||||
| 			if( vcap_frm_cnt >= PHOTOFAST_START_CAP_FRAME_CNT || | ||||
| 				(ae_preset_flag == TRUE && vprc_frm_cnt >= (vprc_frm_cnt_ae_preset + 3))){ | ||||
| 
 | ||||
| 				DBG_DUMP("timestamp = %llu count = %llu\n", frame.timestamp, frame.count); | ||||
| 
 | ||||
| 				if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){ | ||||
| 
 | ||||
| #if 0 | ||||
| 					 HD_PATH_ID vprc_in_id = ImageApp_MovieMulti_GetVprc3DNRPort(_CFG_REC_ID_1); | ||||
| 					 HD_VIDEOPROC_IN vprc_in = {0}; | ||||
| 
 | ||||
| 					 hd_videoproc_get(vprc_in_id, HD_VIDEOPROC_PARAM_IN, &vprc_in); | ||||
| 					 vprc_in.frc = HD_VIDEO_FRC_RATIO(1, 1); | ||||
| 					 hd_videoproc_set(vprc_in_id, HD_VIDEOPROC_PARAM_IN, &vprc_in); | ||||
| 					 hd_videoproc_start(vprc_in_id); | ||||
| #endif | ||||
| 				if(vcap_frm_cnt >= PHOTOFAST_START_CAP_FRAME_CNT){ | ||||
| 					DBG_DUMP("triggered by PHOTOFAST_START_CAP_FRAME_CNT\n"); | ||||
| 				} | ||||
| 				else if(ae_preset_flag == TRUE && vprc_frm_cnt >= (vprc_frm_cnt_ae_preset + 3)){ | ||||
| 					DBG_DUMP("triggered by AE preset\n"); | ||||
| 				} | ||||
| 
 | ||||
| 				Set_AEMODE(1); | ||||
| 				setet_preset_param(); | ||||
| 
 | ||||
| 				ae_locked = TRUE; | ||||
| 				memcpy((void*)&frame_capture, (void*)&frame, sizeof(HD_VIDEO_FRAME)); | ||||
| 
 | ||||
| 				break; | ||||
| 			} | ||||
| 			else{ | ||||
| 				hd_videoproc_release_out_buf(alg_path, &frame); | ||||
| 			} | ||||
| 
 | ||||
| 			if(frame.count >= stop_cnt){ | ||||
| 				stop = TRUE; | ||||
| 			} | ||||
| 
 | ||||
| 			hd_videoproc_release_out_buf(alg_path, &frame); | ||||
| 
 | ||||
| 		} while(stop == FALSE); | ||||
| 		} while(1); | ||||
| 
 | ||||
| 		vos_perf_mark(&g_alg_end_time); | ||||
|     } | ||||
|  | @ -1654,9 +1667,6 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
|     HD_PATH_ID alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3); | ||||
|     UINT32 max_cnt , duration; | ||||
| 
 | ||||
| 
 | ||||
|     CHKPNT; | ||||
| 
 | ||||
|     MovieFast_fdt_get_info(&fdt_info); | ||||
| 
 | ||||
|     if(MovieFast_fdt_get_tmp_buf(&fdt_info, &tmp_buf, &tmp_buf_size) != E_OK){ | ||||
|  | @ -1669,28 +1679,32 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) | |||
|     	goto EXIT; | ||||
|     } | ||||
| 
 | ||||
|     CHKPNT; | ||||
| 
 | ||||
|     yuv_size = VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420); | ||||
| 
 | ||||
| 
 | ||||
|     CHKPNT; | ||||
| 
 | ||||
|     do { | ||||
|     	HD_VIDEO_FRAME frame = {0}; | ||||
| 
 | ||||
| 		if((tmp_buf + yuv_size) > (tmp_buf + tmp_buf_size)){ | ||||
| 			DBG_ERR("tmp buffer overflow!!\n"); | ||||
| 			goto EXIT; | ||||
| 		} | ||||
| 
 | ||||
|     	hd_videoproc_pull_out_buf(alg_path, &frame, -1); | ||||
|     	if(cnt == 0){ | ||||
|     		g_vprc_trigger_frm_time = frame_capture.timestamp; | ||||
|     		g_vprc_trigger_frm_count = frame_capture.count; | ||||
|     		DBG_DUMP("Trigger speed = %lu\n", g_vprc_trigger_frm_time / 1000); | ||||
|     	} | ||||
|     	else{ | ||||
|     		hd_videoproc_pull_out_buf(alg_path, &frame_capture, -1); | ||||
|     	} | ||||
| 
 | ||||
|     	DBG_DUMP("tmp_buf = %lx , frame.phy_addr[0] = %lx , copy size = %lx\n", | ||||
|     			tmp_buf, frame_capture.phy_addr[0], yuv_size); | ||||
| 
 | ||||
|     	memcpy((void*)(tmp_buf), (void*)frame_capture.phy_addr[0], yuv_size); | ||||
| 
 | ||||
|     	DBG_DUMP("tmp_buf = %lx , frame.phy_addr[0] = %lx , copy size = %lx\n", tmp_buf, frame.phy_addr[0], yuv_size); | ||||
|     	memcpy((void*)(tmp_buf), (void*)frame.phy_addr[0], yuv_size); | ||||
|     	tmp_buf += yuv_size; | ||||
| 
 | ||||
|     	hd_videoproc_release_out_buf(alg_path, &frame); | ||||
|     	hd_videoproc_release_out_buf(alg_path, &frame_capture); | ||||
| 
 | ||||
|     	if(++cnt >= max_cnt) | ||||
|     		break; | ||||
| 
 | ||||
|  | @ -1821,7 +1835,7 @@ static void MovieFast_Close(void) | |||
| 				{ | ||||
| 					if(PhotoFast_Sliceencode2_Enq_Frame(&frame) == E_OK){ | ||||
| 						break; | ||||
|                     } | ||||
| 					} | ||||
| 					else{ | ||||
| 						vos_util_delay_ms(1); | ||||
| 					} | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user
	 payton
						payton