nt9856x/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_cmd.c
2023-03-28 15:07:53 +08:00

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;
}