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