1.自动模式p+v模式调整
This commit is contained in:
parent
95c1db834a
commit
537a6a1684
|
@ -209,6 +209,10 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void)
|
||||||
{
|
{
|
||||||
g_uiBootMode = DX_HUNTING_MODE_MOVIE;
|
g_uiBootMode = DX_HUNTING_MODE_MOVIE;
|
||||||
}
|
}
|
||||||
|
else if(SF_CAM_MODE_VIDEO2 == puiPara->CamMode)
|
||||||
|
{
|
||||||
|
g_uiBootMode = DX_HUNTING_MODE_MOVIE2;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE;
|
g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE;
|
||||||
|
|
|
@ -33,10 +33,11 @@
|
||||||
enum _DX_HUNTING_MODE //Must match with _HUNTING_MODE in UIInfo.h
|
enum _DX_HUNTING_MODE //Must match with _HUNTING_MODE in UIInfo.h
|
||||||
{
|
{
|
||||||
/* for hunting camera application */
|
/* for hunting camera application */
|
||||||
DX_HUNTING_MODE_PHOTO = 0,
|
DX_HUNTING_MODE_PHOTO = 0, /* PhotoFast */
|
||||||
DX_HUNTING_MODE_MOVIE,
|
DX_HUNTING_MODE_MOVIE, /* MovieFast */
|
||||||
DX_HUNTING_MODE_PHOTO_MOVIE,
|
DX_HUNTING_MODE_PHOTO_MOVIE, /* PhotoFast -> MovieFast */
|
||||||
DX_HUNTING_MODE_OTHER,
|
DX_HUNTING_MODE_OTHER, /* for boot linux */
|
||||||
|
DX_HUNTING_MODE_MOVIE2, /* MovieFast + sensor sized photo with slice encode */
|
||||||
/* for life camera application */
|
/* for life camera application */
|
||||||
DX_HUNTING_MODE_CAMERA_PHOTO = 100,
|
DX_HUNTING_MODE_CAMERA_PHOTO = 100,
|
||||||
DX_HUNTING_MODE_CAMERA_MOVIE,
|
DX_HUNTING_MODE_CAMERA_MOVIE,
|
||||||
|
|
|
@ -851,55 +851,13 @@ void flow_preview_get_path(HD_PATH_ID *pPath, FLOW_PREIVEW_PATH PathType, UINT32
|
||||||
|
|
||||||
extern void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
|
extern void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
|
||||||
extern void DrvGOIO_Turn_Onoff_IRCUT(UINT8 onoff);
|
extern void DrvGOIO_Turn_Onoff_IRCUT(UINT8 onoff);
|
||||||
int flow_preview(void)
|
|
||||||
|
INT32 flow_preview_load_sen_cfg(void)
|
||||||
{
|
{
|
||||||
int ret;
|
INT32 ret = E_OK;
|
||||||
// int join_ret;
|
HD_RESULT hd_ret = HD_OK;
|
||||||
VK_TASK_HANDLE handle_sensor = 0;
|
|
||||||
VK_TASK_HANDLE handle_cap_proc = 0;
|
|
||||||
VK_TASK_HANDLE handle_preview = 0;
|
|
||||||
// int policy;
|
|
||||||
PHOTO_SENSOR_INFO sen_cfg = {0};
|
PHOTO_SENSOR_INFO sen_cfg = {0};
|
||||||
PHOTO_SENSOR_INFO *pSenCfg = &sen_cfg;
|
PHOTO_SENSOR_INFO *pSenCfg = &sen_cfg;
|
||||||
HD_RESULT hd_ret;
|
|
||||||
// struct sched_param schedparam = {0};
|
|
||||||
T_CFLG cflg = {0};
|
|
||||||
FLGPTN flag_ptn;
|
|
||||||
|
|
||||||
#if (_PACKAGE_DISPLAY_)
|
|
||||||
VK_TASK_HANDLE handle_videoout = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(!flag_task){
|
|
||||||
if ((ret = vos_flag_create(&flag_task, &cflg, "flow_preview")) != E_OK) {
|
|
||||||
DBG_ERR("create flag failed!(%d)\n", ret);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// quick sensor setup
|
|
||||||
vos_flag_clr(flag_task, FLAG_SENSOR_TASK_EXIT);
|
|
||||||
handle_sensor = vos_task_create(thread_sensor, NULL, "init_sensor", 10, DEFAULT_TASK_STACK_SIZE);
|
|
||||||
if(!handle_sensor){
|
|
||||||
DBG_ERR("create thread_sensor failed\r\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
vos_task_resume(handle_sensor);
|
|
||||||
|
|
||||||
//hd_common_init(including vds), must wait until insmod_capture()
|
|
||||||
fastboot_wait_done(BOOT_INIT_CAPTURE);
|
|
||||||
|
|
||||||
// init hdal
|
|
||||||
ret = fastflow_common_init();
|
|
||||||
if (ret != HD_OK) {
|
|
||||||
DBG_ERR("init fail\r\n");
|
|
||||||
}
|
|
||||||
ret = flowpreview_mem_relayout();
|
|
||||||
if (ret != HD_OK) {
|
|
||||||
DBG_ERR("relayout fail\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
//load ae/awb/iq
|
//load ae/awb/iq
|
||||||
System_GetSensorInfo(0, SENSOR_AE_PATH, &(sen_cfg.ae_path));
|
System_GetSensorInfo(0, SENSOR_AE_PATH, &(sen_cfg.ae_path));
|
||||||
System_GetSensorInfo(0, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
|
System_GetSensorInfo(0, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
|
||||||
|
@ -988,8 +946,59 @@ int flow_preview(void)
|
||||||
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
|
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
|
||||||
DBG_ERR("vendor_isp_uninit fail(%d)\n", hd_ret);
|
DBG_ERR("vendor_isp_uninit fail(%d)\n", hd_ret);
|
||||||
}
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int flow_preview(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
// int join_ret;
|
||||||
|
VK_TASK_HANDLE handle_sensor = 0;
|
||||||
|
VK_TASK_HANDLE handle_cap_proc = 0;
|
||||||
|
VK_TASK_HANDLE handle_preview = 0;
|
||||||
|
// int policy;
|
||||||
|
// PHOTO_SENSOR_INFO sen_cfg = {0};
|
||||||
|
// PHOTO_SENSOR_INFO *pSenCfg = &sen_cfg;
|
||||||
|
// HD_RESULT hd_ret;
|
||||||
|
// struct sched_param schedparam = {0};
|
||||||
|
T_CFLG cflg = {0};
|
||||||
|
FLGPTN flag_ptn;
|
||||||
|
|
||||||
|
#if (_PACKAGE_DISPLAY_)
|
||||||
|
VK_TASK_HANDLE handle_videoout = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(!flag_task){
|
||||||
|
if ((ret = vos_flag_create(&flag_task, &cflg, "flow_preview")) != E_OK) {
|
||||||
|
DBG_ERR("create flag failed!(%d)\n", ret);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// quick sensor setup
|
||||||
|
vos_flag_clr(flag_task, FLAG_SENSOR_TASK_EXIT);
|
||||||
|
handle_sensor = vos_task_create(thread_sensor, NULL, "init_sensor", 10, DEFAULT_TASK_STACK_SIZE);
|
||||||
|
if(!handle_sensor){
|
||||||
|
DBG_ERR("create thread_sensor failed\r\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
vos_task_resume(handle_sensor);
|
||||||
|
|
||||||
|
//hd_common_init(including vds), must wait until insmod_capture()
|
||||||
|
fastboot_wait_done(BOOT_INIT_CAPTURE);
|
||||||
|
|
||||||
|
// init hdal
|
||||||
|
ret = fastflow_common_init();
|
||||||
|
if (ret != HD_OK) {
|
||||||
|
DBG_ERR("init fail\r\n");
|
||||||
|
}
|
||||||
|
ret = flowpreview_mem_relayout();
|
||||||
|
if (ret != HD_OK) {
|
||||||
|
DBG_ERR("relayout fail\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
flow_preview_load_sen_cfg();
|
||||||
vos_flag_clr(flag_task, FLAG_CAP_PROC_TASK_EXIT);
|
vos_flag_clr(flag_task, FLAG_CAP_PROC_TASK_EXIT);
|
||||||
handle_cap_proc = vos_task_create(thread_cap_proc, NULL, "cap_proc", 10, DEFAULT_TASK_STACK_SIZE);
|
handle_cap_proc = vos_task_create(thread_cap_proc, NULL, "cap_proc", 10, DEFAULT_TASK_STACK_SIZE);
|
||||||
if(!handle_cap_proc){
|
if(!handle_cap_proc){
|
||||||
|
|
|
@ -19,4 +19,5 @@ extern void flow_preview_close_module(void);
|
||||||
extern void flow_preview_uninit_module(void);
|
extern void flow_preview_uninit_module(void);
|
||||||
extern void flow_preview_set_stop_flag(BOOL flag);
|
extern void flow_preview_set_stop_flag(BOOL flag);
|
||||||
extern BOOL flow_preview_get_stop_flag(void);
|
extern BOOL flow_preview_get_stop_flag(void);
|
||||||
|
extern INT32 flow_preview_load_sen_cfg(void);
|
||||||
#endif
|
#endif
|
|
@ -634,7 +634,7 @@ static void insmod_encoder(void)
|
||||||
|
|
||||||
vos_perf_list_mark(__func__, __LINE__, 1);
|
vos_perf_list_mark(__func__, __LINE__, 1);
|
||||||
} else { //fastboot
|
} else { //fastboot
|
||||||
fwload_wait_done(CODE_SECTION_05);
|
fwload_wait_done(CODE_SECTION_06);
|
||||||
|
|
||||||
/* media encoder */
|
/* media encoder */
|
||||||
#if (_PACKAGE_VIDEO_)
|
#if (_PACKAGE_VIDEO_)
|
||||||
|
@ -967,7 +967,7 @@ static void fastboot(void)
|
||||||
vos_task_resume(handle_photo_filenaming);
|
vos_task_resume(handle_photo_filenaming);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case DX_HUNTING_MODE_MOVIE2:
|
||||||
case DX_HUNTING_MODE_MOVIE:
|
case DX_HUNTING_MODE_MOVIE:
|
||||||
case DX_HUNTING_MODE_CAMERA_MOVIE:
|
case DX_HUNTING_MODE_CAMERA_MOVIE:
|
||||||
|
|
||||||
|
@ -984,11 +984,7 @@ static void fastboot(void)
|
||||||
// #endif
|
// #endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// wait all text-code loaded
|
fwload_wait_done(CODE_SECTION_06);
|
||||||
fwload_wait_done(CODE_SECTION_10);
|
|
||||||
|
|
||||||
System_OnPowerPreInit();
|
|
||||||
System_OnVideoFastbootInit();
|
|
||||||
|
|
||||||
handle_movie_filenaming = vos_task_create(MovieFast_InitFileNamingThread, "init_fn", NULL, 10, 8192);
|
handle_movie_filenaming = vos_task_create(MovieFast_InitFileNamingThread, "init_fn", NULL, 10, 8192);
|
||||||
if (!handle_movie_filenaming) {
|
if (!handle_movie_filenaming) {
|
||||||
|
@ -997,7 +993,6 @@ static void fastboot(void)
|
||||||
else
|
else
|
||||||
vos_task_resume(handle_movie_filenaming);
|
vos_task_resume(handle_movie_filenaming);
|
||||||
|
|
||||||
fastboot_wait_done(BOOT_INIT_FILENAMINGOK);
|
|
||||||
|
|
||||||
handle_movie_moviemode = vos_task_create(MovieFast_InitMovieModeThread, "init_movie", NULL, 10, 8192);
|
handle_movie_moviemode = vos_task_create(MovieFast_InitMovieModeThread, "init_movie", NULL, 10, 8192);
|
||||||
if (!handle_movie_moviemode) {
|
if (!handle_movie_moviemode) {
|
||||||
|
@ -1005,7 +1000,11 @@ static void fastboot(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vos_task_resume(handle_movie_moviemode);
|
vos_task_resume(handle_movie_moviemode);
|
||||||
|
|
||||||
|
/* GxTime, for stamp */
|
||||||
|
fwload_wait_done(CODE_SECTION_10);
|
||||||
|
System_OnPowerPreInit();
|
||||||
|
System_OnVideoFastbootInit();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DX_HUNTING_MODE_OTHER: /* boot linux only */
|
case DX_HUNTING_MODE_OTHER: /* boot linux only */
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "PrjCfg.h"
|
#include "PrjCfg.h"
|
||||||
#include "sys_fwload.h"
|
#include "sys_fwload.h"
|
||||||
#include "sys_storage_partition.h"
|
#include "sys_storage_partition.h"
|
||||||
|
#include "DxHunting.h"
|
||||||
|
|
||||||
//#NT#PARTIAL_COMPRESS, we use rtos-main size + 1 block size
|
//#NT#PARTIAL_COMPRESS, we use rtos-main size + 1 block size
|
||||||
#define FW_PARTIAL_COMPRESS_WORK_BUF_SIZE 0x320000
|
#define FW_PARTIAL_COMPRESS_WORK_BUF_SIZE 0x320000
|
||||||
|
@ -30,11 +31,16 @@ static ID fwload_flg_id = 0;
|
||||||
static UINT32 UserSection_Load[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
static UINT32 UserSection_Load[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
|
|
||||||
//This array is sort by loading order
|
//This array is sort by loading order
|
||||||
static UINT32 UserSection_Order_full[] = {
|
static UINT32 UserSection_Order_common[] = {
|
||||||
CODE_SECTION_02, CODE_SECTION_03, CODE_SECTION_04, CODE_SECTION_05, CODE_SECTION_06,
|
CODE_SECTION_02, CODE_SECTION_03, CODE_SECTION_04, CODE_SECTION_05, CODE_SECTION_06,
|
||||||
CODE_SECTION_07, CODE_SECTION_08, CODE_SECTION_09, CODE_SECTION_10, FWSRV_PL_BURST_END_TAG
|
CODE_SECTION_07, CODE_SECTION_08, CODE_SECTION_09, CODE_SECTION_10, FWSRV_PL_BURST_END_TAG
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static UINT32 UserSection_Order_movie_fast_mode2[] = {
|
||||||
|
CODE_SECTION_02, CODE_SECTION_03, CODE_SECTION_04, CODE_SECTION_06, CODE_SECTION_05,
|
||||||
|
CODE_SECTION_07, CODE_SECTION_08, CODE_SECTION_09, CODE_SECTION_10, FWSRV_PL_BURST_END_TAG
|
||||||
|
};
|
||||||
|
|
||||||
int fwload_init(void)
|
int fwload_init(void)
|
||||||
{
|
{
|
||||||
vos_flag_create(&fwload_flg_id, NULL, "fwload_flg_id");
|
vos_flag_create(&fwload_flg_id, NULL, "fwload_flg_id");
|
||||||
|
@ -168,7 +174,14 @@ int fwload_partload(void)
|
||||||
|
|
||||||
// start partial load
|
// start partial load
|
||||||
void (*LoadCallback)(const UINT32 Idx) = UserSection_LoadCb;
|
void (*LoadCallback)(const UINT32 Idx) = UserSection_LoadCb;
|
||||||
UINT32 *SecOrderTable = UserSection_Order_full;
|
UINT32 *SecOrderTable = NULL;
|
||||||
|
|
||||||
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
|
||||||
|
SecOrderTable = UserSection_Order_movie_fast_mode2;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
SecOrderTable = UserSection_Order_common;
|
||||||
|
}
|
||||||
|
|
||||||
LoadCallback(CODE_SECTION_01); // 1st part has loaded by loader
|
LoadCallback(CODE_SECTION_01); // 1st part has loaded by loader
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,12 @@
|
||||||
#include "SysSensor.h"
|
#include "SysSensor.h"
|
||||||
#include <kwrap/debug.h>
|
#include <kwrap/debug.h>
|
||||||
#include "flow_boot_logo.h"
|
#include "flow_boot_logo.h"
|
||||||
|
#include "UIApp/PhotoFast/PhotoFastSliceEncode.h"
|
||||||
|
#include "UIAppPhoto_Param.h"
|
||||||
#if HUNTING_CAMERA_MCU == ENABLE
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
#include "sf_mcu.h"
|
#include <sf_mcu.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include "DxHunting.h"
|
||||||
//#define ENABLE 1
|
//#define ENABLE 1
|
||||||
//#define DISABLE 0
|
//#define DISABLE 0
|
||||||
|
|
||||||
|
@ -106,7 +109,22 @@
|
||||||
|
|
||||||
static HD_COMMON_MEM_INIT_CONFIG mem_cfg = {0};
|
static HD_COMMON_MEM_INIT_CONFIG mem_cfg = {0};
|
||||||
|
|
||||||
|
static void Movie_CommPoolInit_Mode1(void);
|
||||||
|
static void Movie_CommPoolInit_Mode2(void);
|
||||||
|
|
||||||
void Movie_CommPoolInit(void)
|
void Movie_CommPoolInit(void)
|
||||||
|
{
|
||||||
|
UINT32 mode = DrvGPIO_GetPhotoMovieModeFromMonitor();
|
||||||
|
|
||||||
|
if(mode == DX_HUNTING_MODE_MOVIE || mode == DX_HUNTING_MODE_PHOTO_MOVIE){
|
||||||
|
Movie_CommPoolInit_Mode1();
|
||||||
|
}
|
||||||
|
else{ /* DX_HUNTING_MODE_MOVIE2 */
|
||||||
|
Movie_CommPoolInit_Mode2();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Movie_CommPoolInit_Mode1(void)
|
||||||
{
|
{
|
||||||
UINT32 id=0;
|
UINT32 id=0;
|
||||||
UINT32 vcap_buf_size = 0;
|
UINT32 vcap_buf_size = 0;
|
||||||
|
@ -226,6 +244,78 @@ void Movie_CommPoolInit(void)
|
||||||
|
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MEM_POOL_INFO, (UINT32)&mem_cfg);
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MEM_POOL_INFO, (UINT32)&mem_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Movie_CommPoolInit_Mode2(void)
|
||||||
|
{
|
||||||
|
UINT32 id=0;
|
||||||
|
UINT32 vcap_buf_size = 0;
|
||||||
|
HD_VIDEO_PXLFMT vcap_fmt = HD_VIDEO_PXLFMT_RAW12;
|
||||||
|
|
||||||
|
const UINT32 vdo_size_w = 2592;
|
||||||
|
const UINT32 vdo_size_h = 1944;
|
||||||
|
|
||||||
|
const UINT32 main_size_w = 1920;
|
||||||
|
const UINT32 main_size_h = 1080;
|
||||||
|
|
||||||
|
const UINT32 clone_size_w = 640;
|
||||||
|
const UINT32 clone_size_h = 360;
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
/* raw */
|
||||||
|
else {
|
||||||
|
vcap_buf_size = VDO_RAW_BUFSIZE(vdo_size_w, vdo_size_h, vcap_fmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
#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 = 6;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* Main
|
||||||
|
*******************************************************************/
|
||||||
|
id ++;
|
||||||
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
|
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(main_size_w, main_size_h, HD_VIDEO_PXLFMT_YUV420);
|
||||||
|
mem_cfg.pool_info[id].blk_cnt = 4;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* Clone
|
||||||
|
*******************************************************************/
|
||||||
|
id ++;
|
||||||
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
|
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;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
|
||||||
|
extern MOVIE_ALG_INFO gMovie_Alg_Info[];
|
||||||
|
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
|
||||||
|
gMovie_Alg_Info[0].path13.ImgSize = (USIZE) {sensor_info->sSize.w, sensor_info->sSize.h};
|
||||||
|
|
||||||
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MEM_POOL_INFO, (UINT32)&mem_cfg);
|
||||||
|
}
|
||||||
|
|
||||||
void Movie_CommPool_AI2_Init(void)
|
void Movie_CommPool_AI2_Init(void)
|
||||||
{
|
{
|
||||||
#if (ALG_FUNC_AI2 == ENABLE)
|
#if (ALG_FUNC_AI2 == ENABLE)
|
||||||
|
|
|
@ -32,7 +32,12 @@
|
||||||
#include "DxHunting.h"
|
#include "DxHunting.h"
|
||||||
#include "flow_preview.h"
|
#include "flow_preview.h"
|
||||||
#include <kwrap/cmdsys.h>
|
#include <kwrap/cmdsys.h>
|
||||||
|
#include "UIApp/PhotoFast/PhotoFast.h"
|
||||||
|
#include "UIApp/PhotoFast/PhotoFastSliceEncode.h"
|
||||||
|
#include "UIApp/PhotoFast/PhotoFastCapDateImprint.h"
|
||||||
|
#include "UIAppPhoto_Param.h"
|
||||||
|
#include "sys_fwload.h"
|
||||||
|
#include "../lfqueue/lfqueue.h"
|
||||||
#if defined(_UI_STYLE_LVGL_)
|
#if defined(_UI_STYLE_LVGL_)
|
||||||
#include "flow_lvgl.h"
|
#include "flow_lvgl.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -57,14 +62,30 @@
|
||||||
#define FLG_EXE_MOVIE_RECSTART FLGPTN_BIT(1) ///< trigger display task
|
#define FLG_EXE_MOVIE_RECSTART FLGPTN_BIT(1) ///< trigger display task
|
||||||
#define FLG_EXE_MOVIE_RECSTOP FLGPTN_BIT(2) ///< stop task
|
#define FLG_EXE_MOVIE_RECSTOP FLGPTN_BIT(2) ///< stop task
|
||||||
|
|
||||||
|
#define VDO_YUV_BUFSIZE(w, h, pxlfmt) ALIGN_CEIL_4(((w) * (h) * HD_VIDEO_PXLFMT_BPP(pxlfmt)) / 8)
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
MOVIEFAST_IQ_VIDEO,
|
||||||
|
MOVIEFAST_IQ_PHOTO,
|
||||||
|
} MOVIEFAST_IQ_CFG;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
void* va;
|
||||||
|
UINT32 size;
|
||||||
|
char path[256];
|
||||||
|
HD_VIDEO_FRAME frame;
|
||||||
|
HD_PATH_ID vprc_path_id;
|
||||||
|
} MOVIEFAST_WRITE_QUEUE_PARAM;
|
||||||
/**********************************************************************************
|
/**********************************************************************************
|
||||||
* independent thumbnail
|
* independent thumbnail
|
||||||
*********************************************************************************/
|
*********************************************************************************/
|
||||||
|
|
||||||
static char thumb_current_path_main[256] = {'\0'};
|
static char thumb_current_path_main[256] = {'\0'};
|
||||||
static char thumb_current_path_clone[256] = {'\0'};
|
static char thumb_current_path_clone[256] = {'\0'};
|
||||||
|
static lfqueue_t write_queue = {0};
|
||||||
|
|
||||||
#define MOVIE_ROOT_PATH "A:\\Novatek\\"
|
#define MOVIE_ROOT_PATH "A:\\Novatek\\"
|
||||||
|
#define MOIVE2_YUV_PATH "A:\\MOVIE2.yuv420"
|
||||||
#define FILE_SN_MAX 99999
|
#define FILE_SN_MAX 99999
|
||||||
#define FILEDB_MAX_NUM 5000
|
#define FILEDB_MAX_NUM 5000
|
||||||
#define MOVIE_THUMB_WIDTH 640
|
#define MOVIE_THUMB_WIDTH 640
|
||||||
|
@ -78,9 +99,13 @@ static UINT32 g_moviefast_tsk_run = 1;
|
||||||
static UINT32 g_moviefast_poweroff_tsk_run = 1;
|
static UINT32 g_moviefast_poweroff_tsk_run = 1;
|
||||||
static THREAD_HANDLE g_moviefast_tsk_id = 0;
|
static THREAD_HANDLE g_moviefast_tsk_id = 0;
|
||||||
static THREAD_HANDLE g_moviefast_power_off_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_bIsRecStatus = FALSE;
|
||||||
static VOS_TICK g_rec_start_tick = 0;
|
static VOS_TICK g_rec_start_tick = 0;
|
||||||
|
static VOS_TICK g_alg_start_time= 0;
|
||||||
|
static VOS_TICK g_alg_end_time= 0;
|
||||||
|
static VOS_TICK g_vprc_trigger_frm_time= 0;
|
||||||
|
static UINT32 g_vprc_trigger_frm_count= 0;
|
||||||
|
|
||||||
//local function
|
//local function
|
||||||
static void MovieFast_OnRecStart(void);
|
static void MovieFast_OnRecStart(void);
|
||||||
|
@ -89,6 +114,7 @@ static void MovieFast_CmdTsk_Exit(void);
|
||||||
static int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSrc);
|
static int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSrc);
|
||||||
static void MovieFast_ShutDown(void);
|
static void MovieFast_ShutDown(void);
|
||||||
static void MovieFast_Close(void);
|
static void MovieFast_Close(void);
|
||||||
|
static void MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_CFG cfg);
|
||||||
|
|
||||||
static VOID MovieFast_Set_RecStartTick(VOS_TICK tick)
|
static VOID MovieFast_Set_RecStartTick(VOS_TICK tick)
|
||||||
{
|
{
|
||||||
|
@ -247,6 +273,14 @@ static void MovieFast_ShutDown(void)
|
||||||
#if POWERON_BOOT_REPORT == ENABLE
|
#if POWERON_BOOT_REPORT == ENABLE
|
||||||
|
|
||||||
DBG_DUMP("PhotoMovie mode = %u\n", mode);
|
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();
|
vos_perf_list_dump();
|
||||||
|
|
||||||
|
@ -284,6 +318,15 @@ static void MovieFast_ShutDown(void)
|
||||||
|
|
||||||
#if POWERON_BOOT_REPORT == ENABLE
|
#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();
|
vos_perf_list_dump();
|
||||||
if(mode == DX_HUNTING_MODE_PHOTO_MOVIE){
|
if(mode == DX_HUNTING_MODE_PHOTO_MOVIE){
|
||||||
MovieFast_PV_Info_Dump();
|
MovieFast_PV_Info_Dump();
|
||||||
|
@ -464,7 +507,7 @@ static void MovieFast_RecMovieStamp(void)
|
||||||
NULL);
|
NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if 1
|
#if 0
|
||||||
// set rawenc path 1st movie stamp
|
// set rawenc path 1st movie stamp
|
||||||
if (movie_rec_mask & mask) {
|
if (movie_rec_mask & mask) {
|
||||||
Width = gMovie_Rec_Info[i].size.w;
|
Width = gMovie_Rec_Info[i].size.w;
|
||||||
|
@ -664,6 +707,7 @@ static void MovieFast_OnRecStart(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_UI_STYLE_LVGL_)
|
#if defined(_UI_STYLE_LVGL_)
|
||||||
|
fwload_wait_done(CODE_SECTION_05);
|
||||||
flow_lv_init();
|
flow_lv_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -821,6 +865,45 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void MovieFast_WriteFile_Task(void* arg)
|
||||||
|
{
|
||||||
|
lfqueue_t* queue = (lfqueue_t*)arg;
|
||||||
|
MOVIEFAST_WRITE_QUEUE_PARAM* param;
|
||||||
|
|
||||||
|
fastboot_wait_done(BOOT_INIT_FILESYSOK);
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
param = (MOVIEFAST_WRITE_QUEUE_PARAM*) lfqueue_deq(queue);
|
||||||
|
if(param == NULL){
|
||||||
|
vos_util_delay_ms(5);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(param->va){
|
||||||
|
DBG_DUMP("Write %s\n", param->path);
|
||||||
|
|
||||||
|
FST_FILE fp = FileSys_OpenFile(param->path, FST_OPEN_ALWAYS | FST_OPEN_WRITE);
|
||||||
|
FileSys_WriteFile(fp, (UINT8*)param->va, ¶m->size, 0, NULL);
|
||||||
|
FileSys_CloseFile(fp);
|
||||||
|
|
||||||
|
free(param->va);
|
||||||
|
}
|
||||||
|
else if(param->frame.phy_addr[0]){
|
||||||
|
DBG_DUMP("Write %s\n", param->path);
|
||||||
|
|
||||||
|
FST_FILE fp = FileSys_OpenFile(param->path, FST_OPEN_ALWAYS | FST_OPEN_WRITE);
|
||||||
|
FileSys_WriteFile(fp, (UINT8*)param->frame.phy_addr[0], ¶m->size, 0, NULL);
|
||||||
|
FileSys_CloseFile(fp);
|
||||||
|
|
||||||
|
hd_videoproc_release_out_buf(param->vprc_path_id, ¶m->frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(param){
|
||||||
|
free(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 value)
|
static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 value)
|
||||||
{
|
{
|
||||||
//static UINT32 u32Cnt = 0;
|
//static UINT32 u32Cnt = 0;
|
||||||
|
@ -860,8 +943,6 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3
|
||||||
|
|
||||||
case MOVIE_USER_CB_EVENT_JENC_DONE:{
|
case MOVIE_USER_CB_EVENT_JENC_DONE:{
|
||||||
|
|
||||||
fastboot_wait_done(BOOT_INIT_FILESYSOK);
|
|
||||||
|
|
||||||
MOVIE_JPEG_INFO *ptr = (MOVIE_JPEG_INFO*)value;
|
MOVIE_JPEG_INFO *ptr = (MOVIE_JPEG_INFO*)value;
|
||||||
|
|
||||||
if(ptr->sign == MAKEFOURCC('T', 'H', 'U', 'M')){
|
if(ptr->sign == MAKEFOURCC('T', 'H', 'U', 'M')){
|
||||||
|
@ -892,11 +973,26 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3
|
||||||
#endif
|
#endif
|
||||||
DBG_DUMP("MOVIE_USER_CB_EVENT_JENC_DONE %s\n", tmp);
|
DBG_DUMP("MOVIE_USER_CB_EVENT_JENC_DONE %s\n", tmp);
|
||||||
|
|
||||||
FST_FILE fp = FileSys_OpenFile(tmp, FST_CREATE_ALWAYS | FST_OPEN_WRITE);
|
MOVIEFAST_WRITE_QUEUE_PARAM* param = (MOVIEFAST_WRITE_QUEUE_PARAM*) malloc(sizeof(MOVIEFAST_WRITE_QUEUE_PARAM));
|
||||||
|
|
||||||
FileSys_WriteFile(fp, (UINT8*)ptr->addr_va, &ptr->size, 0, NULL);
|
if(param){
|
||||||
FileSys_FlushFile(fp);
|
|
||||||
FileSys_CloseFile(fp);
|
memset(param, 0, sizeof(MOVIEFAST_WRITE_QUEUE_PARAM));
|
||||||
|
param->size = ptr->size;
|
||||||
|
param->va = (void *)malloc(param->size);
|
||||||
|
snprintf(param->path, sizeof(param->path), tmp);
|
||||||
|
if(param->va){
|
||||||
|
memcpy(param->va, (void*)ptr->addr_va, param->size);
|
||||||
|
while (lfqueue_enq(&write_queue, (void*) param) == -1)
|
||||||
|
{
|
||||||
|
DBG_ERR("ENQ Full ?\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DBG_ERR("malloc thumb va err!\n");
|
||||||
|
free(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
thumb_current_path[0] = '\0';
|
thumb_current_path[0] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -939,6 +1035,7 @@ int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSr
|
||||||
return E_OK;
|
return E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg)
|
THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg)
|
||||||
{
|
{
|
||||||
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){
|
||||||
|
@ -979,21 +1076,62 @@ void MovieFast_Set_Shutdown_flag(void)
|
||||||
vos_flag_set(MOVIEFAST_FLG_ID, FLGMOVIEFAST_SHUTDOWN);
|
vos_flag_set(MOVIEFAST_FLG_ID, FLGMOVIEFAST_SHUTDOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_CFG cfg)
|
||||||
|
{
|
||||||
|
MOVIE_SENSOR_INFO sen_cfg = {0};
|
||||||
|
MOVIE_SENSOR_INFO *pSenCfg = &sen_cfg;
|
||||||
|
UINT32 size = sizeof(pSenCfg->iq_path.path) - 1;
|
||||||
|
|
||||||
|
for (int i = 0; i < SENSOR_CAPS_COUNT; i++) {
|
||||||
|
// get sensor info
|
||||||
|
sen_cfg.rec_id = _CFG_REC_ID_1 + i;
|
||||||
|
System_GetSensorInfo(i, SENSOR_DRV_CFG, &(sen_cfg.vcap_cfg));
|
||||||
|
System_GetSensorInfo(i, SENSOR_SENOUT_FMT, &(sen_cfg.senout_pxlfmt));
|
||||||
|
System_GetSensorInfo(i, SENSOR_CAPOUT_FMT, &(sen_cfg.capout_pxlfmt));
|
||||||
|
System_GetSensorInfo(i, SENSOR_DATA_LANE, &(sen_cfg.data_lane));
|
||||||
|
System_GetSensorInfo(i, SENSOR_AE_PATH, &(sen_cfg.ae_path));
|
||||||
|
System_GetSensorInfo(i, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
|
||||||
|
System_GetSensorInfo(i, SENSOR_IQ_PATH, &(sen_cfg.iq_path));
|
||||||
|
System_GetSensorInfo(i, SENSOR_IQ_SHADING_PATH, &(sen_cfg.iq_shading_path));
|
||||||
|
System_GetSensorInfo(i, SENSOR_IQ_DPC_PATH, &(sen_cfg.iq_dpc_path));
|
||||||
|
System_GetSensorInfo(i, SENSOR_IQ_LDC_PATH, &(sen_cfg.iq_ldc_path));
|
||||||
|
|
||||||
|
if(cfg == MOVIEFAST_IQ_VIDEO){
|
||||||
|
strncpy(pSenCfg->iq_path.path, "/isp/iq/os05b10_iq_0_vid", size);
|
||||||
|
}
|
||||||
|
else{ /* MOVIEFAST_IQ_PHOTO */
|
||||||
|
|
||||||
|
if(sf_is_night_mode(0) ==TRUE)
|
||||||
|
strncpy(pSenCfg->iq_path.path, "/isp/iq/os05b10_iq_0", size);
|
||||||
|
else
|
||||||
|
strncpy(pSenCfg->iq_path.path, "/isp/iq/os05b10_iq_0_cap", size);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_SENSOR_INFO, (UINT32)&sen_cfg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
MOVIEMULTI_MAX_LINK_INFO MaxLinkInfo = {1, 0, 0, 1, 0}; //Img, Disp, Wifi, AudCap, EthCam
|
MOVIEMULTI_MAX_LINK_INFO MaxLinkInfo = {1, 0, 0, 1, 0}; //Img, Disp, Wifi, AudCap, EthCam
|
||||||
MOVIE_SENSOR_INFO sen_cfg = {0};
|
|
||||||
MOVIE_SENSOR_INFO *pSenCfg = &sen_cfg;
|
|
||||||
HD_RESULT hd_ret;
|
|
||||||
|
|
||||||
DBG_FUNC("\r\n");
|
DBG_FUNC("\r\n");
|
||||||
|
UINT32 rec_type = MovieMapping_GetRecType(UI_GetData(FL_MOVIE_SIZE));
|
||||||
|
|
||||||
Movie_CommPoolInit();
|
Movie_CommPoolInit();
|
||||||
|
|
||||||
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
|
||||||
|
|
||||||
|
//UI_SetData(FL_MOVIE_SIZE, MOVIE_SIZE_CLONE_1920x1080P30_1280x720P30);
|
||||||
|
Set_NIGHTMODE(0, 0);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Set_NIGHTMODE(0, 1);
|
||||||
|
Set_AEMODE(0);
|
||||||
|
}
|
||||||
|
|
||||||
MovieFast_SetRecInfoByUISetting();
|
MovieFast_SetRecInfoByUISetting();
|
||||||
Set_NIGHTMODE(0, 1);
|
|
||||||
Set_AEMODE(0);
|
|
||||||
|
|
||||||
#if (_PACKAGE_DISPLAY_)
|
#if (_PACKAGE_DISPLAY_)
|
||||||
gMovie_Disp_Info.vout_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH);
|
gMovie_Disp_Info.vout_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH);
|
||||||
|
@ -1007,49 +1145,16 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
||||||
MaxLinkInfo.MaxDispLink = 1;
|
MaxLinkInfo.MaxDispLink = 1;
|
||||||
#endif
|
#endif
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MAX_LINK_INFO, (UINT32) &MaxLinkInfo);
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MAX_LINK_INFO, (UINT32) &MaxLinkInfo);
|
||||||
for (i = 0; i < SENSOR_CAPS_COUNT; i++) {
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Rec_Info[0]);
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Rec_Info[i]);
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Clone_Info[0]);
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Clone_Info[i]);
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_ALG_INFO, (UINT32)&gMovie_Alg_Info[0]);
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_ALG_INFO, (UINT32)&gMovie_Alg_Info[0]);
|
|
||||||
// get sensor info
|
|
||||||
sen_cfg.rec_id = _CFG_REC_ID_1 + i;
|
|
||||||
System_GetSensorInfo(i, SENSOR_DRV_CFG, &(sen_cfg.vcap_cfg));
|
|
||||||
System_GetSensorInfo(i, SENSOR_SENOUT_FMT, &(sen_cfg.senout_pxlfmt));
|
|
||||||
System_GetSensorInfo(i, SENSOR_CAPOUT_FMT, &(sen_cfg.capout_pxlfmt));
|
|
||||||
System_GetSensorInfo(i, SENSOR_DATA_LANE, &(sen_cfg.data_lane));
|
|
||||||
System_GetSensorInfo(i, SENSOR_AE_PATH, &(sen_cfg.ae_path));
|
|
||||||
System_GetSensorInfo(i, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
|
|
||||||
System_GetSensorInfo(i, SENSOR_IQ_PATH, &(sen_cfg.iq_path));
|
|
||||||
System_GetSensorInfo(i, SENSOR_IQ_SHADING_PATH, &(sen_cfg.iq_shading_path));
|
|
||||||
System_GetSensorInfo(i, SENSOR_IQ_DPC_PATH, &(sen_cfg.iq_dpc_path));
|
|
||||||
System_GetSensorInfo(i, SENSOR_IQ_LDC_PATH, &(sen_cfg.iq_ldc_path));
|
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_SENSOR_INFO, (UINT32)&sen_cfg);
|
|
||||||
#if (SENSOR_SIEPATGEN == ENABLE)
|
|
||||||
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_VCAP_PAT_GEN, HD_VIDEOCAP_SEN_PAT_COLORBAR);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((hd_ret = vendor_isp_init()) != HD_OK) {
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_MOVIE2){
|
||||||
DBG_ERR("vendor_isp_init fail(%d)\n", hd_ret);
|
MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_VIDEO);
|
||||||
}
|
}
|
||||||
if (strlen(pSenCfg->iq_path.path) != 0) {
|
else{
|
||||||
IQT_DTSI_INFO iq_dtsi_info;
|
MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_PHOTO);
|
||||||
iq_dtsi_info.id = pSenCfg->iq_path.id;
|
}
|
||||||
|
|
||||||
strncpy(iq_dtsi_info.node_path, "/isp/iq/os05b10_iq_0_vid", 31);
|
|
||||||
strncpy(iq_dtsi_info.file_path, "null", DTSI_NAME_LENGTH);
|
|
||||||
|
|
||||||
//DBG_ERR("vendor_isp_set_iq %s\r\n",iq_dtsi_info.node_path);
|
|
||||||
|
|
||||||
iq_dtsi_info.buf_addr = (UINT8 *)pSenCfg->iq_path.addr;
|
|
||||||
if ((hd_ret = vendor_isp_set_iq(IQT_ITEM_RLD_DTSI, &iq_dtsi_info)) != HD_OK) {
|
|
||||||
DBG_ERR("vendor_isp_set_iq fail(%d)\r\n", hd_ret);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
|
|
||||||
DBG_ERR("vendor_isp_uninit fail(%d)\n", hd_ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
MovieMapping_GetStreamInfo(UI_GetData(FL_MOVIE_SIZE), (UINT32)&gMovie_Strm_Info);
|
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_STREAM_INFO, (UINT32)&gMovie_Strm_Info);
|
||||||
ImageApp_MovieMulti_Config(MOVIE_CONFIG_AUDIO_INFO, (UINT32)&gMovie_Audio_Info);
|
ImageApp_MovieMulti_Config(MOVIE_CONFIG_AUDIO_INFO, (UINT32)&gMovie_Audio_Info);
|
||||||
|
@ -1063,7 +1168,6 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
||||||
// User Callback
|
// User Callback
|
||||||
ImageApp_MovieMulti_RegUserCB(MovieFast_UserEventCb);
|
ImageApp_MovieMulti_RegUserCB(MovieFast_UserEventCb);
|
||||||
|
|
||||||
ImageApp_MovieMulti_SetParam(_CFG_CTRL_ID, MOVIEMULTI_PARAM_FILE_UTC_AUTO_EN, TRUE);
|
|
||||||
|
|
||||||
#if (MOVIE_DIRECT_FUNC == ENABLE)
|
#if (MOVIE_DIRECT_FUNC == ENABLE)
|
||||||
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_VCAP_OUTFUNC, HD_VIDEOCAP_OUTFUNC_DIRECT);
|
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_VCAP_OUTFUNC, HD_VIDEOCAP_OUTFUNC_DIRECT);
|
||||||
|
@ -1071,10 +1175,34 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
||||||
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PRARM_FILEDB_MAX_MUM, 5000);
|
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PRARM_FILEDB_MAX_MUM, 5000);
|
||||||
|
|
||||||
|
|
||||||
MOVIEMULTI_IPL_SIZE_INFO ipl_size={{2560,1440}, 30};
|
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);
|
||||||
|
|
||||||
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};
|
||||||
|
|
||||||
|
/* 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)
|
||||||
|
{
|
||||||
|
/* 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#if (ANR_FUNC == ENABLE)
|
#if (ANR_FUNC == ENABLE)
|
||||||
HD_AUDIOCAP_ANR audio_cfg_param = {0};
|
HD_AUDIOCAP_ANR audio_cfg_param = {0};
|
||||||
|
@ -1098,8 +1226,42 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
||||||
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV, TRUE);
|
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV, TRUE);
|
||||||
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV_FLUSH_SEC, 2);
|
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV_FLUSH_SEC, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (1){//gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.w && gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.h) {
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
|
||||||
|
|
||||||
|
HD_PATH_ID vprc_in_id = ImageApp_MovieMulti_GetVprc3DNRPort(_CFG_REC_ID_1);
|
||||||
|
HD_PATH_ID vprc_main_id = ImageApp_MovieMulti_GetVprcPort(_CFG_REC_ID_1, IAMOVIE_VPRC_EX_MAIN);
|
||||||
|
HD_PATH_ID vprc_alg_id = ImageApp_MovieMulti_GetVprcPort(_CFG_REC_ID_1, IAMOVIE_VPRC_EX_ALG);
|
||||||
|
HD_PATH_ID vprc_clone_id = ImageApp_MovieMulti_GetVprcPort(_CFG_REC_ID_1, IAMOVIE_VPRC_EX_CLONE);
|
||||||
|
HD_VIDEOPROC_OUT_EX vprc_out = {0};
|
||||||
|
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);
|
||||||
|
hd_videoproc_set(vprc_in_id, HD_VIDEOPROC_PARAM_IN, &vprc_in);
|
||||||
|
|
||||||
|
/* alg */
|
||||||
|
hd_videoproc_get(vprc_alg_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
|
||||||
|
vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
|
||||||
|
hd_videoproc_set(vprc_alg_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
|
||||||
|
|
||||||
|
/* main */
|
||||||
|
hd_videoproc_get(vprc_main_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1){//gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.w && gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.h) {
|
||||||
ImageApp_MovieMulti_ImgLinkForAlg((_CFG_REC_ID_1 ), _CFG_ALG_PATH3, ENABLE, TRUE);
|
ImageApp_MovieMulti_ImgLinkForAlg((_CFG_REC_ID_1 ), _CFG_ALG_PATH3, ENABLE, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1114,9 +1276,95 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
|
||||||
//ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_IMGCAP_THUM_WITH_EXIF, TRUE); // enable if wants exif in mp4 thumbnail
|
//ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_IMGCAP_THUM_WITH_EXIF, TRUE); // enable if wants exif in mp4 thumbnail
|
||||||
MovieExe_InitExif();
|
MovieExe_InitExif();
|
||||||
#endif
|
#endif
|
||||||
|
if(lfqueue_init(&write_queue)){
|
||||||
|
DBG_ERR("init write_queue failed\n");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if ((g_moviefast_write_tsk_id = vos_task_create(MovieFast_WriteFile_Task, &write_queue, "MovieFastThumTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
|
||||||
|
DBG_ERR("MovieFast_Thumb_Task create failed.\r\n");
|
||||||
|
} else {
|
||||||
|
vos_task_resume(g_moviefast_write_tsk_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MovieFast_InstallID();
|
MovieFast_InstallID();
|
||||||
vos_util_delay_ms(132);
|
|
||||||
|
{
|
||||||
|
HD_VIDEO_FRAME frame;
|
||||||
|
HD_PATH_ID alg_path;
|
||||||
|
BOOL stop = FALSE;
|
||||||
|
UINT32 ae_cnt = 0;
|
||||||
|
UINT32 stop_cnt = 0;
|
||||||
|
BOOL ae_locked = FALSE;
|
||||||
|
|
||||||
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
|
||||||
|
ae_cnt = 6;
|
||||||
|
stop_cnt = 12;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
ae_cnt = 9999;
|
||||||
|
stop_cnt = 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3);
|
||||||
|
|
||||||
|
vos_perf_mark(&g_alg_start_time);
|
||||||
|
|
||||||
|
do {
|
||||||
|
|
||||||
|
hd_videoproc_pull_out_buf(alg_path, &frame, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS);
|
||||||
|
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
} while(stop == FALSE);
|
||||||
|
|
||||||
|
vos_perf_mark(&g_alg_end_time);
|
||||||
|
}
|
||||||
|
|
||||||
if ((g_moviefast_power_off_tsk_id = vos_task_create(MovieFast_PowerOffTsk, 0, "MovieFastPwrTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
|
if ((g_moviefast_power_off_tsk_id = vos_task_create(MovieFast_PowerOffTsk, 0, "MovieFastPwrTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
|
||||||
DBG_ERR("MovieFast_PowerOffTsk create failed.\r\n");
|
DBG_ERR("MovieFast_PowerOffTsk create failed.\r\n");
|
||||||
|
@ -1147,6 +1395,65 @@ static void MovieFast_Close(void)
|
||||||
|
|
||||||
ImageApp_MovieMulti_Close();
|
ImageApp_MovieMulti_Close();
|
||||||
|
|
||||||
|
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
|
||||||
|
|
||||||
|
HD_PATH_ID alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3);
|
||||||
|
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
|
||||||
|
UINT32 buf_pa = 0;
|
||||||
|
void* buf_va = 0;
|
||||||
|
|
||||||
|
PhotoFast_Movie_Init();
|
||||||
|
|
||||||
|
PhotoFast_SliceEncode_Open(alg_path);
|
||||||
|
PhotoFast_SliceEncode2_Open(alg_path, 1);
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
PhotoFast_Sliceencode2_Enq_Frame(&frame);
|
||||||
|
PhotoFast_SliceEncode2_Close();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DBG_ERR("%s not found!\n", MOIVE2_YUV_PATH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DBG_ERR("allocate %lx failed!\n", buf_size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DCF_Close(g_dcf_hdl);
|
DCF_Close(g_dcf_hdl);
|
||||||
DCF_UnInstallID();
|
DCF_UnInstallID();
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "vf_gfx.h"
|
#include "vf_gfx.h"
|
||||||
#include "GxTime.h"
|
#include "GxTime.h"
|
||||||
#include "hd_type.h"
|
#include "hd_type.h"
|
||||||
|
#include "sys_fwload.h"
|
||||||
|
|
||||||
#if MOVIE_ISP_LOG
|
#if MOVIE_ISP_LOG
|
||||||
#include "vendor_isp.h"
|
#include "vendor_isp.h"
|
||||||
|
@ -328,6 +329,8 @@ static void MovieStamp_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen)
|
||||||
#endif
|
#endif
|
||||||
UINT32 MovieStamp_TriggerUpdateChk(void)
|
UINT32 MovieStamp_TriggerUpdateChk(void)
|
||||||
{
|
{
|
||||||
|
extern int fwload_wait_done(CODE_SECTION section);
|
||||||
|
fwload_wait_done(CODE_SECTION_10);
|
||||||
|
|
||||||
struct tm CurDateTime;
|
struct tm CurDateTime;
|
||||||
GxTime_GetTime(&CurDateTime);
|
GxTime_GetTime(&CurDateTime);
|
||||||
|
@ -1490,7 +1493,7 @@ void MovieStamp_VsFontConfig(UINT32 uiVEncOutPortId)
|
||||||
YUV_GET_RGB(y, u, v, r, g, b);
|
YUV_GET_RGB(y, u, v, r, g, b);
|
||||||
|
|
||||||
#if defined(_UI_STYLE_LVGL_)
|
#if defined(_UI_STYLE_LVGL_)
|
||||||
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((LV_COLOR_GET_A32((lv_color32_t){.full = LV_USER_CFG_MOVIE_DATESTAMP_COLOR_BACKGROUND}) >> 4) << 12) | ((g>>4)<<4) | (b>>4); //0x0000;
|
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((LV_COLOR_GET_A32((lv_color32_t){.full = LV_USER_CFG_STAMP_COLOR_BACKGROUND}) >> 4) << 12) | ((g>>4)<<4) | (b>>4); //0x0000;
|
||||||
#else
|
#else
|
||||||
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((r>>4)<<8) | ((g>>4)<<4) | (b>>4); //0x0000;
|
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((r>>4)<<8) | ((g>>4)<<4) | (b>>4); //0x0000;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
#else
|
#else
|
||||||
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
|
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
|
||||||
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_40M /* Max slice encode size */
|
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_40M /* Max slice encode size */
|
||||||
#define PHOTO_SLICE_ENC_MIN_CAP_SIZE UIAPP_PHOTO_SIZE_2M /* UI Menu only display options which size is larger than PHOTO_SLICE_ENC_MIN_CAP_SIZE */
|
#define PHOTO_MIN_CAP_SIZE UIAPP_PHOTO_SIZE_2M /* UI Menu only display options which size is larger than PHOTO_SLICE_ENC_MIN_CAP_SIZE */
|
||||||
#else
|
#else
|
||||||
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_12M
|
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_12M
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "PhotoFastCapDateImprint.h"
|
#include "PhotoFastCapDateImprint.h"
|
||||||
#include "DCF.h"
|
#include "DCF.h"
|
||||||
#include "flow_boot_linux.h"
|
#include "flow_boot_linux.h"
|
||||||
|
#include "UIAppPhoto_Param.h"
|
||||||
#if HUNTING_CAMERA_MCU == ENABLE
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
#include <sf_mcu.h>
|
#include <sf_mcu.h>
|
||||||
#include "sf_led.h"
|
#include "sf_led.h"
|
||||||
|
@ -116,7 +117,7 @@ INT32 PhotoFast_FileNaming_MakePath(UINT32 filetype, CHAR *pPath, UINT32 uiPathI
|
||||||
INT32 PhotoFast_Phy2LogID(UINT32 id);
|
INT32 PhotoFast_Phy2LogID(UINT32 id);
|
||||||
THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *ptr);
|
THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *ptr);
|
||||||
UINT32 PhotoFast_GetExpectSize_RhoBRCrtl(UINT32 ImgIdx, BOOL bPrimaryOnly);
|
UINT32 PhotoFast_GetExpectSize_RhoBRCrtl(UINT32 ImgIdx, BOOL bPrimaryOnly);
|
||||||
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId);
|
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path);
|
||||||
static void PhotoFast_ShutDown(void);
|
static void PhotoFast_ShutDown(void);
|
||||||
void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
|
void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
|
||||||
void Set_AEMODE(UINT32 id);
|
void Set_AEMODE(UINT32 id);
|
||||||
|
@ -847,7 +848,7 @@ void PhotoFast_FileNaming_SetSortBySN(CHAR *pDelimStr, UINT32 nDelimCount, UINT3
|
||||||
DBG_ERR("No set Delim String!!\r\n");
|
DBG_ERR("No set Delim String!!\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
|
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path)
|
||||||
{
|
{
|
||||||
FST_FILE fp;
|
FST_FILE fp;
|
||||||
INT32 rt;
|
INT32 rt;
|
||||||
|
@ -857,19 +858,26 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
|
||||||
UINT32 open_flag;
|
UINT32 open_flag;
|
||||||
UINT32 nextFolderID = 0, nextFileID = 0;
|
UINT32 nextFolderID = 0, nextFileID = 0;
|
||||||
|
|
||||||
if (DCF_GetDBInfo(DCF_INFO_IS_9999)) {
|
if(Path == NULL){
|
||||||
DBG_ERR("Exceed max dcf file!\r\n");
|
if (DCF_GetDBInfo(DCF_INFO_IS_9999)) {
|
||||||
return FST_STA_NOFREE_SPACE;
|
DBG_ERR("Exceed max dcf file!\r\n");
|
||||||
}
|
return FST_STA_NOFREE_SPACE;
|
||||||
else {
|
}
|
||||||
if (Fmt == HD_CODEC_TYPE_RAW){
|
else {
|
||||||
fileType = DCF_FILE_TYPE_RAW;
|
if (Fmt == HD_CODEC_TYPE_RAW){
|
||||||
}
|
fileType = DCF_FILE_TYPE_RAW;
|
||||||
else{
|
}
|
||||||
fileType = DCF_FILE_TYPE_JPG;
|
else{
|
||||||
}
|
fileType = DCF_FILE_TYPE_JPG;
|
||||||
DCF_GetNextID(&nextFolderID,&nextFileID);
|
}
|
||||||
DCF_MakeObjPath(nextFolderID, nextFileID, fileType, FilePath);
|
DCF_GetNextID(&nextFolderID,&nextFileID);
|
||||||
|
DCF_MakeObjPath(nextFolderID, nextFileID, fileType, FilePath);
|
||||||
|
DCF_AddDBfile(FilePath);
|
||||||
|
DBG_DUMP("%s added to DCF\r\n", FilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
strncpy(FilePath, Path, sizeof(FilePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HUNTING_CAMERA_MCU == ENABLE
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
@ -897,8 +905,8 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
|
||||||
FileSys_FlushFile(fp);
|
FileSys_FlushFile(fp);
|
||||||
FileSys_CloseFile(fp);
|
FileSys_CloseFile(fp);
|
||||||
if (rt == FST_STA_OK) {
|
if (rt == FST_STA_OK) {
|
||||||
DCF_AddDBfile(FilePath);
|
// DCF_AddDBfile(FilePath);
|
||||||
DBG_DUMP("%s added to DCF\r\n", FilePath);
|
// DBG_DUMP("%s added to DCF\r\n", FilePath);
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("Addr=0x%x,Size=0x%x,Fmt=%d\r\n", Addr, Size, Fmt);
|
DBG_ERR("Addr=0x%x,Size=0x%x,Fmt=%d\r\n", Addr, Size, Fmt);
|
||||||
}
|
}
|
||||||
|
@ -1343,7 +1351,7 @@ static void PhotoFast_CaptureStart(HD_VIDEO_FRAME *p_video_frame)
|
||||||
GxImgFile_CombineJPG(&exif_data, &pri_jpg, &scr_jpg, &dst_jpg_file);
|
GxImgFile_CombineJPG(&exif_data, &pri_jpg, &scr_jpg, &dst_jpg_file);
|
||||||
|
|
||||||
fastboot_wait_done(BOOT_INIT_FILENAMINGOK);
|
fastboot_wait_done(BOOT_INIT_FILENAMINGOK);
|
||||||
PhotoFast_WriteFile(dst_jpg_file.addr, dst_jpg_file.size, NAMERULE_FMT_JPG, 0);
|
PhotoFast_WriteFile(dst_jpg_file.addr, dst_jpg_file.size, NAMERULE_FMT_JPG, 0, 0);
|
||||||
|
|
||||||
for (i=0; i < PHOTO_ENC_JPG_TYPE_MAX_ID; i++) {
|
for (i=0; i < PHOTO_ENC_JPG_TYPE_MAX_ID; i++) {
|
||||||
hd_ret = hd_videoenc_release_out_buf(g_video_enc_path[i], &g_bs_data_pull[i]);
|
hd_ret = hd_videoenc_release_out_buf(g_video_enc_path[i], &g_bs_data_pull[i]);
|
||||||
|
@ -1684,7 +1692,11 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
|
||||||
//#endif
|
//#endif
|
||||||
start_cap = TRUE;
|
start_cap = TRUE;
|
||||||
|
|
||||||
DBG_DUMP("*** trigger frame count = %llu (start from 1)\n", video_cap_frame.count); /* UINT64, use %llu */
|
VOS_TICK tick;
|
||||||
|
|
||||||
|
PhotoFast_GetTick(video_cap_frame.count, &tick);
|
||||||
|
|
||||||
|
DBG_DUMP("*** trigger frame count = %llu (start from 1) frame timestamp = %llu, tick=%lu ms , \n", video_cap_frame.count, video_cap_frame.timestamp, tick); /* UINT64, use %llu */
|
||||||
//Set_AEMODE(1);
|
//Set_AEMODE(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2033,7 +2045,6 @@ void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo)
|
||||||
void Set_AEMODE(UINT32 id)
|
void Set_AEMODE(UINT32 id)
|
||||||
{
|
{
|
||||||
AET_MANUAL ae_manual = {0};
|
AET_MANUAL ae_manual = {0};
|
||||||
AWBT_MANUAL manual = {0};
|
|
||||||
AWBT_STATUS status = {0};
|
AWBT_STATUS status = {0};
|
||||||
ISPT_C_GAIN c_gain = {0};
|
ISPT_C_GAIN c_gain = {0};
|
||||||
HD_RESULT hd_ret;
|
HD_RESULT hd_ret;
|
||||||
|
@ -2102,20 +2113,6 @@ void Set_AEMODE(UINT32 id)
|
||||||
c_gain.gain[1] = status.status.cur_g_gain;
|
c_gain.gain[1] = status.status.cur_g_gain;
|
||||||
c_gain.gain[2] = status.status.cur_b_gain;
|
c_gain.gain[2] = status.status.cur_b_gain;
|
||||||
vendor_isp_set_common(ISPT_ITEM_C_GAIN, &c_gain);
|
vendor_isp_set_common(ISPT_ITEM_C_GAIN, &c_gain);
|
||||||
manual.id = 0;
|
|
||||||
if (id == 1)
|
|
||||||
{
|
|
||||||
manual.manual.en = 1;
|
|
||||||
manual.manual.r_gain = status.status.cur_r_gain;
|
|
||||||
manual.manual.g_gain = status.status.cur_g_gain;
|
|
||||||
manual.manual.b_gain = status.status.cur_b_gain;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
manual.manual.en = 0;
|
|
||||||
}
|
|
||||||
vendor_isp_set_awb(AWBT_ITEM_MANUAL, &manual);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
|
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
|
||||||
|
@ -2189,5 +2186,75 @@ UINT32 PhotoFast_GetTickBufSize(void)
|
||||||
return VD_TICK_BUF_SIZE;
|
return VD_TICK_BUF_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "vendor_common.h"
|
||||||
|
#define DBGINFO_BUFSIZE() (0x200)
|
||||||
|
|
||||||
|
ER PhotoFast_Movie_Init(void)
|
||||||
|
{
|
||||||
|
PhotoFast_InitExif();
|
||||||
|
PhotoFastCapDateImprint_InitBuff();
|
||||||
|
hd_gfx_init();
|
||||||
|
|
||||||
|
|
||||||
|
HD_COMMON_MEM_INIT_CONFIG mem_cfg = {0};
|
||||||
|
UINT32 id = 0;
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* Slice encode thumbnail
|
||||||
|
*******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
UIMenuStoreInfo *puiPara = sf_ui_para_get();
|
||||||
|
UINT32 blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(sf_get_screen_nail_width(puiPara->SendPicSize), sf_get_screen_nail_height(puiPara->SendPicSize), HD_VIDEO_PXLFMT_YUV420);
|
||||||
|
#else
|
||||||
|
UINT32 blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(CFG_SCREENNAIL_W, CFG_SCREENNAIL_H, HD_VIDEO_PXLFMT_YUV420);
|
||||||
|
#endif
|
||||||
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
|
mem_cfg.pool_info[id].blk_size = blk_size;
|
||||||
|
mem_cfg.pool_info[id].blk_cnt = 1;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* Slice encode slice yuv buffer
|
||||||
|
*******************************************************************/
|
||||||
|
id ++;
|
||||||
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
|
mem_cfg.pool_info[id].blk_size = PhotoFast_SliceEncode_Get_Max_Dst_Slice_Buffer_Size(HD_VIDEO_PXLFMT_YUV420);
|
||||||
|
mem_cfg.pool_info[id].blk_cnt = 1;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
|
||||||
|
// config common pool (screennail image)
|
||||||
|
id ++;
|
||||||
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
|
#if HUNTING_CAMERA_MCU == ENABLE
|
||||||
|
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(sf_get_screen_nail_width(puiPara->SendPicSize), sf_get_screen_nail_height(puiPara->SendPicSize), HD_VIDEO_PXLFMT_YUV420);
|
||||||
|
|
||||||
|
#else
|
||||||
|
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(CFG_SCREENNAIL_W, CFG_SCREENNAIL_H, HD_VIDEO_PXLFMT_YUV420);
|
||||||
|
#endif
|
||||||
|
mem_cfg.pool_info[id].blk_cnt = 1;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
// config common pool (EXIF)
|
||||||
|
id++;
|
||||||
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
|
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+CFG_JPG_HEADER_SIZE;
|
||||||
|
mem_cfg.pool_info[id].blk_cnt = 1;
|
||||||
|
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
|
||||||
|
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].ddr_id = DDR_ID0;
|
||||||
|
|
||||||
|
vendor_common_mem_relayout(&mem_cfg);
|
||||||
|
|
||||||
|
return E_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -56,10 +56,11 @@ extern THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *arg);
|
||||||
extern THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg);
|
extern THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg);
|
||||||
extern void PhotoFast_PhotoClose(void);
|
extern void PhotoFast_PhotoClose(void);
|
||||||
|
|
||||||
extern BOOL PhotoFast_SetTick(UINT32 cnt, VOS_TICK tick); /* start from 0 */
|
extern BOOL PhotoFast_SetTick(UINT32 cnt, VOS_TICK tick); /* start from 1 */
|
||||||
extern BOOL PhotoFast_GetTick(UINT32 cnt, VOS_TICK* tick); /* start from 0 */
|
extern BOOL PhotoFast_GetTick(UINT32 cnt, VOS_TICK* tick); /* start from 1 */
|
||||||
extern BOOL PhotoFast_SetTriggerFrmCnt(UINT32 cnt); /* trigger vcap frame count , get from HD_VIDEO_FRAME */
|
extern BOOL PhotoFast_SetTriggerFrmCnt(UINT32 cnt); /* trigger vcap frame count , get from HD_VIDEO_FRAME */
|
||||||
|
UINT32 PhotoFast_GetTriggerFrmCnt(VOID);
|
||||||
extern UINT32 PhotoFast_GetTickBufSize(void);
|
extern UINT32 PhotoFast_GetTickBufSize(void);
|
||||||
|
ER PhotoFast_Movie_Init(void);
|
||||||
|
|
||||||
#endif //_UIAPP_PHOTO_H_
|
#endif //_UIAPP_PHOTO_H_
|
||||||
|
|
|
@ -234,7 +234,7 @@ static UINT32 PhotoFast_SliceEncode_Get_Max_Dst_Slice_Info(PhotoFast_SliceSize_I
|
||||||
|
|
||||||
UINT8 cap_idx = 0;
|
UINT8 cap_idx = 0;
|
||||||
|
|
||||||
for(cap_idx = PHOTO_MAX_CAP_SIZE ; cap_idx <= PHOTO_SLICE_ENC_MIN_CAP_SIZE ; cap_idx++)
|
for(cap_idx = PHOTO_MAX_CAP_SIZE ; cap_idx <= PHOTO_MIN_CAP_SIZE ; cap_idx++)
|
||||||
{
|
{
|
||||||
HD_DIM tmp_cap_size = {0};
|
HD_DIM tmp_cap_size = {0};
|
||||||
PhotoFast_SliceSize_Info tmp_slice_info = {0};
|
PhotoFast_SliceSize_Info tmp_slice_info = {0};
|
||||||
|
|
|
@ -19,43 +19,43 @@ TMDEF_BEGIN_OPTIONS(PHOTO_SIZE)
|
||||||
|
|
||||||
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
|
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
|
||||||
|
|
||||||
#if(PHOTO_MAX_CAP_SIZE > PHOTO_SLICE_ENC_MIN_CAP_SIZE)
|
#if(PHOTO_MAX_CAP_SIZE > PHOTO_MIN_CAP_SIZE)
|
||||||
#error "please check PHOTO_MAX_CAP_SIZE in UIAppPhoto.h"
|
#error "please check PHOTO_MAX_CAP_SIZE in UIAppPhoto.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_40M)//PHOTO_SIZE_40M
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_40M)//PHOTO_SIZE_40M
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_40M, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_40M, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_40M, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_40M, TM_OPTION_ENABLE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_12M)//PHOTO_SIZE_12M
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_12M)//PHOTO_SIZE_12M
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_12M, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_12M, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_12M, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_12M, TM_OPTION_ENABLE)
|
||||||
#endif
|
#endif
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_10M)//PHOTO_SIZE_10M
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_10M)//PHOTO_SIZE_10M
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_10M, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_10M, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_10M, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_10M, TM_OPTION_ENABLE)
|
||||||
#endif
|
#endif
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_8M)//PHOTO_SIZE_8M
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_8M)//PHOTO_SIZE_8M
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_8M, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_8M, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_8M, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_8M, TM_OPTION_ENABLE)
|
||||||
#endif
|
#endif
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_5M)//PHOTO_SIZE_5M
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_5M)//PHOTO_SIZE_5M
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_5M, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_5M, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_5M, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_5M, TM_OPTION_ENABLE)
|
||||||
#endif
|
#endif
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_3M)//PHOTO_SIZE_3M
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_3M)//PHOTO_SIZE_3M
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_3M, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_3M, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_3M, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_3M, TM_OPTION_ENABLE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_VGA)//PHOTO_SIZE_VGA
|
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_VGA)//PHOTO_SIZE_VGA
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_VGA, TM_OPTION_DISABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_VGA, TM_OPTION_DISABLE)
|
||||||
#else
|
#else
|
||||||
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_VGA, TM_OPTION_ENABLE)
|
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_VGA, TM_OPTION_ENABLE)
|
||||||
|
|
|
@ -1866,6 +1866,7 @@ typedef enum {
|
||||||
SF_CAM_MODE_PHOTO = 0x00,
|
SF_CAM_MODE_PHOTO = 0x00,
|
||||||
SF_CAM_MODE_VIDEO,
|
SF_CAM_MODE_VIDEO,
|
||||||
SF_CAM_MODE_PHOTO_VIDEO,
|
SF_CAM_MODE_PHOTO_VIDEO,
|
||||||
|
SF_CAM_MODE_VIDEO2,
|
||||||
SF_CAM_MODE_MAX,
|
SF_CAM_MODE_MAX,
|
||||||
}SF_BOOT_WORK_MODE;
|
}SF_BOOT_WORK_MODE;
|
||||||
|
|
||||||
|
|
|
@ -164,6 +164,7 @@ SECTIONS
|
||||||
libdrv_storage.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libdrv_storage.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
libsifar.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libsifar.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
/* kdrv */
|
/* kdrv */
|
||||||
|
libker_pkg.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
libkdrv_comm.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libkdrv_comm.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
libarb_protected.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libarb_protected.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
libkdrv_cpu.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libkdrv_cpu.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
@ -175,7 +176,7 @@ SECTIONS
|
||||||
libkdrv_interrupt.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libkdrv_interrupt.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
/* os */
|
/* os */
|
||||||
./SrcCode/Startup/bin_info.o(.got*)
|
./SrcCode/Startup/bin_info.o(.got*)
|
||||||
libker_pkg.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
/*libker_pkg.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)*/
|
||||||
libkwrap.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libkwrap.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
libvos.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libvos.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
/* freertos.a must be located after kwrap.a for linking text.xEventGroup* */
|
/* freertos.a must be located after kwrap.a for linking text.xEventGroup* */
|
||||||
|
@ -295,17 +296,6 @@ SECTIONS
|
||||||
libexif.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libexif.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
libgximagefile.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
libgximagefile.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
|
||||||
/* audio */
|
|
||||||
#if (_PACKAGE_AUDIO_)
|
|
||||||
libkflow_audiocap.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
libkflow_audioenc.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
libnvt_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
libnvt_kdrv_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
libaud_aec.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
libaud_aace.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
libaudlib_IIR.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
liblvgl.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
liblvgl.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
./SrcCode/FastFlow/flow_lvgl.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
./SrcCode/FastFlow/flow_lvgl.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
./SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
./SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
@ -324,6 +314,35 @@ SECTIONS
|
||||||
{
|
{
|
||||||
_section_05_size = ABSOLUTE(.) - _section_05_addr;
|
_section_05_size = ABSOLUTE(.) - _section_05_addr;
|
||||||
_section_06_addr = ABSOLUTE(.);
|
_section_06_addr = ABSOLUTE(.);
|
||||||
|
|
||||||
|
/* app */
|
||||||
|
./SrcCode/UIApp/MovieFast/MovieFast.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/Movie/UIAppMovie_Exe.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/Movie/UIAppMovie_CommPoolInit.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/Movie/UIAppMovie_RecSetting.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/MovieStamp/MovieStamp.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/MovieStamp/MovieStampID.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/MovieStamp/MovieStampTsk.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIApp/MovieStamp/BG_Watermark_640x480.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
./SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
|
||||||
|
/* lib */
|
||||||
|
libimageapp_moviemulti.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libimageapp_common.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libfileout.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libbsmux.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libavfile.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
|
||||||
|
/* audio */
|
||||||
|
#if (_PACKAGE_AUDIO_)
|
||||||
|
libkflow_audiocap.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libkflow_audioenc.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libnvt_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libnvt_kdrv_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libaud_aec.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libaud_aace.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
libaudlib_IIR.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
@ -484,3 +503,13 @@ GROUP(libgcc.a libc.a libdrv_portable.a libfreertos.a libkwrap.a libkdrv_comm.a
|
||||||
|
|
||||||
EXTERN("_init")
|
EXTERN("_init")
|
||||||
EXTERN("SwTimer_Open")
|
EXTERN("SwTimer_Open")
|
||||||
|
EXTERN("vendor_videoenc_set")
|
||||||
|
EXTERN("vendor_audiocap_set")
|
||||||
|
EXTERN("vendor_audioenc_set")
|
||||||
|
EXTERN("vendor_videoproc_set")
|
||||||
|
EXTERN("vendor_videodec_set")
|
||||||
|
EXTERN("eac_init")
|
||||||
|
EXTERN("dai_disableclk")
|
||||||
|
EXTERN("aud_open")
|
||||||
|
EXTERN("h264Enc_queryMemSize")
|
||||||
|
EXTERN("aud_set_default_setting")
|
||||||
|
|
|
@ -101,6 +101,7 @@ typedef enum {
|
||||||
IAMOVIE_VPRC_EX_ALG,
|
IAMOVIE_VPRC_EX_ALG,
|
||||||
IAMOVIE_VPRC_EX_DISP2,
|
IAMOVIE_VPRC_EX_DISP2,
|
||||||
IAMOVIE_VPRC_EX_ALG2,
|
IAMOVIE_VPRC_EX_ALG2,
|
||||||
|
IAMOVIE_VPRC_EX_MAX,
|
||||||
ENUM_DUMMY4WORD(IAMOVIE_VPRC_EX_PATH)
|
ENUM_DUMMY4WORD(IAMOVIE_VPRC_EX_PATH)
|
||||||
} IAMOVIE_VPRC_EX_PATH;
|
} IAMOVIE_VPRC_EX_PATH;
|
||||||
|
|
||||||
|
@ -884,6 +885,7 @@ extern HD_PATH_ID ImageApp_MovieMulti_GetVprcInPort(MOVIE_CFG_REC_ID id);
|
||||||
extern HD_PATH_ID ImageApp_MovieMulti_GetVprc3DNRPort(MOVIE_CFG_REC_ID id);
|
extern HD_PATH_ID ImageApp_MovieMulti_GetVprc3DNRPort(MOVIE_CFG_REC_ID id);
|
||||||
extern HD_PATH_ID ImageApp_MovieMulti_GetVdoEncPort(MOVIE_CFG_REC_ID id);
|
extern HD_PATH_ID ImageApp_MovieMulti_GetVdoEncPort(MOVIE_CFG_REC_ID id);
|
||||||
extern HD_PATH_ID ImageApp_MovieMulti_GetRawEncPort(MOVIE_CFG_REC_ID id);
|
extern HD_PATH_ID ImageApp_MovieMulti_GetRawEncPort(MOVIE_CFG_REC_ID id);
|
||||||
|
extern HD_PATH_ID ImageApp_MovieMulti_GetVprcPort(MOVIE_CFG_REC_ID id, IAMOVIE_VPRC_EX_PATH path);
|
||||||
extern HD_PATH_ID ImageApp_MovieMulti_GetAlgDataPort(MOVIE_CFG_REC_ID id, MOVIE_CFG_ALG_PATH path);
|
extern HD_PATH_ID ImageApp_MovieMulti_GetAlgDataPort(MOVIE_CFG_REC_ID id, MOVIE_CFG_ALG_PATH path);
|
||||||
extern HD_PATH_ID ImageApp_MovieMulti_GetAudEncPort(MOVIE_CFG_REC_ID id);
|
extern HD_PATH_ID ImageApp_MovieMulti_GetAudEncPort(MOVIE_CFG_REC_ID id);
|
||||||
extern void ImageApp_MovieMulti_Root_Path(CHAR *prootpath, UINT32 rec_id);
|
extern void ImageApp_MovieMulti_Root_Path(CHAR *prootpath, UINT32 rec_id);
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user