Merge branch 'Branch_S550_Fast' of gitlab.sifar.tech:linux-em-group/s530-ntk into branch_s550_fast
This commit is contained in:
		
						commit
						a4267d55f2
					
				| 
						 | 
				
			
			@ -922,7 +922,7 @@
 | 
			
		|||
#define HUNTING_MCU_UART				ENABLE
 | 
			
		||||
#define HUNTING_IR_LED_940				ENABLE
 | 
			
		||||
#define SF_EXIF_MN_BUF_SIZE		256
 | 
			
		||||
#define SF_BASE_VERSION				    "7MR5RCwDB01"
 | 
			
		||||
#define SF_BASE_VERSION				    "7MR5RCwDB04"
 | 
			
		||||
#define HW_S530 DISABLE
 | 
			
		||||
#define DCF_DIR_NAME					"MEDIA" /* 100MEDIA */
 | 
			
		||||
#define DCF_FILE_NAME					"SYGW"  /* SYFW0001.JPG */
 | 
			
		||||
| 
						 | 
				
			
			@ -974,7 +974,7 @@
 | 
			
		|||
#ifndef ANR_FUNC
 | 
			
		||||
#define ANR_FUNC						ENABLE
 | 
			
		||||
#endif
 | 
			
		||||
#define SF_NO_SD_SEND				DISABLE
 | 
			
		||||
#define SF_NO_SD_SEND				ENABLE
 | 
			
		||||
//////////////////////sf end///////////////////////////////
 | 
			
		||||
 | 
			
		||||
/*******************************************************************************************
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1455,7 +1455,7 @@ static void MovieExe_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32
 | 
			
		|||
#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
        DBG_IND(" ===== MOVIE_USER_CB_EVENT_CLOSE_FILE_COMPLETED ===== id:%d \r\n", id);
 | 
			
		||||
		UIMenuStoreInfo *puiPara = sf_ui_para_get();
 | 
			
		||||
        if((SF_CAM_MODE_PHOTO_VIDEO == puiPara->CamMode) && (id == _CFG_REC_ID_1))
 | 
			
		||||
        if(((SF_CAM_MODE_VIDEO2 == puiPara->CamMode) || (SF_CAM_MODE_PHOTO_VIDEO == puiPara->CamMode)) && (id == _CFG_REC_ID_1))
 | 
			
		||||
        {
 | 
			
		||||
			if(SUCCESS == sf_share_mem_file_down(0, 0)){
 | 
			
		||||
					sf_set_send_statu(TRUE);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -104,7 +104,7 @@ int General_MenuCallback(UINT32 uiMessage, UINT32 uiParam)
 | 
			
		|||
    {
 | 
			
		||||
    case IDM_CAMERA_MODE:
 | 
			
		||||
    {
 | 
			
		||||
      puiPara->CamMode = uwOption == 0 ? 0 : 2;
 | 
			
		||||
      puiPara->CamMode = uwOption == 0 ? 0 : 3;
 | 
			
		||||
      printf("\033[33m[General_MenuCallback]set CamMode:%d\033[0m\n", uwOption);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ static void load_info_from_sf(void)
 | 
			
		|||
    UIMenuStoreInfo *puiPara = sf_ui_para_get();
 | 
			
		||||
	SysSetFlag(IDF_PASSWORD, puiPara->PwdSwitch);
 | 
			
		||||
	SysSetFlag(IDF_CAMERA_NAME, puiPara->CamNameSwitch == SF_CAMID_OFF ? OPTION_0 : OPTION_1);
 | 
			
		||||
	SysSetFlag(IDF_CAMERA_MODE, puiPara->CamMode == 2 ? OPTION_1 : OPTION_0);
 | 
			
		||||
	SysSetFlag(IDF_CAMERA_MODE, puiPara->CamMode == 3 ? OPTION_1 : OPTION_0);
 | 
			
		||||
	if (PHOTO_SIZE_40M == puiPara->ImgSize)
 | 
			
		||||
	{
 | 
			
		||||
	    SysSetFlag(IDF_IMAGE_SIZE, 0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -567,7 +567,7 @@ static void update_camera_mode(void)
 | 
			
		|||
{
 | 
			
		||||
	UIMenuStoreInfo *puiPara = sf_ui_para_get();
 | 
			
		||||
	#define CAMERA_MODE_PHOTO 0
 | 
			
		||||
	#define CAMERA_MODE_PHOTO_AND_VIDEO 2
 | 
			
		||||
	#define CAMERA_MODE_PHOTO_AND_VIDEO 3
 | 
			
		||||
	if (CAMERA_MODE_PHOTO == puiPara->CamMode)
 | 
			
		||||
	{
 | 
			
		||||
	    lv_plugin_img_set_src(image_mode_photo_scr_uiflowphoto, LV_PLUGIN_IMG_ID_SF_CAMERA);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ INT32  gUITimeHour = 0;
 | 
			
		|||
INT32  gUITimeMinute = 0;
 | 
			
		||||
INT32  gUITimeSecond = 0;
 | 
			
		||||
 | 
			
		||||
INT32  gUIDateSetFmt = DATEFMT_YMD;
 | 
			
		||||
INT32  gUIDateSetFmt = DATEFMT_MDY;
 | 
			
		||||
INT32  gUITimeSetFmt = TIMEFMT_24HR;
 | 
			
		||||
 | 
			
		||||
void Validate_Date(INT32 *pYear, INT32 *pMonth, INT32 *pDay,
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ void DateTime_Init(void)
 | 
			
		|||
	gUIDateMonth = DEF_MONTH;
 | 
			
		||||
	gUIDateDay = DEF_DAY;
 | 
			
		||||
	gUITimeHour = gUITimeMinute = gUITimeSecond = 0;
 | 
			
		||||
	gUIDateSetFmt = DATEFMT_YMD;
 | 
			
		||||
	gUIDateSetFmt = DATEFMT_MDY;
 | 
			
		||||
	gUITimeSetFmt = TIMEFMT_24HR;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -142,7 +142,7 @@
 | 
			
		|||
#define DEFAULT_HDMI_MODE               VIDEOOUT2_AUTO
 | 
			
		||||
#define DEFAULT_DUALDISP                DUALDISP_OFF
 | 
			
		||||
#define DEFAULT_SENSOR_ROTATE           SEN_ROTATE_OFF
 | 
			
		||||
#define DEFAULT_DATE_FORMAT             DATE_FORMAT_YMD
 | 
			
		||||
#define DEFAULT_DATE_FORMAT             DATE_FORMAT_MDY
 | 
			
		||||
#define DEFAULT_OPENING_LOGO            OPENING_LOGO_ON
 | 
			
		||||
#define DEFAULT_LCD_DISPLAY             DISPOUT_NORMAL
 | 
			
		||||
#define DEFAULT_LCD_BRIGHTNESS          LCDBRT_LVL_05
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2368,6 +2368,7 @@ void sf_power_on_para_check_init(void)
 | 
			
		|||
	if(puiPara->DateStyle != SysGetFlag(FL_DateFormatIndex))
 | 
			
		||||
	{
 | 
			
		||||
		SysSetFlag(FL_DateFormatIndex, puiPara->DateStyle);
 | 
			
		||||
        SysSetFlag(FL_DATE_FORMAT, puiPara->DateStyle);
 | 
			
		||||
	}
 | 
			
		||||
	if(puiPara->Language != SysGetFlag(FL_LANGUAGE))
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -745,9 +745,10 @@ signed int sf_battery_value_fast_get(void)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
 | 
			
		||||
	fTemper = sf_celsius_change_to_fahrenheit(cTemper);
 | 
			
		||||
 | 
			
		||||
	// cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
 | 
			
		||||
	// fTemper = sf_celsius_change_to_fahrenheit(cTemper);
 | 
			
		||||
    sf_battery_level_update();
 | 
			
		||||
    sf_temper_update();
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -329,6 +329,7 @@ void sf_app_power_on_para_check_init(void)
 | 
			
		|||
	if(puiPara->DateStyle != sf_sys_get_flag(FL_DateFormatIndex))
 | 
			
		||||
	{
 | 
			
		||||
		sf_sys_set_flag(FL_DateFormatIndex, puiPara->DateStyle);
 | 
			
		||||
        sf_sys_set_flag(FL_DATE_FORMAT, puiPara->DateStyle);
 | 
			
		||||
	}
 | 
			
		||||
	if(puiPara->Language != sf_sys_get_flag(FL_LANGUAGE))
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -177,7 +177,7 @@ static void sf_blue_command_get_camera_para(MSG_DEV_BLE_Param_Get_Rsp_T *CamPara
 | 
			
		|||
 | 
			
		||||
    CamPara->zoom = puiPara->Zoom + 1;
 | 
			
		||||
 | 
			
		||||
    CamPara->cameraMode = (puiPara->CamMode==2)?1:0;
 | 
			
		||||
    CamPara->cameraMode = (puiPara->CamMode==3)?1:0;
 | 
			
		||||
 | 
			
		||||
	printf("Camera Mode:%d\n", CamPara->cameraMode);
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -463,7 +463,7 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
 | 
			
		|||
                            {
 | 
			
		||||
                                saveMode = 2;
 | 
			
		||||
                            }
 | 
			
		||||
                            else if (saveMode == 2)
 | 
			
		||||
                            else if ((saveMode == 3) || (saveMode == 2))
 | 
			
		||||
                            {
 | 
			
		||||
                                saveMode = 1;
 | 
			
		||||
                            }
 | 
			
		||||
| 
						 | 
				
			
			@ -480,8 +480,8 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
 | 
			
		|||
                                }
 | 
			
		||||
                                else if (tmpMode == 1)
 | 
			
		||||
                                {
 | 
			
		||||
                                    puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
 | 
			
		||||
                                    //puiPara->CamMode = SF_CAM_MODE_VIDEO2;
 | 
			
		||||
                                    //puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
 | 
			
		||||
                                    puiPara->CamMode = SF_CAM_MODE_VIDEO2;
 | 
			
		||||
                                }
 | 
			
		||||
                                else if (tmpMode == 2)
 | 
			
		||||
                                {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -669,6 +669,34 @@ static void trave_file(char* path)
 | 
			
		|||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
int sf_is_directory_empty(const char *path)
 | 
			
		||||
{
 | 
			
		||||
    DIR *dir = opendir(path);
 | 
			
		||||
 | 
			
		||||
    if (dir == NULL) {
 | 
			
		||||
        MLOGE("Error opening directory");
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    struct dirent *entry;
 | 
			
		||||
    int count = 0;
 | 
			
		||||
 | 
			
		||||
    while ((entry = readdir(dir)) != NULL) {
 | 
			
		||||
 | 
			
		||||
        if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
 | 
			
		||||
            count++;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    closedir(dir);
 | 
			
		||||
 | 
			
		||||
    if (count == 0) {
 | 
			
		||||
        return 1;
 | 
			
		||||
    } else {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sf_dcf_resort_min(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -706,6 +734,13 @@ int sf_dcf_resort_min(void)
 | 
			
		|||
            MLOGD("DirKey:%d,FileKey:%d\n", gLastDirKey, gLastFileKey);
 | 
			
		||||
            if(gLastFileKey <= MAX_DCF_FILE_NUM)
 | 
			
		||||
            {
 | 
			
		||||
                sprintf(sTmp,"%s/%d%s",sRootPath,gLastDirKey,DCF_DIR_NAME);
 | 
			
		||||
                if(sf_is_directory_empty(sTmp))
 | 
			
		||||
                {
 | 
			
		||||
                    MLOGD("Will Delete Dir:%s\n", sTmp);
 | 
			
		||||
                    remove(sTmp);
 | 
			
		||||
                    system("sync");
 | 
			
		||||
                }
 | 
			
		||||
                gLastDirKey = i;
 | 
			
		||||
                MLOGD("DirKey:%d,FileKey:%d\n", gLastDirKey, gLastFileKey);
 | 
			
		||||
                return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -881,7 +881,7 @@ void sf_app_Get_Camera_Para(MSG_DEV_Param_Get_Rsp_T *CamPara)
 | 
			
		|||
 | 
			
		||||
    CamPara->zoom       = DigitalZoom + 1;//puiPara->Zoom+1;
 | 
			
		||||
 | 
			
		||||
    CamPara->cameraMode = (puiPara->CamMode==2)?1:0;
 | 
			
		||||
    CamPara->cameraMode = (puiPara->CamMode==3)?1:0;
 | 
			
		||||
 | 
			
		||||
	MLOGI("Camera Mode:%d\n", CamPara->cameraMode);
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -1340,7 +1340,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8  *pAppData, UINT16 dataLen)
 | 
			
		|||
						{
 | 
			
		||||
							saveMode = 2;
 | 
			
		||||
						}
 | 
			
		||||
						else if (saveMode == 2)
 | 
			
		||||
						else if ((saveMode == 3) || (saveMode == 2))
 | 
			
		||||
						{
 | 
			
		||||
							saveMode = 1;
 | 
			
		||||
						}
 | 
			
		||||
| 
						 | 
				
			
			@ -1357,8 +1357,8 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8  *pAppData, UINT16 dataLen)
 | 
			
		|||
							}
 | 
			
		||||
							else if (tmpMode == 1)
 | 
			
		||||
							{
 | 
			
		||||
                                puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
 | 
			
		||||
								//puiPara->CamMode = SF_CAM_MODE_VIDEO2;
 | 
			
		||||
                                //puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
 | 
			
		||||
								puiPara->CamMode = SF_CAM_MODE_VIDEO2;
 | 
			
		||||
							}
 | 
			
		||||
							else if (tmpMode == 2)
 | 
			
		||||
							{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
		linuxtmp{ reg = <0x02800000 0x04000000>; }; /* recycled after rtos started */
 | 
			
		||||
		uboot{    reg = <0x06800000 0x01640000>; }; /* recycled after rtos started */
 | 
			
		||||
		logo-fb{  reg = <0x07E40000 0x001C0000>; }; /* recycled after rtos started */
 | 
			
		||||
		usrmem{   reg = <0x07A00000 0x00600000>; };
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	/* Linux system memory region*/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -945,7 +945,7 @@
 | 
			
		|||
#define HUNTING_MCU_UART				ENABLE
 | 
			
		||||
#define HUNTING_IR_LED_940				ENABLE
 | 
			
		||||
#define SF_EXIF_MN_BUF_SIZE		256
 | 
			
		||||
#define SF_BASE_VERSION				"7MR5RCwDB01"
 | 
			
		||||
#define SF_BASE_VERSION				"7MR5RCwDB04"
 | 
			
		||||
#define DCF_DIR_NAME					"MEDIA"   /* 100MEDIA */
 | 
			
		||||
#define DCF_FILE_NAME					"SYGW"    /* SYFW0001.JPG */
 | 
			
		||||
#define PHOTO_THUMB_PATH 				"A:\\THUMB\\"
 | 
			
		||||
| 
						 | 
				
			
			@ -985,7 +985,7 @@
 | 
			
		|||
#ifndef ANR_FUNC
 | 
			
		||||
#define ANR_FUNC						ENABLE
 | 
			
		||||
#endif
 | 
			
		||||
#define SF_NO_SD_SEND				DISABLE
 | 
			
		||||
#define SF_NO_SD_SEND				ENABLE
 | 
			
		||||
////////////////////sf end////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										5
									
								
								rtos/code/application/source/cardv/SrcCode/System/rtos-main.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										5
									
								
								rtos/code/application/source/cardv/SrcCode/System/rtos-main.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
				
			
			@ -1075,6 +1075,11 @@ static void fastboot(void)
 | 
			
		|||
			vos_task_resume(handle_usb_uvacmode);
 | 
			
		||||
		break;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    default:
 | 
			
		||||
    	printf("default\n");
 | 
			
		||||
    	break;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								rtos/code/application/source/cardv/SrcCode/System/sys_fastboot.h
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										1
									
								
								rtos/code/application/source/cardv/SrcCode/System/sys_fastboot.h
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
				
			
			@ -14,6 +14,7 @@ typedef enum _BOOT_INIT_ {
 | 
			
		|||
	BOOT_INIT_BOOTLOGO,
 | 
			
		||||
	BOOT_INIT_OTHERS,
 | 
			
		||||
	BOOT_FLOW_BOOT,
 | 
			
		||||
	BOOT_FLOW_MOVIE2,
 | 
			
		||||
	BOOT_INIT_MAX_CNT = 32, //flag max bit cnt is 32
 | 
			
		||||
	ENUM_DUMMY4WORD(BOOT_INIT),
 | 
			
		||||
} BOOT_INIT;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										18
									
								
								rtos/code/application/source/cardv/SrcCode/System/sys_linuxboot.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										18
									
								
								rtos/code/application/source/cardv/SrcCode/System/sys_linuxboot.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
#include <FileSysTsk.h>
 | 
			
		||||
#include <shm_info.h>
 | 
			
		||||
#include "DxHunting.h"
 | 
			
		||||
#include "sys_fastboot.h"
 | 
			
		||||
#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
#include "sf_mcu.h"
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1034,12 +1035,17 @@ static int load_linux_from_nvtpack(LINUXTMP_PARTITION *p_linuxtmp, FDT_INFO *p_f
 | 
			
		|||
 | 
			
		||||
static int load_linux(LINUXTMP_PARTITION *p_linuxtmp, FDT_INFO *p_fdt_info)
 | 
			
		||||
{
 | 
			
		||||
#if 0
 | 
			
		||||
	SHMINFO *p_shm = (SHMINFO *)p_fdt_info->shmem_addr;
 | 
			
		||||
	if ((p_shm->boot.LdCtrl2 & LDCF_BOOT_CARD) == 0) {
 | 
			
		||||
		return load_linux_from_flash(p_linuxtmp, p_fdt_info);
 | 
			
		||||
	} else {
 | 
			
		||||
		return load_linux_from_nvtpack(p_linuxtmp, p_fdt_info);
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	return load_linux_from_flash(p_linuxtmp, p_fdt_info);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int check_mem_overlap(FDT_INFO *p_fdt_info)
 | 
			
		||||
| 
						 | 
				
			
			@ -1153,6 +1159,8 @@ int linuxboot_setup(LINUXBOOT_INFO *p_info)
 | 
			
		|||
		p_linuxtmp->tmp2_end = p_fdt_info->fdt_addr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
	SHMINFO *p_shm = (SHMINFO *)p_fdt_info->shmem_addr;
 | 
			
		||||
	if (p_shm->boot.LdCtrl2 & LDCF_BOOT_CARD) {
 | 
			
		||||
#if (_PACKAGE_FILESYS_ && _PACKAGE_SDCARD_)
 | 
			
		||||
| 
						 | 
				
			
			@ -1169,12 +1177,22 @@ int linuxboot_setup(LINUXBOOT_INFO *p_info)
 | 
			
		|||
	return -1;
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	(void) load_linux_from_nvtpack;
 | 
			
		||||
	(void) load_nvtpack;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// create new fdt for nodes of bootargs and ramdisk
 | 
			
		||||
	if ((er=create_new_fdt(p_linuxtmp)) != 0) {
 | 
			
		||||
		return er;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
 | 
			
		||||
		DBG_DUMP("fastboot wait BOOT_FLOW_MOVIE2...\n");
 | 
			
		||||
		fastboot_wait_done(BOOT_FLOW_MOVIE2);
 | 
			
		||||
		DBG_DUMP("fastboot wait BOOT_FLOW_MOVIE2 ok\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#if (CFG_INDEP_RAMDISK)
 | 
			
		||||
	// load ramdisk into memory and reserved memory
 | 
			
		||||
	if ((er=load_ramdisk(p_linuxtmp)) != 0) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										178
									
								
								rtos/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_CommPoolInit.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										178
									
								
								rtos/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_CommPoolInit.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
				
			
			@ -12,62 +12,6 @@
 | 
			
		|||
#include <sf_mcu.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "DxHunting.h"
 | 
			
		||||
//#define ENABLE      1
 | 
			
		||||
//#define DISABLE     0
 | 
			
		||||
 | 
			
		||||
#if (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_) || defined(_MODEL_565_CARDV_HY5137_) || \
 | 
			
		||||
     defined(_MODEL_565_CARDV_Y817_) || defined(_MODEL_565_CARDV_RD6000_) || defined(_MODEL_565_CARDV_EVB_) || \
 | 
			
		||||
	 defined(_MODEL_560_CARDV_EVB_)||defined(_MODEL_565_CARDV_WH565_) ||defined(_MODEL_565_CARDV_EVA51_))
 | 
			
		||||
#if 1
 | 
			
		||||
#define VDO_SIZE_W                  2560
 | 
			
		||||
#define VDO_SIZE_H                  1440
 | 
			
		||||
 | 
			
		||||
#define VDO_MAIN_SIZE_W             2560
 | 
			
		||||
#define VDO_MAIN_SIZE_H             1440
 | 
			
		||||
#else
 | 
			
		||||
#define VDO_SIZE_W                  1920
 | 
			
		||||
#define VDO_SIZE_H                  1080
 | 
			
		||||
 | 
			
		||||
#define VDO_MAIN_SIZE_W             1920
 | 
			
		||||
#define VDO_MAIN_SIZE_H             1080
 | 
			
		||||
#endif
 | 
			
		||||
#define VDO_CLONE_SIZE_W            848
 | 
			
		||||
#define VDO_CLONE_SIZE_H            480
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#define VDO_SIZE_W                  2560
 | 
			
		||||
#define VDO_SIZE_H                  1440
 | 
			
		||||
 | 
			
		||||
#define VDO_MAIN_SIZE_W             2560
 | 
			
		||||
#define VDO_MAIN_SIZE_H             1440
 | 
			
		||||
 | 
			
		||||
#define VDO_CLONE_SIZE_W            1920
 | 
			
		||||
#define VDO_CLONE_SIZE_H            1080
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (defined(_disp_ifdsi_lcd1_s3003l0_st7701s_))
 | 
			
		||||
#define VDO_DISP_SIZE_W            480//1280//1280//480
 | 
			
		||||
#define VDO_DISP_SIZE_H             864//854//320//320
 | 
			
		||||
#else
 | 
			
		||||
#define VDO_DISP_SIZE_W            960
 | 
			
		||||
#define VDO_DISP_SIZE_H             180
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (_BOARD_DRAM_SIZE_ == 0x04000000)
 | 
			
		||||
#define VDO_WIFI_SIZE_W             640
 | 
			
		||||
#define VDO_WIFI_SIZE_H             360
 | 
			
		||||
#else
 | 
			
		||||
#define VDO_WIFI_SIZE_W             848
 | 
			
		||||
#define VDO_WIFI_SIZE_H             480
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define VDO2_SIZE_W                  1920 //second sensor.
 | 
			
		||||
#define VDO2_SIZE_H                  1080 //second sensor.
 | 
			
		||||
 | 
			
		||||
#define VDO2_MAIN_SIZE_W             1920
 | 
			
		||||
#define VDO2_MAIN_SIZE_H             1080
 | 
			
		||||
 | 
			
		||||
#define VDO2_CLONE_SIZE_W            848
 | 
			
		||||
 | 
			
		||||
#define DBGINFO_BUFSIZE()	(0x200)
 | 
			
		||||
#define CA_WIN_NUM_W        32
 | 
			
		||||
| 
						 | 
				
			
			@ -126,107 +70,55 @@ void Movie_CommPoolInit(void)
 | 
			
		|||
 | 
			
		||||
static void Movie_CommPoolInit_Mode1(void)
 | 
			
		||||
{
 | 
			
		||||
	UINT32 id=0;
 | 
			
		||||
	UINT32 id = 0;
 | 
			
		||||
	UINT32 vcap_buf_size = 0;
 | 
			
		||||
	HD_VIDEO_PXLFMT vcap_fmt = HD_VIDEO_PXLFMT_RAW12;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if (_PACKAGE_DISPLAY_)
 | 
			
		||||
    USIZE DispDevSize  = {0};
 | 
			
		||||
	const UINT32 vdo_size_w = 2560;
 | 
			
		||||
	const UINT32 vdo_size_h = 1440;
 | 
			
		||||
 | 
			
		||||
	hd_ret = hd_videoout_get(video_out_ctrl, HD_VIDEOOUT_PARAM_SYSCAPS, p_video_out_syscaps);
 | 
			
		||||
	if (hd_ret != HD_OK) {
 | 
			
		||||
		DBG_ERR("get video_out_syscaps failed\r\n");
 | 
			
		||||
        DispDevSize.w = VDO_DISP_SIZE_W;
 | 
			
		||||
        DispDevSize.h = VDO_DISP_SIZE_H;
 | 
			
		||||
	} else {
 | 
			
		||||
        DispDevSize.w = p_video_out_syscaps->output_dim.w;
 | 
			
		||||
        DispDevSize.h = p_video_out_syscaps->output_dim.h;
 | 
			
		||||
	const UINT32 clone_size_w = 1920;
 | 
			
		||||
	const UINT32 clone_size_h = 1080;
 | 
			
		||||
 | 
			
		||||
	/*******************************************************************
 | 
			
		||||
	 * VCap + Main
 | 
			
		||||
	 *******************************************************************/
 | 
			
		||||
 | 
			
		||||
	System_GetSensorInfo(id, SENSOR_CAPOUT_FMT, &vcap_fmt);
 | 
			
		||||
 | 
			
		||||
	/* yuv */
 | 
			
		||||
	if (HD_VIDEO_PXLFMT_CLASS(vcap_fmt) == HD_VIDEO_PXLFMT_CLASS_YUV) {
 | 
			
		||||
	    vcap_buf_size = VDO_YUV_BUFSIZE(vdo_size_w, vdo_size_h, vcap_fmt);
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// config common pool (cap)
 | 
			
		||||
	for (id = 0; id < SENSOR_CAPS_COUNT; id++) {
 | 
			
		||||
		System_GetSensorInfo(id, SENSOR_CAPOUT_FMT, &vcap_fmt);
 | 
			
		||||
		if (HD_VIDEO_PXLFMT_CLASS(vcap_fmt) == HD_VIDEO_PXLFMT_CLASS_YUV) {     // YUV
 | 
			
		||||
		    switch (id) {
 | 
			
		||||
            case 0: //single sensor
 | 
			
		||||
			vcap_buf_size = VDO_YUV_BUFSIZE(VDO_SIZE_W, VDO_SIZE_H, vcap_fmt);
 | 
			
		||||
                break;
 | 
			
		||||
            case 1: // dual sensor
 | 
			
		||||
                vcap_buf_size = VDO_YUV_BUFSIZE(VDO2_SIZE_W, VDO2_SIZE_H, vcap_fmt);
 | 
			
		||||
                break;
 | 
			
		||||
		    }
 | 
			
		||||
		} else {                                                                // RAW
 | 
			
		||||
		    switch (id) {
 | 
			
		||||
            case 0:
 | 
			
		||||
			vcap_buf_size = VDO_RAW_BUFSIZE(VDO_SIZE_W, VDO_SIZE_H, vcap_fmt);
 | 
			
		||||
                break;
 | 
			
		||||
            case 1:
 | 
			
		||||
			    vcap_buf_size = VDO_RAW_BUFSIZE(VDO2_SIZE_W, VDO2_SIZE_H, vcap_fmt);
 | 
			
		||||
                break;
 | 
			
		||||
		    }
 | 
			
		||||
		}
 | 
			
		||||
		#if (MOVIE_DIRECT_FUNC == ENABLE)
 | 
			
		||||
		if (id == 0) {
 | 
			
		||||
			vcap_buf_size = 0;
 | 
			
		||||
		}
 | 
			
		||||
		#endif // (MOVIE_DIRECT_FUNC == ENABLE)
 | 
			
		||||
		mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
 | 
			
		||||
		mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() +
 | 
			
		||||
										vcap_buf_size +
 | 
			
		||||
										VDO_CA_BUF_SIZE(CA_WIN_NUM_W, CA_WIN_NUM_H) +
 | 
			
		||||
										VDO_LA_BUF_SIZE(LA_WIN_NUM_W, LA_WIN_NUM_H);
 | 
			
		||||
		mem_cfg.pool_info[id].blk_cnt = 7;
 | 
			
		||||
		mem_cfg.pool_info[id].ddr_id = DDR_ID0;
 | 
			
		||||
	/* raw */
 | 
			
		||||
	else {
 | 
			
		||||
		vcap_buf_size = VDO_RAW_BUFSIZE(vdo_size_w, vdo_size_h, vcap_fmt);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
//	// config common pool (main)
 | 
			
		||||
//	//id ++;
 | 
			
		||||
//	mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
 | 
			
		||||
//#if (MOVIE_DIS == DISABLE)
 | 
			
		||||
//	#if  (MOVIE_YUV_COMPRESS == ENABLE)
 | 
			
		||||
//	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_NVX_BUFSIZE(VDO_MAIN_SIZE_W, VDO_MAIN_SIZE_H, HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
//	#else
 | 
			
		||||
//	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(VDO_MAIN_SIZE_W, VDO_MAIN_SIZE_H, HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
//	#endif
 | 
			
		||||
//#else  // (MOVIE_DIS == DISABLE)
 | 
			
		||||
//	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_DIS_BUFSIZE(VDO_MAIN_SIZE_W, VDO_MAIN_SIZE_H, HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
//#endif // (MOVIE_DIS == DISABLE)
 | 
			
		||||
//	#if (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_)||defined(_MODEL_565_CARDV_WH565_)||defined(_MODEL_565_CARDV_EVA51_))
 | 
			
		||||
//	mem_cfg.pool_info[id].blk_cnt = 4;//6; //3 for 3dnr-off, 4 for 3dnr-on
 | 
			
		||||
//	#else  // (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_)||defined(_MODEL_565_CARDV_WH565_))
 | 
			
		||||
//	#if (_BOARD_DRAM_SIZE_ == 0x04000000)
 | 
			
		||||
//	mem_cfg.pool_info[id].blk_cnt = 4; //3 for 3dnr-off, 4 for 3dnr-on
 | 
			
		||||
//	#else  // (_BOARD_DRAM_SIZE_ == 0x04000000)
 | 
			
		||||
//	mem_cfg.pool_info[id].blk_cnt = 4; //3 for 3dnr-off, 4 for 3dnr-on
 | 
			
		||||
//	#endif // (_BOARD_DRAM_SIZE_ == 0x04000000)
 | 
			
		||||
//	#endif // (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_)||defined(_MODEL_565_CARDV_WH565_))
 | 
			
		||||
//	mem_cfg.pool_info[id].ddr_id = DDR_ID0;
 | 
			
		||||
	#if (MOVIE_DIRECT_FUNC == ENABLE)
 | 
			
		||||
	if (id == 0) {
 | 
			
		||||
		vcap_buf_size = 0;
 | 
			
		||||
	}
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
 | 
			
		||||
	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() +
 | 
			
		||||
									vcap_buf_size +
 | 
			
		||||
									VDO_CA_BUF_SIZE(CA_WIN_NUM_W, CA_WIN_NUM_H) +
 | 
			
		||||
									VDO_LA_BUF_SIZE(LA_WIN_NUM_W, LA_WIN_NUM_H);
 | 
			
		||||
	mem_cfg.pool_info[id].blk_cnt = 7;
 | 
			
		||||
	mem_cfg.pool_info[id].ddr_id = DDR_ID0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if (_BOARD_DRAM_SIZE_ > 0x04000000)
 | 
			
		||||
    #if (SENSOR_CAPS_COUNT == 1)
 | 
			
		||||
	// config common pool (clone)
 | 
			
		||||
	/*******************************************************************
 | 
			
		||||
	 * Clone
 | 
			
		||||
	 *******************************************************************/
 | 
			
		||||
	id ++;
 | 
			
		||||
	mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
 | 
			
		||||
#if (MOVIE_DIS == DISABLE)
 | 
			
		||||
	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(VDO_CLONE_SIZE_W, VDO_CLONE_SIZE_H, HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
#else  // (MOVIE_DIS == DISABLE)
 | 
			
		||||
	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_DIS_BUFSIZE(VDO_CLONE_SIZE_W, VDO_CLONE_SIZE_H, HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
#endif // (MOVIE_DIS == DISABLE)
 | 
			
		||||
	#if (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_)||defined(_MODEL_565_CARDV_WH565_)||defined(_MODEL_565_CARDV_EVA51_))
 | 
			
		||||
		#if (MOVIE_DIRECT_FUNC == ENABLE)
 | 
			
		||||
		mem_cfg.pool_info[id].blk_cnt = 2;
 | 
			
		||||
		#else  // (MOVIE_DIRECT_FUNC == ENABLE)
 | 
			
		||||
		mem_cfg.pool_info[id].blk_cnt = 4;
 | 
			
		||||
		#endif // (MOVIE_DIRECT_FUNC == ENABLE)
 | 
			
		||||
	#else  // (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_)||defined(_MODEL_565_CARDV_WH565_))
 | 
			
		||||
	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(clone_size_w, clone_size_h, HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
	mem_cfg.pool_info[id].blk_cnt = 4;
 | 
			
		||||
	#endif // (defined(_MODEL_565_CARDV_HS880C_)||defined(_MODEL_565_CARDV_HS880CC_)||defined(_MODEL_565_CARDV_WH565_))
 | 
			
		||||
	mem_cfg.pool_info[id].ddr_id = DDR_ID0;
 | 
			
		||||
#endif // (SENSOR_CAPS_COUNT == 1)
 | 
			
		||||
#endif // (_BOARD_DRAM_SIZE_ > 0x04000000)
 | 
			
		||||
 | 
			
		||||
#if (_PACKAGE_BOOTLOGO_)
 | 
			
		||||
    #if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,14 @@
 | 
			
		|||
#include "UIAppPhoto_Param.h"
 | 
			
		||||
#include "sys_fwload.h"
 | 
			
		||||
#include "../lfqueue/lfqueue.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <sys_linuxboot.h>
 | 
			
		||||
#include <libfdt.h>
 | 
			
		||||
#include <rtosfdt.h>
 | 
			
		||||
#include <compiler.h>
 | 
			
		||||
#define MEM_PATH_LINUX "/memory"
 | 
			
		||||
 | 
			
		||||
#if defined(_UI_STYLE_LVGL_)
 | 
			
		||||
#include "flow_lvgl.h"
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -84,8 +92,6 @@ static char thumb_current_path_main[256] = {'\0'};
 | 
			
		|||
static char thumb_current_path_clone[256] = {'\0'};
 | 
			
		||||
static lfqueue_t write_queue = {0};
 | 
			
		||||
 | 
			
		||||
#define MOVIE_ROOT_PATH		"A:\\Novatek\\"
 | 
			
		||||
#define MOIVE2_YUV_PATH		"A:\\MOVIE2.yuv420"
 | 
			
		||||
#define FILE_SN_MAX		99999
 | 
			
		||||
#define FILEDB_MAX_NUM		5000
 | 
			
		||||
#define MOVIE_THUMB_WIDTH	640
 | 
			
		||||
| 
						 | 
				
			
			@ -98,9 +104,12 @@ static ID MOVIEFAST_FLG_ID = 0;
 | 
			
		|||
static UINT32 g_moviefast_tsk_run = 1;
 | 
			
		||||
static UINT32 g_moviefast_poweroff_tsk_run = 1;
 | 
			
		||||
static THREAD_HANDLE g_moviefast_tsk_id = 0;
 | 
			
		||||
static THREAD_HANDLE g_moviefast_raw_tsk_id = 0;
 | 
			
		||||
static THREAD_HANDLE g_moviefast_power_off_tsk_id = 0;
 | 
			
		||||
static THREAD_HANDLE g_moviefast_write_tsk_id = 0;
 | 
			
		||||
static BOOL g_bIsRecStatus = FALSE;
 | 
			
		||||
static BOOL g_manual_raw_tsk_running = FALSE;
 | 
			
		||||
static BOOL g_is_manual_raw_tsk_running = FALSE;
 | 
			
		||||
static VOS_TICK g_rec_start_tick = 0;
 | 
			
		||||
static VOS_TICK g_alg_start_time= 0;
 | 
			
		||||
static VOS_TICK g_alg_end_time= 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -865,6 +874,66 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void MovieFast_Manual_Raw_Task(void* arg)
 | 
			
		||||
{
 | 
			
		||||
	HD_PATH_ID vcap_path = ImageApp_MovieMulti_GetVcapPort(_CFG_REC_ID_1);
 | 
			
		||||
	HD_PATH_ID vprc_path = ImageApp_MovieMulti_GetVprcInPort(_CFG_REC_ID_1);
 | 
			
		||||
	HD_RESULT ret;
 | 
			
		||||
	HD_VIDEO_FRAME frame;
 | 
			
		||||
 | 
			
		||||
	g_is_manual_raw_tsk_running = TRUE;
 | 
			
		||||
 | 
			
		||||
	while(g_manual_raw_tsk_running)
 | 
			
		||||
	{
 | 
			
		||||
		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);
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		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);
 | 
			
		||||
			hd_videocap_release_out_buf(vcap_path, &frame);
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ret = hd_videocap_release_out_buf(vcap_path, &frame);
 | 
			
		||||
		if(ret != HD_OK){
 | 
			
		||||
			DBG_ERR("hd_videocap_release_out_buf failed!(%d)\n", ret);
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	while(1)
 | 
			
		||||
	{
 | 
			
		||||
		ret = hd_videocap_pull_out_buf(vcap_path, &frame, 33);
 | 
			
		||||
		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){
 | 
			
		||||
			DBG_ERR("hd_videoproc_push_in_buf failed!(%d)\n", ret);
 | 
			
		||||
			hd_videocap_release_out_buf(vcap_path, &frame);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ret = hd_videocap_release_out_buf(vcap_path, &frame);
 | 
			
		||||
		if(ret != HD_OK){
 | 
			
		||||
			DBG_ERR("hd_videocap_release_out_buf failed!(%d)\n", ret);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	DBG_DUMP("MovieFast_Manual_Raw_Task finished\n");
 | 
			
		||||
 | 
			
		||||
	g_is_manual_raw_tsk_running = FALSE;
 | 
			
		||||
 | 
			
		||||
	THREAD_RETURN(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void MovieFast_WriteFile_Task(void* arg)
 | 
			
		||||
{
 | 
			
		||||
	lfqueue_t* queue = (lfqueue_t*)arg;
 | 
			
		||||
| 
						 | 
				
			
			@ -907,6 +976,8 @@ static void MovieFast_WriteFile_Task(void* arg)
 | 
			
		|||
			free(param);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    DBG_DUMP("MovieFast_WriteFile_Task finished\n");
 | 
			
		||||
}
 | 
			
		||||
static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 value)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -1115,13 +1186,126 @@ static void MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_CFG cfg)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int MovieFast_fdt_read_mem_node(const char *path, unsigned int *p_addr, unsigned int *p_size)
 | 
			
		||||
{
 | 
			
		||||
	unsigned char *p_fdt = (unsigned char *)fdt_get_base();
 | 
			
		||||
 | 
			
		||||
	if (p_fdt == NULL) {
 | 
			
		||||
		DBG_ERR("p_fdt is NULL.\n");
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	int len;
 | 
			
		||||
	int nodeoffset;
 | 
			
		||||
	const void *nodep;  /* property node pointer */
 | 
			
		||||
 | 
			
		||||
	// get linux space
 | 
			
		||||
	nodeoffset = fdt_path_offset(p_fdt, path);
 | 
			
		||||
	if (nodeoffset < 0) {
 | 
			
		||||
		DBG_ERR("failed to offset for  %s = %d \n", path, nodeoffset);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	nodep = fdt_getprop(p_fdt, nodeoffset, "reg", &len);
 | 
			
		||||
	if (len == 0 || nodep == NULL) {
 | 
			
		||||
		DBG_ERR("failed to access reg.\n");
 | 
			
		||||
		return -1;
 | 
			
		||||
	} else {
 | 
			
		||||
		unsigned int *p_data = (unsigned int *)nodep;
 | 
			
		||||
		*p_addr = be32_to_cpu(p_data[0]);
 | 
			
		||||
		*p_size = be32_to_cpu(p_data[1]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int MovieFast_fdt_get_info(FDT_INFO *p_info)
 | 
			
		||||
{
 | 
			
		||||
	int er;
 | 
			
		||||
	if ((er = MovieFast_fdt_read_mem_node(MEM_PATH_LINUX, &p_info->linux_addr, &p_info->linux_size)) != 0) {
 | 
			
		||||
		return er;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	DBG_DUMP("linux addr:%lx size:%lx\n", p_info->linux_addr, p_info->linux_size);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int MovieFast_fdt_get_tmp_buf(FDT_INFO *p_info, UINT32* addr, UINT32* size)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	if(p_info && addr && size){
 | 
			
		||||
		*addr = (UINT32)(p_info->linux_addr + 0x1000); /* linux kernel is start from 0x0, add offset to avoid null check */
 | 
			
		||||
		*size = (UINT32)(p_info->linux_size - 0x1000);
 | 
			
		||||
		return E_OK;
 | 
			
		||||
	}
 | 
			
		||||
	else{
 | 
			
		||||
		DBG_ERR("p_inf or addr or size is null\n");
 | 
			
		||||
		return E_SYS;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static INT32 MovieFast_Mode2_Get_Cont_Shot(UINT32* max_cnt, UINT32* duration)
 | 
			
		||||
{
 | 
			
		||||
#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
    UIMenuStoreInfo *puiPara = sf_ui_para_get();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if(max_cnt == NULL || duration == NULL){
 | 
			
		||||
		DBG_ERR("max_cnt & max_cnt can't be null!\n");
 | 
			
		||||
		return E_SYS;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	switch (UI_GetData(FL_CONTINUE_SHOT))//puiPara->Multishot
 | 
			
		||||
	{
 | 
			
		||||
		case CONTINUE_SHOT_BURST_5:
 | 
			
		||||
		case CONTINUE_SHOT_BURST_4:
 | 
			
		||||
		{
 | 
			
		||||
			DBG_WRN("MovieFast mode2 only support CONTINUE_SHOT_BURST_3\n");
 | 
			
		||||
			*max_cnt = 3;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		case CONTINUE_SHOT_BURST_3:
 | 
			
		||||
			*max_cnt = 3;
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case CONTINUE_SHOT_BURST_2:
 | 
			
		||||
			*max_cnt = 2;
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case CONTINUE_SHOT_OFF:
 | 
			
		||||
		default:
 | 
			
		||||
			*max_cnt = 1;
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
	if(SF_MULTISHOT_INTEVEL_1S == puiPara->MultiShotIntevel)
 | 
			
		||||
	{
 | 
			
		||||
		*duration = 1000;//The interval between consecutive shots of each photo is 1 second
 | 
			
		||||
	}
 | 
			
		||||
	else if(SF_MULTISHOT_INTEVEL_2S == puiPara->MultiShotIntevel)	{
 | 
			
		||||
		*duration = 2000;//The interval between consecutive shots of each photo is 2 second
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		*duration = 1000 / *max_cnt;//SF_MULTISHOT_INTEVEL_0S
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
    *duration = 1000 / *max_cnt;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return E_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		||||
{
 | 
			
		||||
	UINT32 i;
 | 
			
		||||
	MOVIEMULTI_MAX_LINK_INFO MaxLinkInfo = {1, 0, 0, 1, 0};   //Img, Disp, Wifi, AudCap, EthCam
 | 
			
		||||
 | 
			
		||||
	DBG_FUNC("\r\n");
 | 
			
		||||
    UINT32 rec_type = MovieMapping_GetRecType(UI_GetData(FL_MOVIE_SIZE));
 | 
			
		||||
//    UINT32 rec_type = MovieMapping_GetRecType(UI_GetData(FL_MOVIE_SIZE));
 | 
			
		||||
 | 
			
		||||
	Movie_CommPoolInit();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1129,6 +1313,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 700 700 100 ");
 | 
			
		||||
	}
 | 
			
		||||
	else{
 | 
			
		||||
	    Set_NIGHTMODE(0, 1);
 | 
			
		||||
| 
						 | 
				
			
			@ -1177,36 +1362,66 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
	ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_VCAP_OUTFUNC, HD_VIDEOCAP_OUTFUNC_DIRECT);
 | 
			
		||||
#endif
 | 
			
		||||
	ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PRARM_FILEDB_MAX_MUM, 5000);
 | 
			
		||||
    ImageApp_MovieMulti_SetParam(_CFG_CTRL_ID, MOVIEMULTI_PARAM_FILE_UTC_AUTO_EN, TRUE);
 | 
			
		||||
 | 
			
		||||
	if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_MOVIE2){
 | 
			
		||||
		 MOVIEMULTI_IPL_SIZE_INFO ipl_size={{2560,1440}, 30};
 | 
			
		||||
		 ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, (UINT32)&ipl_size);
 | 
			
		||||
		 ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, MOVIE_IPL_SIZE_USER);
 | 
			
		||||
	}
 | 
			
		||||
	else{
 | 
			
		||||
 | 
			
		||||
		 UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
 | 
			
		||||
		 MOVIEMULTI_IPL_SIZE_INFO ipl_size={{sensor_info->sSize.w, sensor_info->sSize.h}, 60};
 | 
			
		||||
		 ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, (UINT32)&ipl_size);
 | 
			
		||||
		 ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, MOVIE_IPL_SIZE_USER);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_MOVIE2){
 | 
			
		||||
        MOVIEMULTI_IPL_SIZE_INFO ipl_size={{2560,1440}, 30};
 | 
			
		||||
        ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, (UINT32)&ipl_size);
 | 
			
		||||
        ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, MOVIE_IPL_SIZE_USER);
 | 
			
		||||
        ImageApp_MovieMulti_SetParam(_CFG_CTRL_ID, MOVIEMULTI_PARAM_FILE_UTC_AUTO_EN, TRUE);
 | 
			
		||||
    }
 | 
			
		||||
    else{
 | 
			
		||||
        UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
 | 
			
		||||
        MOVIEMULTI_IPL_SIZE_INFO ipl_size={{sensor_info->sSize.w, sensor_info->sSize.h}, 60};
 | 
			
		||||
        ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, (UINT32)&ipl_size);
 | 
			
		||||
        ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, MOVIE_IPL_SIZE_USER);
 | 
			
		||||
		 MOVIEMULTI_IME_CROP_INFO crop_info = {0};
 | 
			
		||||
 | 
			
		||||
         UINT32 movie_size_idx;
 | 
			
		||||
 | 
			
		||||
        MOVIEMULTI_IME_CROP_INFO crop_info = {0};
 | 
			
		||||
         UINT32 rec_type;
 | 
			
		||||
 | 
			
		||||
        /* 4:3 -> 16:9 */
 | 
			
		||||
        crop_info.IMESize = (USIZE){1920, 1440};
 | 
			
		||||
        crop_info.IMEWin = (URECT){0, 180, 1920, 1080};
 | 
			
		||||
        ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_MAIN_IME_CROP, (UINT32)&crop_info);
 | 
			
		||||
        if(MOVIE_REC_TYPE_CLONE == rec_type)
 | 
			
		||||
        {
 | 
			
		||||
         movie_size_idx = UI_GetData(FL_MOVIE_SIZE);
 | 
			
		||||
 | 
			
		||||
         rec_type = MovieMapping_GetRecType(movie_size_idx);
 | 
			
		||||
        if (rec_type == MOVIE_REC_TYPE_FRONT || rec_type == MOVIE_REC_TYPE_CLONE) { // single recording
 | 
			
		||||
            /* 4:3 -> 16:9 */
 | 
			
		||||
            crop_info.IMESize = (USIZE){640, 480};
 | 
			
		||||
            crop_info.IMEWin = (URECT){0, 60, 640, 360};
 | 
			
		||||
            ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_CLONE_IME_CROP, (UINT32)&crop_info);
 | 
			
		||||
//            crop_info.IMESize = (USIZE){1920, 1440};
 | 
			
		||||
//            crop_info.IMEWin = (URECT){0, 180, 1920, 1080};
 | 
			
		||||
            crop_info.IMESize = (USIZE){
 | 
			
		||||
                gMovie_Rec_Info[0].size.w,
 | 
			
		||||
                (gMovie_Rec_Info[0].size.w * 3) / 4};
 | 
			
		||||
 | 
			
		||||
            crop_info.IMEWin = (URECT){
 | 
			
		||||
 | 
			
		||||
                0,
 | 
			
		||||
                (crop_info.IMESize.h - gMovie_Rec_Info[0].size.h) / 2,
 | 
			
		||||
                gMovie_Rec_Info[0].size.w,
 | 
			
		||||
                gMovie_Rec_Info[0].size.h};
 | 
			
		||||
 | 
			
		||||
            ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_MAIN_IME_CROP, (UINT32)&crop_info);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
       if (rec_type == MOVIE_REC_TYPE_CLONE) {
 | 
			
		||||
             /* 4:3 -> 16:9 */
 | 
			
		||||
//             crop_info.IMESize = (USIZE){640, 480};
 | 
			
		||||
//             crop_info.IMEWin = (URECT){0, 60, 640, 360};
 | 
			
		||||
 | 
			
		||||
            crop_info.IMESize = (USIZE){
 | 
			
		||||
                gMovie_Clone_Info[0].size.w,
 | 
			
		||||
                (gMovie_Clone_Info[0].size.w * 3) / 4};
 | 
			
		||||
 | 
			
		||||
            crop_info.IMEWin = (URECT){
 | 
			
		||||
                0,
 | 
			
		||||
                (crop_info.IMESize.h - gMovie_Clone_Info[0].size.h) / 2,
 | 
			
		||||
                gMovie_Clone_Info[0].size.w,
 | 
			
		||||
                gMovie_Clone_Info[0].size.h};
 | 
			
		||||
 | 
			
		||||
             ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_CLONE_IME_CROP, (UINT32)&crop_info);
 | 
			
		||||
        }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#if (ANR_FUNC == ENABLE)
 | 
			
		||||
	HD_AUDIOCAP_ANR audio_cfg_param = {0};
 | 
			
		||||
| 
						 | 
				
			
			@ -1224,10 +1439,14 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
 | 
			
		||||
	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);
 | 
			
		||||
 | 
			
		||||
#if FIX_RECORD_NOISE == ENABLE
 | 
			
		||||
 	ImageApp_MovieMulti_SetParam(0, MOVIEMULTI_PARAM_AUD_MUTE_ENC_FUNC_EN, TRUE);
 | 
			
		||||
    ImageApp_MovieMulti_SetParam(0, MOVIEMULTI_PARAM_AUD_MUTE_ENC, TRUE);
 | 
			
		||||
#endif	
 | 
			
		||||
 | 
			
		||||
    ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_MANUAL_PUSH_RAW_FRAME, TRUE);
 | 
			
		||||
 | 
			
		||||
	ImageApp_MovieMulti_Open();
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < SENSOR_CAPS_COUNT; i++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1246,7 +1465,7 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
		 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(30, 60);
 | 
			
		||||
		 vprc_in.frc = HD_VIDEO_FRC_RATIO(1, 1);
 | 
			
		||||
		 hd_videoproc_set(vprc_in_id, HD_VIDEOPROC_PARAM_IN, &vprc_in);
 | 
			
		||||
 | 
			
		||||
		 /* alg */
 | 
			
		||||
| 
						 | 
				
			
			@ -1259,14 +1478,12 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
		 vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
 | 
			
		||||
//		 vprc_out.depth = 0; /* raw encode */
 | 
			
		||||
		 hd_videoproc_set(vprc_main_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
 | 
			
		||||
        if(MOVIE_REC_TYPE_CLONE == rec_type)
 | 
			
		||||
        {
 | 
			
		||||
            /* clone */
 | 
			
		||||
            hd_videoproc_get(vprc_clone_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
 | 
			
		||||
            vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
 | 
			
		||||
    //		 vprc_out.depth = 0;
 | 
			
		||||
            hd_videoproc_set(vprc_clone_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		 /* clone */
 | 
			
		||||
		 hd_videoproc_get(vprc_clone_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
 | 
			
		||||
		 vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
 | 
			
		||||
//		 vprc_out.depth = 0;
 | 
			
		||||
		 hd_videoproc_set(vprc_clone_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    if (1){//gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.w && gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.h) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1300,10 +1517,12 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
    {
 | 
			
		||||
		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;
 | 
			
		||||
| 
						 | 
				
			
			@ -1315,60 +1534,63 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3);
 | 
			
		||||
		vcap_path = ImageApp_MovieMulti_GetVcapPort(_CFG_REC_ID_1);
 | 
			
		||||
		vprc_path = ImageApp_MovieMulti_GetVprcInPort(_CFG_REC_ID_1);
 | 
			
		||||
 | 
			
		||||
		vos_perf_mark(&g_alg_start_time);
 | 
			
		||||
 | 
			
		||||
		do {
 | 
			
		||||
			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);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			hd_videoproc_pull_out_buf(alg_path, &frame, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS);
 | 
			
		||||
			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);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			ret = hd_videocap_release_out_buf(vcap_path, &frame);
 | 
			
		||||
			if(ret != HD_OK){
 | 
			
		||||
				DBG_ERR("hd_videocap_release_out_buf failed!(%d)\n", ret);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			ret = hd_videoproc_pull_out_buf(alg_path, &frame, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS);
 | 
			
		||||
			if(ret != HD_OK){
 | 
			
		||||
				DBG_ERR("hd_videoproc_pull_out_buf failed!(%d)\n", ret);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			DBG_DUMP("count = %llu, timestamp = %llu\n", frame.count, frame.timestamp);
 | 
			
		||||
 | 
			
		||||
			if(frame.count >= ae_cnt && ae_locked == FALSE){
 | 
			
		||||
 | 
			
		||||
				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
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				Set_AEMODE(1);
 | 
			
		||||
				setet_preset_param();
 | 
			
		||||
 | 
			
		||||
				ae_locked = TRUE;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if(frame.count >= stop_cnt){
 | 
			
		||||
 | 
			
		||||
				UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
 | 
			
		||||
				UINT32 buf_size = 0;
 | 
			
		||||
 | 
			
		||||
				buf_size = VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
#if 0
 | 
			
		||||
				VOS_TICK t1, t2;
 | 
			
		||||
				vos_perf_mark(&t1);
 | 
			
		||||
				FST_FILE fp = FileSys_OpenFile(MOIVE2_YUV_PATH, FST_OPEN_ALWAYS | FST_OPEN_WRITE);
 | 
			
		||||
				FileSys_WriteFile(fp, (UINT8*)frame.phy_addr[0], &buf_size, 0, NULL);
 | 
			
		||||
				FileSys_CloseFile(fp);
 | 
			
		||||
				vos_perf_mark(&t2);
 | 
			
		||||
				DBG_DUMP("write = %lu us\n", vos_perf_duration(t1, t2));
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
				MOVIEFAST_WRITE_QUEUE_PARAM* param = (MOVIEFAST_WRITE_QUEUE_PARAM*) malloc(sizeof(MOVIEFAST_WRITE_QUEUE_PARAM));
 | 
			
		||||
				if(param){
 | 
			
		||||
					memcpy((void*)¶m->frame, (void*)&frame, sizeof(HD_VIDEO_FRAME));
 | 
			
		||||
					param->va = NULL;
 | 
			
		||||
					param->vprc_path_id = alg_path;
 | 
			
		||||
					param->size = buf_size;
 | 
			
		||||
					sprintf(param->path, MOIVE2_YUV_PATH);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				g_vprc_trigger_frm_time = (VOS_TICK)frame.timestamp;
 | 
			
		||||
				g_vprc_trigger_frm_count = (UINT32)frame.count;
 | 
			
		||||
 | 
			
		||||
				while (lfqueue_enq(&write_queue, (void*) param) == -1)
 | 
			
		||||
				{
 | 
			
		||||
				    DBG_ERR("ENQ Full ?\r\n");
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				stop = TRUE;
 | 
			
		||||
			}
 | 
			
		||||
			else{
 | 
			
		||||
				hd_videoproc_release_out_buf(alg_path, &frame);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			hd_videoproc_release_out_buf(alg_path, &frame);
 | 
			
		||||
 | 
			
		||||
		} while(stop == FALSE);
 | 
			
		||||
 | 
			
		||||
		vos_perf_mark(&g_alg_end_time);
 | 
			
		||||
| 
						 | 
				
			
			@ -1386,16 +1608,118 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
 | 
			
		|||
		vos_task_resume(g_moviefast_tsk_id);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((g_moviefast_raw_tsk_id = vos_task_create(MovieFast_Manual_Raw_Task, 0, "MovieFastRawTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
 | 
			
		||||
		DBG_ERR("MovieFast_Manual_Raw_Task create failed.\r\n");
 | 
			
		||||
	} else {
 | 
			
		||||
		g_manual_raw_tsk_running = TRUE;
 | 
			
		||||
		vos_task_resume(g_moviefast_raw_tsk_id);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    vos_flag_set(MOVIEFAST_FLG_ID, FLGMOVIEFAST_RECSTART);
 | 
			
		||||
    
 | 
			
		||||
    VOS_TICK t1, t2;
 | 
			
		||||
    
 | 
			
		||||
    vos_perf_mark(&t1);
 | 
			
		||||
 | 
			
		||||
#if 1
 | 
			
		||||
 | 
			
		||||
    FDT_INFO fdt_info;
 | 
			
		||||
    UINT32 tmp_buf, tmp_buf_size;
 | 
			
		||||
    UINT32 cnt = 0;
 | 
			
		||||
    UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
 | 
			
		||||
    UINT32 yuv_size = 0;
 | 
			
		||||
    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){
 | 
			
		||||
    	DBG_ERR("get tmp buffer failed\n");
 | 
			
		||||
    	goto EXIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(MovieFast_Mode2_Get_Cont_Shot(&max_cnt, &duration) != E_OK){
 | 
			
		||||
    	DBG_ERR("get cont shut failed\n");
 | 
			
		||||
    	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);
 | 
			
		||||
 | 
			
		||||
    	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);
 | 
			
		||||
    	if(++cnt >= max_cnt)
 | 
			
		||||
    		break;
 | 
			
		||||
 | 
			
		||||
    	vos_util_delay_ms(duration);
 | 
			
		||||
 | 
			
		||||
    } while(1);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	vos_perf_mark(&t2);
 | 
			
		||||
 | 
			
		||||
#if FIX_RECORD_NOISE == ENABLE
 | 
			
		||||
 	vos_util_delay_ms(300);
 | 
			
		||||
 | 
			
		||||
	UINT32 elapse_time_ms = ((t2 - t1) / 1000);
 | 
			
		||||
 | 
			
		||||
	  CHKPNT;
 | 
			
		||||
	if(elapse_time_ms < 300)	
 | 
			
		||||
 		vos_util_delay_ms(300 - elapse_time_ms);
 | 
			
		||||
 	
 | 
			
		||||
    ImageApp_MovieMulti_SetParam(0, MOVIEMULTI_PARAM_AUD_MUTE_ENC, FALSE);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXIT:
 | 
			
		||||
 | 
			
		||||
	THREAD_RETURN(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void MovieFast_Close(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if(g_moviefast_raw_tsk_id){
 | 
			
		||||
 | 
			
		||||
		UINT32 delay_cnt;
 | 
			
		||||
 | 
			
		||||
		delay_cnt = 10;
 | 
			
		||||
		g_manual_raw_tsk_running = FALSE;
 | 
			
		||||
 | 
			
		||||
		while (g_is_manual_raw_tsk_running && delay_cnt) {
 | 
			
		||||
			vos_util_delay_us(10000);
 | 
			
		||||
			delay_cnt --;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if(g_is_manual_raw_tsk_running){
 | 
			
		||||
			vos_task_destroy(g_moviefast_raw_tsk_id);
 | 
			
		||||
			g_is_manual_raw_tsk_running = FALSE;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		g_moviefast_raw_tsk_id = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	MovieFast_OnRecStop();
 | 
			
		||||
 | 
			
		||||
	MovieStamp_Disable();
 | 
			
		||||
| 
						 | 
				
			
			@ -1412,59 +1736,86 @@ static void MovieFast_Close(void)
 | 
			
		|||
		UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
 | 
			
		||||
		UINT32 buf_pa = 0;
 | 
			
		||||
		void* buf_va = 0;
 | 
			
		||||
		UINT32 max_cnt , duration;
 | 
			
		||||
		UINT32 tmp_buf, tmp_buf_size;
 | 
			
		||||
		FDT_INFO fdt_info;
 | 
			
		||||
		UINT32 yuv_size = 0;
 | 
			
		||||
 | 
			
		||||
	    MovieFast_fdt_get_info(&fdt_info);
 | 
			
		||||
 | 
			
		||||
	    if(MovieFast_fdt_get_tmp_buf(&fdt_info, &tmp_buf, &tmp_buf_size) != E_OK){
 | 
			
		||||
	    	DBG_ERR("get tmp buffer failed\n");
 | 
			
		||||
	    	goto EXIT;
 | 
			
		||||
	    }
 | 
			
		||||
 | 
			
		||||
	    if(MovieFast_Mode2_Get_Cont_Shot(&max_cnt, &duration) != E_OK){
 | 
			
		||||
	    	DBG_ERR("get cont shut failed\n");
 | 
			
		||||
	    	goto EXIT;
 | 
			
		||||
	    }
 | 
			
		||||
 | 
			
		||||
	    yuv_size = VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
 | 
			
		||||
		PhotoFast_Movie_Init();
 | 
			
		||||
 | 
			
		||||
		PhotoFast_SliceEncode_Open(alg_path);
 | 
			
		||||
		PhotoFast_SliceEncode2_Open(alg_path, 1);
 | 
			
		||||
		PhotoFast_SliceEncode2_Open(alg_path, max_cnt);
 | 
			
		||||
 | 
			
		||||
		HD_VIDEO_FRAME frame = {0};
 | 
			
		||||
		UINT32 addr_dst[HD_VIDEO_MAX_PLANE] = {0};
 | 
			
		||||
		UINT32 loff_dst[HD_VIDEO_MAX_PLANE] = {0};
 | 
			
		||||
		UINT32 buf_size = 0;
 | 
			
		||||
		for(UINT32 i = 0 ; i < max_cnt ; i++)
 | 
			
		||||
		{
 | 
			
		||||
			HD_VIDEO_FRAME frame = {0};
 | 
			
		||||
			UINT32 addr_dst[HD_VIDEO_MAX_PLANE] = {0};
 | 
			
		||||
			UINT32 loff_dst[HD_VIDEO_MAX_PLANE] = {0};
 | 
			
		||||
			HD_COMMON_MEM_VB_BLK blk = 0;
 | 
			
		||||
 | 
			
		||||
		HD_COMMON_MEM_VB_BLK blk = 0;
 | 
			
		||||
		buf_size = VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
		blk = hd_common_mem_get_block(HD_COMMON_MEM_COMMON_POOL, buf_size, DDR_ID0); // Get block from mem pool
 | 
			
		||||
		if (blk == HD_COMMON_MEM_VB_INVALID_BLK) {
 | 
			
		||||
			DBG_ERR("hd_common_mem_get_block failed!(size=%lx)\n", buf_size);
 | 
			
		||||
		}
 | 
			
		||||
			blk = hd_common_mem_get_block(HD_COMMON_MEM_COMMON_POOL, yuv_size, DDR_ID0); // Get block from mem pool
 | 
			
		||||
			if (blk == HD_COMMON_MEM_VB_INVALID_BLK) {
 | 
			
		||||
				DBG_ERR("hd_common_mem_get_block failed!(size=%lx)\n", yuv_size);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		buf_pa = hd_common_mem_blk2pa(blk);
 | 
			
		||||
		if (buf_pa == 0) {
 | 
			
		||||
			DBG_ERR("hd_common_mem_blk2pa failed!(blk=0x%x)\n", blk);
 | 
			
		||||
		}
 | 
			
		||||
			buf_pa = hd_common_mem_blk2pa(blk);
 | 
			
		||||
			if (buf_pa == 0) {
 | 
			
		||||
				DBG_ERR("hd_common_mem_blk2pa failed!(blk=0x%x)\n", blk);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		buf_va = (void*)hd_common_mem_mmap(HD_COMMON_MEM_MEM_TYPE_CACHE, buf_pa, buf_size);
 | 
			
		||||
		if (buf_va == 0) {
 | 
			
		||||
			DBG_ERR("hd_common_mem_mmap failed!\r\n");
 | 
			
		||||
		}
 | 
			
		||||
			buf_va = (void*)hd_common_mem_mmap(HD_COMMON_MEM_MEM_TYPE_CACHE, buf_pa, yuv_size);
 | 
			
		||||
			if (buf_va == 0) {
 | 
			
		||||
				DBG_ERR("hd_common_mem_mmap failed!\r\n");
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		if(buf_pa){
 | 
			
		||||
			/* dst img */
 | 
			
		||||
			addr_dst[0] = buf_pa;
 | 
			
		||||
			loff_dst[0] = sensor_info->sSize.w;
 | 
			
		||||
			addr_dst[1] = addr_dst[0] + loff_dst[0] * sensor_info->sSize.h;
 | 
			
		||||
			loff_dst[1] = sensor_info->sSize.w;
 | 
			
		||||
			vf_init_ex(&frame, sensor_info->sSize.w, sensor_info->sSize.h, HD_VIDEO_PXLFMT_YUV420, loff_dst, addr_dst);
 | 
			
		||||
			if(buf_pa){
 | 
			
		||||
				/* dst img */
 | 
			
		||||
				addr_dst[0] = buf_pa;
 | 
			
		||||
				loff_dst[0] = sensor_info->sSize.w;
 | 
			
		||||
				addr_dst[1] = addr_dst[0] + loff_dst[0] * sensor_info->sSize.h;
 | 
			
		||||
				loff_dst[1] = sensor_info->sSize.w;
 | 
			
		||||
				vf_init_ex(&frame, sensor_info->sSize.w, sensor_info->sSize.h, HD_VIDEO_PXLFMT_YUV420, loff_dst, addr_dst);
 | 
			
		||||
 | 
			
		||||
			FST_FILE fp = FileSys_OpenFile(MOIVE2_YUV_PATH, FST_OPEN_READ);
 | 
			
		||||
			if(fp){
 | 
			
		||||
				FileSys_ReadFile(fp, (UINT8*)buf_va, &buf_size, 0, NULL);
 | 
			
		||||
				FileSys_CloseFile(fp);
 | 
			
		||||
				memcpy((void*)buf_pa, (void*)(tmp_buf), yuv_size);
 | 
			
		||||
				tmp_buf += yuv_size;
 | 
			
		||||
 | 
			
		||||
				DBG_DUMP("enq %lu\n", i);
 | 
			
		||||
 | 
			
		||||
				while(1)
 | 
			
		||||
				{
 | 
			
		||||
					if(PhotoFast_Sliceencode2_Enq_Frame(&frame) == E_OK){
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
					else{
 | 
			
		||||
						vos_util_delay_ms(1);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				PhotoFast_Sliceencode2_Enq_Frame(&frame);
 | 
			
		||||
				PhotoFast_SliceEncode2_Close();
 | 
			
		||||
			}
 | 
			
		||||
			else{
 | 
			
		||||
				DBG_ERR("%s not found!\n", MOIVE2_YUV_PATH);
 | 
			
		||||
				DBG_ERR("allocate %lx failed!\n", yuv_size);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else{
 | 
			
		||||
			DBG_ERR("allocate %lx failed!\n", buf_size);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fastboot_set_done(BOOT_FLOW_MOVIE2);
 | 
			
		||||
		PhotoFast_SliceEncode2_Close();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
EXIT:
 | 
			
		||||
 | 
			
		||||
	DCF_Close(g_dcf_hdl);
 | 
			
		||||
	DCF_UnInstallID();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										35
									
								
								rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										35
									
								
								rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
				
			
			@ -1184,9 +1184,9 @@ static INT32 PhotoFast_CaptureStart(HD_VIDEO_FRAME *p_video_frame)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
#if POWERON_FAST_SLICE_ENC_VER2 == ENABLE
 | 
			
		||||
    return PhotoFast_Sliceencode2_Enq_Frame(p_video_frame);
 | 
			
		||||
	return PhotoFast_Sliceencode2_Enq_Frame(p_video_frame);
 | 
			
		||||
#else
 | 
			
		||||
	PhotoFast_SliceEncode(vprc_path, p_video_frame);
 | 
			
		||||
	return PhotoFast_SliceEncode(vprc_path, p_video_frame);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1427,6 +1427,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
 | 
			
		|||
	UINT32 max_cnt = 0;
 | 
			
		||||
	BOOL start_cap = FALSE;
 | 
			
		||||
	BOOL stop_flag = FALSE;
 | 
			
		||||
	BOOL led_flag = FALSE;
 | 
			
		||||
 | 
			
		||||
#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
    UIMenuStoreInfo *puiPara = sf_ui_para_get();
 | 
			
		||||
| 
						 | 
				
			
			@ -1485,9 +1486,10 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
 | 
			
		|||
	period = 1000 / max_cnt;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	DBG_DUMP("period = %lu ms\n", period);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	DBG_DUMP("period = %lu ms, max_cnt = %lu\n", period, max_cnt);
 | 
			
		||||
 | 
			
		||||
	PhotoFast_SliceEncode2_Open(vprc_path, max_cnt);
 | 
			
		||||
	nvt_cmdsys_runcmd("ae set_speed 0 128 700 700 100 ");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1546,7 +1548,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
 | 
			
		|||
			VOS_TICK t1, t2;
 | 
			
		||||
			UINT32 duration;
 | 
			
		||||
			UINT32 led_delay = 170;
 | 
			
		||||
 | 
			
		||||
            led_flag = FALSE;
 | 
			
		||||
			vos_perf_mark(&t1);
 | 
			
		||||
 | 
			
		||||
			/**************************************************
 | 
			
		||||
| 
						 | 
				
			
			@ -1565,7 +1567,8 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
 | 
			
		|||
				if((duration >= period) ||((period - duration) <= (led_delay + 17))
 | 
			
		||||
 | 
			
		||||
				){
 | 
			
		||||
					if(sf_is_night_mode(0) ==TRUE){
 | 
			
		||||
					if((FALSE == led_flag) && (sf_is_night_mode(0) ==TRUE)){
 | 
			
		||||
                        led_flag = TRUE;
 | 
			
		||||
						sf_ir_led_set(((2 == puiPara->NightMode) ? 2 : 1),puiPara->FlashLed, puiPara->NightMode,0);
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1719,7 +1722,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
 | 
			
		|||
		case DX_HUNTING_MODE_PHOTO_MOVIE:
 | 
			
		||||
 | 
			
		||||
			if (start_cap == TRUE) {
 | 
			
		||||
				// g_u32PrvCapCnt++;
 | 
			
		||||
				
 | 
			
		||||
				#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
				if(sf_is_night_mode(0) ==TRUE){
 | 
			
		||||
				    //DrvGPIO_IRLed_Turn_Onoff(0);
 | 
			
		||||
| 
						 | 
				
			
			@ -1732,11 +1735,12 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
 | 
			
		|||
                }
 | 
			
		||||
                else{
 | 
			
		||||
                    DBG_WRN("enq frame failed...\n");
 | 
			
		||||
                    /* release */
 | 
			
		||||
                    if ((hd_ret = hd_videoproc_release_out_buf(vprc_path, &video_frame))!= HD_OK) {
 | 
			
		||||
                        DBG_ERR("failed to hd_videoproc_release_out_buf, er=%d\n", (int)hd_ret);
 | 
			
		||||
                        goto exit;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
            		/* release */
 | 
			
		||||
            		if ((hd_ret = hd_videoproc_release_out_buf(vprc_path, &video_frame))!= HD_OK) {
 | 
			
		||||
            			DBG_ERR("failed to hd_videoproc_release_out_buf, er=%d\n", (int)hd_ret);
 | 
			
		||||
            			goto exit;
 | 
			
		||||
            		}
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
				if (g_u32PrvCapCnt >= max_cnt) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2086,7 +2090,12 @@ void Set_AEMODE(UINT32 id)
 | 
			
		|||
		if (id == 1){
 | 
			
		||||
				ae_manual.manual.mode = 1;
 | 
			
		||||
				#if HUNTING_CAMERA_MCU == ENABLE
 | 
			
		||||
				if (puiPara->NightMode == 0) {
 | 
			
		||||
                if(puiPara->CamMode == SF_CAM_MODE_VIDEO2)
 | 
			
		||||
                {
 | 
			
		||||
                    ae_manual.manual.expotime = 33333;
 | 
			
		||||
			        ae_manual.manual.iso_gain = ae_status.status_info.iso_gain[0]*ae_status.status_info.expotime[0]/33333;
 | 
			
		||||
                }
 | 
			
		||||
				else if (puiPara->NightMode == 0) {
 | 
			
		||||
					ae_manual.manual.expotime = 125000;//ae_status.status_info.expotime[0];
 | 
			
		||||
				    ae_manual.manual.iso_gain = ae_status.status_info.iso_gain[0]*ae_status.status_info.expotime[0]/125000;
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			@ -2266,7 +2275,7 @@ ER PhotoFast_Movie_Init(void)
 | 
			
		|||
	id++;
 | 
			
		||||
	mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
 | 
			
		||||
	mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
 | 
			
		||||
	mem_cfg.pool_info[id].blk_cnt = 1;
 | 
			
		||||
	mem_cfg.pool_info[id].blk_cnt = 3;  /* depending on cont shot */
 | 
			
		||||
	mem_cfg.pool_info[id].ddr_id = DDR_ID0;
 | 
			
		||||
 | 
			
		||||
	vendor_common_mem_relayout(&mem_cfg);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -639,7 +639,7 @@ static INT32 PhotoFast_SliceEncode_Alloc_Buffer(PhotoFast_MEM_Info* info, char*
 | 
			
		|||
#else
 | 
			
		||||
	if ((ret = hd_common_mem_alloc(name, &info->pa, (void **)&va_ptr, info->blk_size, ddr_id)) != HD_OK) {
 | 
			
		||||
#endif
 | 
			
		||||
		DBG_ERR("hd_common_mem_alloc failed(%d)\r\n", ret);
 | 
			
		||||
		DBG_ERR("hd_common_mem_alloc failed(size:%d name:%s)\r\n", ret, name);
 | 
			
		||||
		return E_SYS;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2085,7 +2085,7 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data)
 | 
			
		|||
		if(PhotoFast_SliceEncode_Alloc_Buffer_Retry(
 | 
			
		||||
				&slice_encode_screennail_info->bs_buf_mem_info,
 | 
			
		||||
				"slice_enc_screennail",
 | 
			
		||||
				10,
 | 
			
		||||
				50,
 | 
			
		||||
				100
 | 
			
		||||
		) != E_OK){
 | 
			
		||||
			goto EXIT;
 | 
			
		||||
| 
						 | 
				
			
			@ -2246,9 +2246,11 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data)
 | 
			
		|||
		param->cnt++;
 | 
			
		||||
		if(param->cnt >= param->max_cnt)
 | 
			
		||||
			break;
 | 
			
		||||
        #if SF_NO_SD_SEND == ENABLE
 | 
			
		||||
        if(fastboot_wait_done_timeout(BOOT_INIT_FILESYSOK, 1) != E_OK){
 | 
			
		||||
            goto EXIT;
 | 
			
		||||
        }
 | 
			
		||||
        #endif
 | 
			
		||||
	} while(1);
 | 
			
		||||
 | 
			
		||||
EXIT:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ INT32  gUITimeHour = 0;
 | 
			
		|||
INT32  gUITimeMinute = 0;
 | 
			
		||||
INT32  gUITimeSecond = 0;
 | 
			
		||||
 | 
			
		||||
INT32  gUIDateSetFmt = DATEFMT_YMD;
 | 
			
		||||
INT32  gUIDateSetFmt = DATEFMT_MDY;
 | 
			
		||||
INT32  gUITimeSetFmt = TIMEFMT_24HR;
 | 
			
		||||
 | 
			
		||||
void Validate_Date(INT32 *pYear, INT32 *pMonth, INT32 *pDay,
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ void DateTime_Init(void)
 | 
			
		|||
	gUIDateMonth = DEF_MONTH;
 | 
			
		||||
	gUIDateDay = DEF_DAY;
 | 
			
		||||
	gUITimeHour = gUITimeMinute = gUITimeSecond = 0;
 | 
			
		||||
	gUIDateSetFmt = DATEFMT_YMD;
 | 
			
		||||
	gUIDateSetFmt = DATEFMT_MDY;
 | 
			
		||||
	gUITimeSetFmt = TIMEFMT_24HR;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1761,6 +1761,7 @@ void sf_power_on_para_check_init(void)
 | 
			
		|||
	if(puiPara->DateStyle != SysGetFlag(FL_DateFormatIndex))
 | 
			
		||||
	{
 | 
			
		||||
		SysSetFlag(FL_DateFormatIndex, puiPara->DateStyle);
 | 
			
		||||
        SysSetFlag(FL_DATE_FORMAT, puiPara->DateStyle);
 | 
			
		||||
	}
 | 
			
		||||
	if(puiPara->Language != SysGetFlag(FL_LANGUAGE))
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user