424 lines
12 KiB
C
Executable File
424 lines
12 KiB
C
Executable File
//global debug level: PRJ_DBG_LVL
|
|
#include "PrjInc.h"
|
|
#include <kwrap/stdio.h>
|
|
|
|
#include "System/SysCommon.h"
|
|
//#include "SysCfg.h"
|
|
#include "UIApp/AppLib.h"
|
|
#include "UIApp/UIAppCommon.h"
|
|
#include "Mode/UIModeMovie.h"
|
|
#include "UIApp/Movie/UIAppMovie.h" // Isiah, implement YUV merge mode of recording func.
|
|
//#include "UIAppMovie_Param.h"
|
|
//#include "UIMovieMapping.h"
|
|
|
|
#include "Mode/UIModePhoto.h"
|
|
#include "UIApp/Photo/UIAppPhoto.h"
|
|
#include "UIWnd/UIFlow.h"
|
|
//#include "UIWnd/SPORTCAM/UIInfo/UIPhotoMapping.h"
|
|
#if (USE_FILEDB==ENABLE)
|
|
#include "FileDB.h"
|
|
#endif
|
|
//#include "ImageApp_MovieCommon.h"
|
|
#include "ImageApp/ImageApp_MovieMulti.h"
|
|
#include "UIApp/AppDisp_PipView.h"
|
|
#if (defined(_NVT_ETHREARCAM_TX_) || defined(_NVT_ETHREARCAM_RX_))
|
|
#include "UIApp/Network/EthCamAppCmd.h"
|
|
#endif
|
|
#include "System/SysCommon.h"
|
|
//#include "UIWnd/SPORTCAM/UIInfo/UIMovieMapping.h"
|
|
#include <kwrap/sxcmd.h>
|
|
#include <kwrap/stdio.h>
|
|
#include "kwrap/cmdsys.h"
|
|
#include <string.h>
|
|
#include <sf_inc.h>
|
|
|
|
//local debug level: THIS_DBGLVL
|
|
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#define __MODULE__ UiAppMovieCmd
|
|
#define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL)
|
|
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
|
#include <kwrap/debug.h>
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
static BOOL Cmd_movie(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 menuIdx, value;
|
|
|
|
//sscanf_s(strCmd, "%d %d", &menuIdx, &value);
|
|
sscanf_s(argv[0],"%d", &menuIdx);
|
|
sscanf_s(argv[1],"%d", &value);
|
|
DBG_DUMP("menuIdx=%d, value=%d\r\n", menuIdx,value);
|
|
|
|
if (menuIdx == 0) {
|
|
#if (MOVIE_REC_YUVMERGE == ENABLE)
|
|
BOOL bEnable;
|
|
UINT32 uiInterval;
|
|
DBG_DUMP("Test merge record\r\n");
|
|
sscanf_s(strCmd, "%d %d %d", &menuIdx, &bEnable, &uiInterval);
|
|
FlowMovie_RecSetYUVMergeRecInterval(uiInterval);
|
|
FlowMovie_RecSetYUVMergeRecCounter(0);
|
|
FlowMovie_RecSetYUVMergeMode(bEnable);
|
|
if (bEnable) {
|
|
debug_msg("Enable YUV merge record mode, interval=%d\r\n", uiInterval);
|
|
} else {
|
|
debug_msg("Disable YUV merge record mode\r\n");
|
|
}
|
|
#endif
|
|
} else if (menuIdx == 1) {
|
|
#if(MOVIE_MODE==ENABLE)
|
|
DBG_DUMP("ADAS(LDWS+FCW) %d\r\n", value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_LDWS, 1, value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_FCW, 1, value);
|
|
#endif
|
|
} else if (menuIdx == 2) {
|
|
#if(MOVIE_MODE==ENABLE)
|
|
DBG_DUMP("Urgent Protect Manual %d\r\n", value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_PROTECT_MANUAL, 1, value);
|
|
#endif
|
|
} else if (menuIdx == 3) {
|
|
#if(MOVIE_MODE==ENABLE)
|
|
DBG_DUMP("Image Rotation %d\r\n", value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_SENSOR_ROTATE, 1, value);
|
|
#endif
|
|
} else if (menuIdx == 5) {
|
|
#if(MOVIE_MODE==ENABLE)
|
|
DBG_DUMP("Movie RSC %d\r\n", value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_RSC, 1, value);
|
|
#endif
|
|
} else if (menuIdx == 7) {
|
|
#if(PHOTO_MODE==ENABLE)
|
|
UI_SetData(FL_DUAL_CAM, value);
|
|
#if(defined(_NVT_ETHREARCAM_RX_))
|
|
MovieExe_EthCam_ChgDispCB(UI_GetData(FL_DUAL_CAM));
|
|
#endif
|
|
DBG_DUMP("Sensor index %d\r\n", value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_DUALCAM, 1, SysGetFlag(FL_DUAL_CAM));
|
|
#endif
|
|
} else if (menuIdx == 11) {
|
|
#if(MOVIE_MODE==ENABLE)
|
|
DBG_DUMP("Movie WDR index %d\r\n", value);
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_WDR, 1, value);
|
|
#endif
|
|
} else if (menuIdx == 13) {
|
|
DBG_DUMP("enter value=%d\r\n", value);
|
|
if(value>=DUALCAM_FRONT && value<DUALCAM_SETTING_MAX )
|
|
{
|
|
}
|
|
else
|
|
{
|
|
value=DUALCAM_FRONT;
|
|
}
|
|
#if(MOVIE_MODE==ENABLE)
|
|
DBG_DUMP("out value=%d\r\n", value);
|
|
UI_SetData(FL_DUAL_CAM, value);
|
|
UI_SetData(FL_DUAL_CAM_MENU, value);
|
|
|
|
//Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_IMAGE_RATIO, 1, GetMovieSizeRatio(UI_GetData(FL_MOVIE_SIZE)));
|
|
PipView_SetStyle(UI_GetData(FL_DUAL_CAM));
|
|
#endif
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_dumpfdb(unsigned char argc, char **argv)
|
|
{
|
|
#if (USE_FILEDB==ENABLE)
|
|
FileDB_DumpInfo(0);
|
|
#if defined(_EMBMEM_EMMC_) && (FS_MULTI_STRG_FUNC==ENABLE)
|
|
FileDB_DumpInfo(1);
|
|
#endif
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
#if(defined(_NVT_ETHREARCAM_TX_))
|
|
static BOOL Cmd_movie_eth_tx_start(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value;
|
|
sscanf_s(argv[0],"%d", &value);
|
|
|
|
if(value==0){
|
|
MovieExe_EthCamTxStart(_CFG_REC_ID_1);
|
|
}else{
|
|
MovieExe_EthCamTxStart(_CFG_CLONE_ID_1);
|
|
}
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_eth_tx_stop(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value;
|
|
sscanf_s(argv[0],"%d", &value);
|
|
if(value==0){
|
|
MovieExe_EthCamTxStop(_CFG_REC_ID_1);
|
|
}else{
|
|
MovieExe_EthCamTxStop(_CFG_CLONE_ID_1);
|
|
}
|
|
return TRUE;
|
|
}
|
|
#endif
|
|
static BOOL Cmd_movie_HDR(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 value;
|
|
|
|
sscanf_s(argv[0],"%d", &value);
|
|
if(value){
|
|
DBG_DUMP("HDR On\r\n");
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_SHDR, 1, MOVIE_HDR_ON);
|
|
|
|
}else{
|
|
DBG_DUMP("HDR Off\r\n");
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_SHDR, 1, MOVIE_HDR_OFF);
|
|
}
|
|
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, System_GetState(SYS_STATE_CURRMODE));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
#if (defined(_NVT_ETHREARCAM_TX_) || defined(_NVT_ETHREARCAM_RX_))
|
|
static BOOL Cmd_movie_get_desc(unsigned char argc, char **argv)
|
|
{
|
|
#if(defined(_NVT_ETHREARCAM_TX_))
|
|
UINT8 tem_buf[50];
|
|
MEM_RANGE desc;
|
|
MEM_RANGE sps;
|
|
MEM_RANGE pps;
|
|
MEM_RANGE vps;
|
|
UINT32 i;
|
|
UINT8 *pBuf;
|
|
desc.Addr=(UINT32)tem_buf;
|
|
desc.Size=50;
|
|
ImageApp_MovieMulti_GetDesc(_CFG_REC_ID_1, _CFG_CODEC_H265, &desc, &sps, &pps, &vps);
|
|
DBG_DUMP("\r\ndesc[%d]:\r\n",desc.Size);
|
|
pBuf=(UINT8 *)desc.Addr;
|
|
for(i=0;i<desc.Size;i++){
|
|
DBG_DUMP("0x%x, ", pBuf[i]);
|
|
}
|
|
DBG_DUMP("\r\nsps[%d]:\r\n",sps.Size);
|
|
|
|
pBuf=(UINT8 *)sps.Addr;
|
|
for(i=0;i<sps.Size;i++){
|
|
DBG_DUMP("0x%x, ", pBuf[i]);
|
|
}
|
|
DBG_DUMP("\r\npps[%d]:\r\n",pps.Size);
|
|
|
|
pBuf=(UINT8 *)pps.Addr;
|
|
for(i=0;i<pps.Size;i++){
|
|
DBG_DUMP("0x%x, ", pBuf[i]);
|
|
}
|
|
DBG_DUMP("\r\nvps[%d]:\r\n",vps.Size);
|
|
pBuf=(UINT8 *)vps.Addr;
|
|
for(i=0;i<vps.Size;i++){
|
|
DBG_DUMP("0x%x, ", pBuf[i]);
|
|
}
|
|
DBG_DUMP("\r\n");
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_trigger_thumb(unsigned char argc, char **argv)
|
|
{
|
|
#if(defined(_NVT_ETHREARCAM_TX_))
|
|
ImageApp_MovieMulti_EthCam_TxTrigThumb((0 | ETHCAM_TX_MAGIC_KEY));
|
|
#else
|
|
UINT16 i;
|
|
for(i=0;i<ETH_REARCAM_CAPS_COUNT;i++){
|
|
EthCam_SendXMLCmd(i, ETHCAM_PORT_DATA1 ,ETHCAM_CMD_GET_TX_MOVIE_THUMB, 0);
|
|
}
|
|
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_trigger_rawencode(unsigned char argc, char **argv)
|
|
{
|
|
#if(defined(_NVT_ETHREARCAM_TX_))
|
|
if (System_GetState(SYS_STATE_CURRMODE) != PRIMARY_MODE_MOVIE) {
|
|
DBG_ERR("not movie mode\r\n");
|
|
return TRUE;
|
|
}
|
|
|
|
//680,510 media not record,also can raw encode
|
|
if(ImageApp_MovieMulti_IsStreamRunning(_CFG_REC_ID_1 | ETHCAM_TX_MAGIC_KEY)){
|
|
Ux_SendEvent(&CustomMovieObjCtrl, NVTEVT_EXE_MOVIE_REC_RAWENC, 0);
|
|
} else {
|
|
DBG_ERR("Not in recording state\r\n");
|
|
|
|
return TRUE;
|
|
}
|
|
#else
|
|
UINT16 i;
|
|
for(i=0;i<ETH_REARCAM_CAPS_COUNT;i++){
|
|
EthCam_SendXMLCmd(i, ETHCAM_PORT_DATA1 ,ETHCAM_CMD_GET_TX_MOVIE_RAW_ENCODE, 0);
|
|
}
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_disp_crop(unsigned char argc, char **argv)
|
|
{
|
|
#if _TODO
|
|
#if(defined(_NVT_ETHREARCAM_RX_))
|
|
#if(ETH_REARCAM_CLONE_FOR_DISPLAY == ENABLE)
|
|
UINT32 value;
|
|
sscanf_s(argv[0],"%d", &value);
|
|
DBG_DUMP("value=%d\r\n",value);
|
|
MOVIEMULTI_IME_CROP_INFO CropInfo ={0};
|
|
CropInfo.IMESize.w = 1920;
|
|
CropInfo.IMESize.h = 1080;
|
|
CropInfo.IMEWin.x = 0;
|
|
CropInfo.IMEWin.w = 1920;
|
|
CropInfo.IMEWin.h = 384;
|
|
if(value>=0 && ((value + CropInfo.IMEWin.h) < CropInfo.IMESize.h)){
|
|
CropInfo.IMEWin.y = value;
|
|
EthCam_SendXMLCmd(ETHCAM_PATH_ID_1, ETHCAM_PORT_DEFAULT ,ETHCAM_CMD_TX_DISP_CROP, 0);
|
|
EthCam_SendXMLData(ETHCAM_PATH_ID_1, (UINT8 *)&CropInfo, (UINT32)sizeof(MOVIEMULTI_IME_CROP_INFO));
|
|
}else{
|
|
DBG_ERR("input out of range\r\n");
|
|
}
|
|
|
|
#endif
|
|
#endif
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
#endif
|
|
static BOOL Cmd_movie_mov_file_test(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 i;
|
|
for (i = 0; i < SENSOR_CAPS_COUNT; i++) {
|
|
gMovie_Rec_Info[i].file_format=_CFG_FILE_FORMAT_MOV;
|
|
gMovie_Rec_Info[i].aud_codec=_CFG_AUD_CODEC_PCM;
|
|
}
|
|
Ux_PostEvent(NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_MOVIE);
|
|
|
|
//#if(defined(_NVT_ETHREARCAM_RX_))
|
|
// UINT32 delay_cnt=0;
|
|
// for (i=0; i<ETH_REARCAM_CAPS_COUNT; i++){
|
|
// if(EthCamNet_GetEthLinkStatus(i)==ETHCAM_LINK_UP){
|
|
// while(socketCliEthData1_IsConn(i)==0 && delay_cnt++<20){
|
|
// Delay_DelayMs(50);
|
|
// }
|
|
// if(socketCliEthData1_IsConn(i)==0){
|
|
// DBG_ERR("Ethcam not connect!\r\n");
|
|
// break;
|
|
// }
|
|
// sEthCamTxRecInfo[i].rec_format=_CFG_FILE_FORMAT_MOV;
|
|
// sEthCamTxRecInfo[i].aud_codec=_CFG_AUD_CODEC_PCM;
|
|
// ImageApp_MovieMulti_SetParam(_CFG_ETHCAM_ID_1+i, MOVIEMULTI_PRARM_ETHCAM_REC_INFO, (UINT32)&sEthCamTxRecInfo[i]);
|
|
// }
|
|
// }
|
|
//#endif
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_ts_file_test(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 i;
|
|
|
|
for (i = 0; i < SENSOR_CAPS_COUNT; i++) {
|
|
gMovie_Rec_Info[i].file_format=_CFG_FILE_FORMAT_TS;
|
|
gMovie_Rec_Info[i].aud_codec=_CFG_AUD_CODEC_AAC;
|
|
}
|
|
Ux_PostEvent(NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_MOVIE);
|
|
|
|
|
|
//#if(defined(_NVT_ETHREARCAM_RX_))
|
|
// UINT32 delay_cnt=0;
|
|
// for (i=0; i<ETH_REARCAM_CAPS_COUNT; i++){
|
|
// if(EthCamNet_GetEthLinkStatus(i)==ETHCAM_LINK_UP){
|
|
// while(socketCliEthData1_IsConn(i)==0 && delay_cnt++<20){
|
|
// Delay_DelayMs(50);
|
|
// }
|
|
// if(socketCliEthData1_IsConn(i)==0){
|
|
// DBG_ERR("Ethcam not connect!\r\n");
|
|
// break;
|
|
// }
|
|
// sEthCamTxRecInfo[i].rec_format=_CFG_FILE_FORMAT_TS;
|
|
// sEthCamTxRecInfo[i].aud_codec=_CFG_AUD_CODEC_AAC;
|
|
// ImageApp_MovieMulti_SetParam(_CFG_ETHCAM_ID_1+i, MOVIEMULTI_PRARM_ETHCAM_REC_INFO, (UINT32)&sEthCamTxRecInfo[i]);
|
|
// }
|
|
// }
|
|
//#endif
|
|
|
|
|
|
return TRUE;
|
|
}
|
|
static BOOL Cmd_movie_frontmoov_test(unsigned char argc, char **argv)
|
|
{
|
|
UINT32 i;
|
|
|
|
for (i = 0; i < SENSOR_CAPS_COUNT; i++) {
|
|
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, 5);
|
|
}
|
|
//#if(defined(_NVT_ETHREARCAM_RX_))
|
|
// for (i=0; i<ETH_REARCAM_CAPS_COUNT; i++){
|
|
// if(EthCamNet_GetEthLinkStatus(i)==ETHCAM_LINK_UP){
|
|
// ImageApp_MovieMulti_SetParam(_CFG_ETHCAM_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV, TRUE);
|
|
//// ImageApp_MovieMulti_SetParam(_CFG_ETHCAM_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV_FLUSH_SEC, 5);
|
|
// }
|
|
// }
|
|
//#endif
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
static SXCMD_BEGIN(uimovie_cmd_tbl, "uimovie command")
|
|
SXCMD_ITEM("movie %", Cmd_movie, "movie mode test")
|
|
SXCMD_ITEM("dumpfdb", Cmd_movie_dumpfdb, "dump filedb 0")
|
|
SXCMD_ITEM("movfile", Cmd_movie_mov_file_test, "movie mode mov file test")
|
|
SXCMD_ITEM("tsfile", Cmd_movie_ts_file_test, "movie mode ts file test")
|
|
SXCMD_ITEM("frontmoov", Cmd_movie_frontmoov_test, "movie mode enable front moov")
|
|
|
|
#if(defined(_NVT_ETHREARCAM_TX_))
|
|
SXCMD_ITEM("ethstart %", Cmd_movie_eth_tx_start, "eth stream tx start")
|
|
SXCMD_ITEM("ethstop %", Cmd_movie_eth_tx_stop, "eth stream tx stop")
|
|
#endif
|
|
SXCMD_ITEM("hdr %", Cmd_movie_HDR, "HDR on/off")
|
|
#if (defined(_NVT_ETHREARCAM_TX_) || defined(_NVT_ETHREARCAM_RX_))
|
|
SXCMD_ITEM("desc", Cmd_movie_get_desc, "get current resolution desc")
|
|
SXCMD_ITEM("thumb", Cmd_movie_trigger_thumb, "trigger thumb")
|
|
SXCMD_ITEM("pim", Cmd_movie_trigger_rawencode, "trigger raw encode")
|
|
#endif
|
|
#if defined(_NVT_ETHREARCAM_RX_)
|
|
SXCMD_ITEM("ethcamcrop %", Cmd_movie_disp_crop, "ethcam set tx disp crop")
|
|
#endif
|
|
|
|
|
|
SXCMD_END()
|
|
|
|
static int uimovie_cmd_showhelp(int (*dump)(const char *fmt, ...))
|
|
{
|
|
UINT32 cmd_num = SXCMD_NUM(uimovie_cmd_tbl);
|
|
UINT32 loop = 1;
|
|
|
|
dump("---------------------------------------------------------------------\r\n");
|
|
dump(" %s\n", "uimovie");
|
|
dump("---------------------------------------------------------------------\r\n");
|
|
|
|
for (loop = 1 ; loop <= cmd_num ; loop++) {
|
|
dump("%15s : %s\r\n", uimovie_cmd_tbl[loop].p_name, uimovie_cmd_tbl[loop].p_desc);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
MAINFUNC_ENTRY(uimovie, argc, argv)
|
|
{
|
|
UINT32 cmd_num = SXCMD_NUM(uimovie_cmd_tbl);
|
|
UINT32 loop;
|
|
int ret;
|
|
|
|
if (argc < 2) {
|
|
return -1;
|
|
}
|
|
if (strncmp(argv[1], "?", 2) == 0) {
|
|
uimovie_cmd_showhelp(vk_printk);
|
|
return 0;
|
|
}
|
|
for (loop = 1 ; loop <= cmd_num ; loop++) {
|
|
if (strncmp(argv[1], uimovie_cmd_tbl[loop].p_name, strlen(argv[1])) == 0) {
|
|
ret = uimovie_cmd_tbl[loop].p_func(argc-2, &argv[2]);
|
|
return ret;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|