From cfe46de7f03234eb25be0471e53223b58e3802f5 Mon Sep 17 00:00:00 2001 From: alxer Date: Tue, 25 Jul 2023 18:11:21 +0800 Subject: [PATCH] =?UTF-8?q?1.Linux=E6=B0=B4=E5=8D=B0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=9Aa.=E5=BD=95=E5=83=8F=E6=B0=B4=E5=8D=B0=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E5=BA=95=E9=83=A8=E4=BF=AE=E6=94=B9=E4=B8=BA=E9=80=8F?= =?UTF-8?q?=E6=98=8E=EF=BC=9Bb.=E5=9B=BE=E7=89=87=E6=B0=B4=E5=8D=B0?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E6=A0=B9=E6=8D=AE=E5=88=86=E8=BE=A8=E7=8E=87?= =?UTF-8?q?=E5=81=9A=E5=8C=BA=E5=88=86=EF=BC=9Bc.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E5=91=BD=E4=BB=A4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/Makefile | 13 +- .../cardv/SrcCode/PrjCfg_HUNTING_S530.h | 20 +- .../source/cardv/SrcCode/System/SysMain_cmd.c | 2 +- .../SrcCode/UIApp/MovieStamp/MovieStamp.c | 178 +++++++- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 70 ++- .../cardv/SrcCode/UIApp/Photo/UIDateImprint.c | 416 +++++++++++++++--- .../lv_user_font_conv/lv_user_font_conv_cmd.c | 2 +- .../UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c | 7 + .../UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h | 7 + .../lib/source/sifar/code/include/sf_common.h | 1 + .../sifar/code/source/common/sf_common.c | 34 ++ .../nvt-storage-partition.dtsi | 6 +- 12 files changed, 624 insertions(+), 132 deletions(-) mode change 100644 => 100755 code/application/source/cardv/Makefile mode change 100644 => 100755 code/application/source/cardv/SrcCode/System/SysMain_cmd.c mode change 100644 => 100755 code/application/source/cardv/SrcCode/UIApp/MovieStamp/MovieStamp.c mode change 100644 => 100755 code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c mode change 100644 => 100755 code/application/source/cardv/SrcCode/UIApp/Photo/UIDateImprint.c mode change 100644 => 100755 code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c mode change 100644 => 100755 code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h mode change 100644 => 100755 code/lib/source/sifar/code/include/sf_common.h mode change 100644 => 100755 code/lib/source/sifar/code/source/common/sf_common.c mode change 100644 => 100755 configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi diff --git a/code/application/source/cardv/Makefile b/code/application/source/cardv/Makefile old mode 100644 new mode 100755 index 96f56ea36..60025c06b --- a/code/application/source/cardv/Makefile +++ b/code/application/source/cardv/Makefile @@ -230,11 +230,14 @@ SRC += \ ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Languages/Language_SC.c \ ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Languages/Language_TC.c \ ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c \ - ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_16_1bpp.c \ - ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_32_1bpp.c \ - ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_48_1bpp.c \ - ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_64_1bpp.c \ - ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_128_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c \ + ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c \ ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjkjp_black_16_1bpp.c \ ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c \ ./SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjktc_black_16_1bpp.c \ diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h index beeb2732b..c9e373146 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h @@ -1011,11 +1011,14 @@ /******************************************************************************************* * Movie stamp user config ******************************************************************************************/ -#define LV_USER_CFG_STAMP_FONT_ID_XXL LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_128_1BPP -#define LV_USER_CFG_STAMP_FONT_ID_XL LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_64_1BPP -#define LV_USER_CFG_STAMP_FONT_ID_LARGE LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_48_1BPP -#define LV_USER_CFG_STAMP_FONT_ID_MEDIUM LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_32_1BPP -#define LV_USER_CFG_STAMP_FONT_ID_SMALL LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_16_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_24M LV_PLUGIN_FONT_ID_ARIALUNI_106_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_16M LV_PLUGIN_FONT_ID_ARIALUNI_86_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_12M LV_PLUGIN_FONT_ID_ARIALUNI_74_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_8M LV_PLUGIN_FONT_ID_ARIALUNI_60_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_LARGE LV_PLUGIN_FONT_ID_ARIALUNI_48_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_MEDIUM LV_PLUGIN_FONT_ID_ARIALUNI_32_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_SMALL_PIC LV_PLUGIN_FONT_ID_ARIALUNI_18_1BPP +#define LV_USER_CFG_STAMP_FONT_ID_SMALL LV_PLUGIN_FONT_ID_ARIALUNI_16_1BPP #define LV_USER_CFG_STAMP_FONT_ID_XS LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_8_1BPP #define LV_USER_CFG_STAMP_LETTER_SPACE 0 @@ -1026,9 +1029,10 @@ #define LV_USER_CFG_STAMP_EXT_HEIGHT 0 /* please always fill ARGB8888, alpha channel will be discarded if output format is yuv (Photo UIDateImprint) */ -#define LV_USER_CFG_STAMP_COLOR_TEXT 0xFFFFFFFF /* text color */ -#define LV_USER_CFG_STAMP_COLOR_BACKGROUND 0XFF000000 /* background color */ -#define LV_USER_CFG_STAMP_COLOR_FRAME 0x00000000 /* frame color */ +#define LV_USER_CFG_STAMP_COLOR_TEXT 0xFFFFFFFF /* text color */ +#define LV_USER_CFG_STAMP_COLOR_BACKGROUND 0XFF000000 /* background color: black */ +#define LV_USER_CFG_MOVIE_DATESTAMP_COLOR_BACKGROUND 0X00000000 /* background color: none */ +#define LV_USER_CFG_STAMP_COLOR_FRAME 0x00000000 /* frame color */ /******************************************************************************************* * Enable LVGL rotate depend on VDO_USE_ROTATE_BUFFER (LV_USE_GPU_NVT_DMA2D in the lv_conf.h should be enabled) diff --git a/code/application/source/cardv/SrcCode/System/SysMain_cmd.c b/code/application/source/cardv/SrcCode/System/SysMain_cmd.c old mode 100644 new mode 100755 index e3cbf5aa4..165d8c117 --- a/code/application/source/cardv/SrcCode/System/SysMain_cmd.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_cmd.c @@ -251,7 +251,7 @@ SXCMD_ITEM("mcupara", sf_cmd_mcu_power_on_para_get, "get mcu para") SXCMD_ITEM("setusbmuxs", sf_cmd_usb_mux_s, "set usbmuxs") SXCMD_ITEM("4gusbboot", sf_cmd_cardv_4g_usb_boot, "set 4gusbboot") SXCMD_ITEM("sfcheck", sf_cmd_fs_ro_check, "sf check") - +SXCMD_ITEM("dispparaset %", sf_cmd_disp_para_set, "dispparaset v1 v2 v3 v4 v5 v6") #endif diff --git a/code/application/source/cardv/SrcCode/UIApp/MovieStamp/MovieStamp.c b/code/application/source/cardv/SrcCode/UIApp/MovieStamp/MovieStamp.c old mode 100644 new mode 100755 index 5ddad76af..192681cdf --- a/code/application/source/cardv/SrcCode/UIApp/MovieStamp/MovieStamp.c +++ b/code/application/source/cardv/SrcCode/UIApp/MovieStamp/MovieStamp.c @@ -79,6 +79,10 @@ static UINT32 g_VEncHDPathId[VENC_OUT_PORTID_MAX]={0}; //hd_videoenc_open(HD_S static UINT32 g_WaterlogoVEncHDPathId[VENC_OUT_PORTID_MAX]={0}; //hd_videoenc_open(HD_STAMP_1), Encport diff--> waterlogo: main , clone, rawenc, wifi, 0, 1, 2, 3 #endif +static HD_DIM g_ImageSize[VIDEO_IN_MAX] = {0}; +static STAMP_ADDR_INFO combined_stamp_addr[VIDEO_IN_MAX] = {0}; +static STAMP_ADDR_INFO water_logo_addr[VIDEO_IN_MAX] = {0}; + //date(HD_STAMP_0) //waterlogo(HD_STAMP_1) //multistamp1(HD_STAMP_2), multistamp2 (HD_STAMP_3), multistamp3 (HD_STAMP_4), multistamp4 (HD_STAMP_5), multistamp5 (HD_STAMP_6) @@ -530,33 +534,39 @@ void MovieStamp_Setup(UINT32 uiVEncOutPortId, UINT32 uiFlag, UINT32 uiImageWidth // break; // } - if (uiImageWidth >= 3840) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; + if (uiImageWidth >= 4608) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_16M; } - else if(uiImageWidth >=3600) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; + else if(uiImageWidth >= 4032) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_12M; } - else if(uiImageWidth >=3200) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XL; + else if(uiImageWidth >= 3264) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_8M; } - else if(uiImageWidth >=2880) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XL; - } - else if(uiImageWidth >=1920) { + else if(uiImageWidth >= 1920) + { red_id = LV_USER_CFG_STAMP_FONT_ID_LARGE; } - else if(uiImageWidth >=1080) { + else if(uiImageWidth >= 1080) + { red_id = LV_USER_CFG_STAMP_FONT_ID_MEDIUM; } - else if(uiImageWidth >=640) { + else if(uiImageWidth >= 1024) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL_PIC; + } + else if(uiImageWidth >= 640) + { red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; } - else if(uiImageWidth >=320) { - red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; - } - else { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; + else + { + red_id = LV_USER_CFG_STAMP_FONT_ID_XS; } + #if MOVIE_ISP_LOG red_id = LV_USER_CFG_STAMP_FONT_ID_MEDIUM; #endif @@ -835,6 +845,9 @@ void MovieStamp_Setup(UINT32 uiVEncOutPortId, UINT32 uiFlag, UINT32 uiImageWidth } } #endif + + g_ImageSize[uiVEncOutPortId].w = uiImageWidth; + g_ImageSize[uiVEncOutPortId].h = uiImageHeight; } @@ -903,6 +916,27 @@ void MovieStamp_DestroyBuff(void) g_MovieStampPoolAddr[i].pool_va = 0; g_MovieStampPoolAddr[i].pool_pa = 0; } + + if(combined_stamp_addr[i].pool_va != 0){ + ret = hd_common_mem_free((UINT32)combined_stamp_addr[i].pool_pa, (void *)combined_stamp_addr[i].pool_va); + if (ret != HD_OK) { + DBG_ERR("release combined stamp buffer failed! (%d)\n", ret); + break; + } + combined_stamp_addr[i].pool_va = 0; + combined_stamp_addr[i].pool_pa = 0; + } + + if(water_logo_addr[i].pool_va != 0){ + ret = hd_common_mem_free((UINT32)water_logo_addr[i].pool_pa, (void *)water_logo_addr[i].pool_va); + if (ret != HD_OK) { + DBG_ERR("release combined stamp buffer failed! (%d)\n", ret); + break; + } + water_logo_addr[i].pool_va = 0; + water_logo_addr[i].pool_pa = 0; + } + } #if(MOVIE_MULTISTAMP_FUNC == ENABLE) MovieStamp_DestroyMultiStampBuff(); @@ -967,6 +1001,104 @@ UINT32 MovieStamp_CalcBufSize(UINT32 Width, UINT32 Height, WATERLOGO_BUFFER *pWa return BufSize; } + +void MovieStamp_CombineStamp(UINT32 vid_in, UINT32 bg_color) +{ + UINT32 size; + UINT32 combined_stamp_w = g_ImageSize[vid_in].w; + UINT32 combined_stamp_h = g_VsOsdHight[vid_in]; + size = combined_stamp_w * combined_stamp_h * 2; /* ARGB4444 */ + HD_COMMON_MEM_VIRT_INFO vir_info = {0}; + + char name[16]; + + sprintf(name, "mov_stamp%lu", vid_in); + + if(combined_stamp_addr[vid_in].pool_va == 0){ + hd_common_mem_alloc(name, &combined_stamp_addr[vid_in].pool_pa, (void **)&combined_stamp_addr[vid_in].pool_va, size, DDR_ID0); + + if(combined_stamp_addr[vid_in].pool_va == 0){ + DBG_ERR("out of mem for combined stamp!\n"); + return; + } + } + + memset((void *)combined_stamp_addr[vid_in].pool_va, 0, size); + + /* draw bg */ + HD_GFX_DRAW_RECT rect = {0}; + + rect.color = bg_color; + rect.rect = (HD_IRECT){0, combined_stamp_h - g_VsOsdHight[vid_in], combined_stamp_w, g_VsOsdHight[vid_in]}; /* draw stamp region, from bottom to top */ + rect.type = HD_GFX_RECT_SOLID; + rect.thickness = 1; + rect.dst_img.dim = (HD_DIM) {combined_stamp_w, combined_stamp_h}; + rect.dst_img.ddr_id = DDR_ID0; + rect.dst_img.format = HD_VIDEO_PXLFMT_ARGB4444; + rect.dst_img.lineoffset[0] = combined_stamp_w * 2; + rect.dst_img.p_phy_addr[0] = combined_stamp_addr[vid_in].pool_pa; /* argb4444 accept virtual address */ + hd_gfx_draw_rect(&rect); + + /* copy date stamp to bg */ + HD_GFX_COPY copy = {0}; + copy.alpha = 255; + copy.colorkey = 0; + copy.dst_pos = (HD_IPOINT) {combined_stamp_w - g_VsOsdWidth[vid_in] , combined_stamp_h - g_VsOsdHight[vid_in]}; /* copy to bottom right */ + copy.dst_img.dim = (HD_DIM) {combined_stamp_w, combined_stamp_h}; + copy.dst_img.ddr_id = DDR_ID0; + copy.dst_img.format = HD_VIDEO_PXLFMT_ARGB4444; + copy.dst_img.lineoffset[0] = combined_stamp_w * 2; + copy.dst_img.p_phy_addr[0] = combined_stamp_addr[vid_in].pool_pa; + copy.src_img.ddr_id = DDR_ID0; + copy.src_img.format = HD_VIDEO_PXLFMT_ARGB4444; + + /* font conv output va as phy_addr for hdal venc stamp interface, convert it to pa for gfx */ + vir_info.va = (void*) g_VsFontOut[vid_in].GenImg.phy_addr[0]; + hd_common_mem_get(HD_COMMON_MEM_PARAM_VIRT_INFO, &vir_info); + copy.src_img.lineoffset[0] = g_VsFontOut[vid_in].GenImg.loff[0]; + copy.src_img.p_phy_addr[0] = vir_info.pa; + copy.src_img.dim = g_VsFontOut[vid_in].GenImg.dim; + copy.src_region = (HD_IRECT) {0, 0, copy.src_img.dim.w, copy.src_img.dim.h}; + hd_gfx_copy(©); + + /* copy water logo to bg */ + UINT32 water_size = g_MovieWaterInfo[vid_in].uiWidth * g_MovieWaterInfo[vid_in].uiHeight * 2; + + if(water_logo_addr[vid_in].pool_va == 0){ + hd_common_mem_alloc("water", &water_logo_addr[vid_in].pool_pa, (void **)&water_logo_addr[vid_in].pool_va, water_size, DDR_ID0); + + if(water_logo_addr[vid_in].pool_va == 0){ + DBG_ERR("out of mem for water logo!\n"); + } + + memset((void*)water_logo_addr[vid_in].pool_va, 0, water_size); + memcpy((void*)water_logo_addr[vid_in].pool_va, (void*)g_MovieWaterInfo[vid_in].uiWaterLogoAddr, water_size); + hd_common_mem_flush_cache((void*)water_logo_addr[vid_in].pool_va, water_size); + } + + HD_GFX_SCALE scale = {0}; + + memset(&scale, 0, sizeof(HD_GFX_SCALE)); + scale.src_img.ddr_id = DDR_ID0; + scale.src_img.format = HD_VIDEO_PXLFMT_ARGB4444; + scale.src_img.lineoffset[0] = g_MovieWaterInfo[vid_in].uiWidth * 2; + scale.src_img.p_phy_addr[0] = water_logo_addr[vid_in].pool_pa; + scale.src_img.dim = (HD_DIM) {g_MovieWaterInfo[vid_in].uiWidth, g_MovieWaterInfo[vid_in].uiHeight}; + scale.src_region = (HD_IRECT) {0, 0, scale.src_img.dim.w, scale.src_img.dim.h}; + scale.dst_img.ddr_id = DDR_ID0; + scale.dst_img.format = HD_VIDEO_PXLFMT_ARGB4444; + scale.dst_img.lineoffset[0] = combined_stamp_w * 2; + scale.dst_img.p_phy_addr[0] = combined_stamp_addr[vid_in].pool_pa; + scale.dst_img.dim = (HD_DIM) {combined_stamp_w, combined_stamp_h}; + scale.dst_region.w = (scale.src_img.dim.w * scale.dst_img.dim.h) / scale.src_img.dim.h; + scale.dst_region.h = scale.dst_img.dim.h; + scale.dst_region.x = 0; + scale.dst_region.y = 0; + hd_gfx_scale(&scale); + + hd_common_mem_flush_cache((void *)combined_stamp_addr[vid_in].pool_va, size); +} + void MovieStamp_UpdateData(void) { UINT32 i; @@ -1084,15 +1216,21 @@ void MovieStamp_UpdateData(void) //DBG_DUMP("i=%d, w=%d, %d, %d\r\n", i,g_VsOsdWidth[i], g_VsOsdHight[i],g_VsFontOut[i].GenImg.loff[0]); //MovieStamp_VsUpdateOsd(i, TRUE, 1, g_MovieStampPos[i].uiX, g_MovieStampPos[i].uiY, g_VsOsdWidth[i], g_VsOsdHight[i], (void*)g_pVsFontDataAddr[i]); + MovieStamp_CombineStamp(i, 0x0); + // update 1st stamp - if(MovieStamp_VsUpdateOsd(g_VEncHDPathId[i], TRUE, MOVIE_STAMP_LAYER1, VS_DATESTAMP_REGION, g_MovieStampPos[i].uiX, g_MovieStampPos[i].uiY, g_VsOsdWidth[i], g_VsOsdHight[i], (void*)g_pVsFontDataAddr[i])){ +// if(MovieStamp_VsUpdateOsd(g_VEncHDPathId[i], TRUE, MOVIE_STAMP_LAYER1, VS_DATESTAMP_REGION, g_MovieStampPos[i].uiX, g_MovieStampPos[i].uiY, g_VsOsdWidth[i], g_VsOsdHight[i], (void*)g_pVsFontDataAddr[i])){ + UINT32 combined_stamp_w = g_ImageSize[i].w; + UINT32 combined_stamp_h = g_VsOsdHight[i]; + + if(MovieStamp_VsUpdateOsd(g_VEncHDPathId[i], TRUE, MOVIE_STAMP_LAYER1, VS_DATESTAMP_REGION, 0, g_ImageSize[i].h - combined_stamp_h, combined_stamp_w, combined_stamp_h, (void*)combined_stamp_addr[i].pool_va)){ MovieStamp_VsSwapOsd(i, (VSSTAMP_DATE_HD_STAMP_ID-HD_STAMP_BASE),g_VEncHDPathId[i]); }else{ MovieStamp_VsStop(i, (VSSTAMP_DATE_HD_STAMP_ID-HD_STAMP_BASE)); } // update waterlogo -#if defined (WATERLOGO_FUNCTION) && (WATERLOGO_FUNCTION == ENABLE) +#if 0 /* defined (WATERLOGO_FUNCTION) && (WATERLOGO_FUNCTION == ENABLE) */ if (g_bWaterLogoEnable[i]) { DBG_IND("water Width=%dx%d\r\n",g_MovieWaterInfo[i].uiWidth, g_MovieWaterInfo[i].uiHeight); //MovieStamp_VsUpdateOsd(i, TRUE, 2, g_MovieWaterInfo[i].uiXPos, g_MovieWaterInfo[i].uiYPos, g_MovieWaterInfo[i].uiWidth, g_MovieWaterInfo[i].uiHeight, (void*)g_MovieWaterInfo[i].uiWaterLogoYAddr); @@ -1354,7 +1492,7 @@ void MovieStamp_VsFontConfig(UINT32 uiVEncOutPortId) YUV_GET_RGB(y, u, v, r, g, b); #if defined(_UI_STYLE_LVGL_) - 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; + 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; #else g_VsFontIn[uiVEncOutPortId].ciTransparet = ((r>>4)<<8) | ((g>>4)<<4) | (b>>4); //0x0000; #endif diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c old mode 100644 new mode 100755 index 8f4afd879..20a48978e --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -79,6 +79,8 @@ UIAppPhotoExeInfoType *pPhotoExeInfo = &UIAppPhotoExeInfo; static USIZE g_photo_ImageRatioSize; +extern UINT8 StampStr[64]; + HD_DIM DZoom_5M_Table[DZOOM_MAX_STEP] = { {2592, 1944}, //1.0 {2536, 1768}, //1.1x @@ -1560,7 +1562,11 @@ void UiDateImprint_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen) BOOL UiDateImprint_UpdateDate(char *StrBuf, UINT32 buff_len) { - char *str = NULL; + char *dateStr = NULL; + INT16 cTemper = 0; + INT16 fTemper = 0; + UINT8 temperStr[64] = {0}; + DBG_IND("\r\n"); DateTime_Load(); @@ -1575,28 +1581,30 @@ BOOL UiDateImprint_UpdateDate(char *StrBuf, UINT32 buff_len) switch (UI_GetData(FL_DATE_STAMP)) { case DATEIMPRINT_DATE: - str = DateTime_MakeYMD(); - DBG_IND("DATEIMPRINT_DATE, str=%s\r\n", str); + dateStr = DateTime_MakeYMD(); + DBG_IND("DATEIMPRINT_DATE, str=%s\r\n", dateStr); break; case DATEIMPRINT_DATE_TIME: - str = DateTime_MakeYMDHMS(); - DBG_IND("DATEIMPRINT_DATE_TIME, str=%s\r\n", str); - - + dateStr = DateTime_MakeYMDHMS(); + DBG_IND("DATEIMPRINT_DATE_TIME, str=%s\r\n", dateStr); break; default: StrBuf[0] = 0; //Empty String } + //printf("[%s:%d]dateStr=%s\n", __FUNCTION__, __LINE__, dateStr); + #endif - if (strncmp(str,StrBuf,strlen(str))) { - strncpy(StrBuf, str, buff_len - 1); - return TRUE; - } + sf_stamp_temperature_get(&fTemper, &cTemper); + snprintf((char *)temperStr, sizeof(temperStr), "%d%c%cF %d%c%cC", fTemper, 0xC2, 0xB0, cTemper, 0xC2, 0xB0); + //printf("[%s:%d]temperStr=%s\n", __FUNCTION__, __LINE__, temperStr); - return FALSE; + sprintf((char *)StrBuf, "%s %s", temperStr, dateStr); + printf("[%s:%d]StrBuf=%s\n", __FUNCTION__, __LINE__, StrBuf); + + return TRUE; } //extern void GOIO_Turn_Onoff_IRCUT(BOOL onoff); @@ -4334,14 +4342,14 @@ static void PhotoExe_Preview_SliceEncode_Get_Src_Slice_Info( src_info->width = video_frame.dim.w; src_info->height = video_frame.dim.h; - if(src_info->slice_num > 1){ - src_info->slice_height = ALIGN_CEIL(video_frame.dim.h / src_info->slice_num, 2); - src_info->last_slice_height = src_info->height - src_info->slice_height * (src_info->slice_num - 1); - } - else{ - src_info->slice_height = video_frame.dim.h; - src_info->last_slice_height = src_info->slice_height; - } + if(src_info->slice_num > 1){ + src_info->slice_height = ALIGN_CEIL((src_info->width * dst_info->slice_height) / dst_info->width, 2); + src_info->last_slice_height = ALIGN_CEIL(src_info->height - src_info->slice_height * (src_info->slice_num - 1), 2); + } + else{ + src_info->slice_height = video_frame.dim.h; + src_info->last_slice_height = src_info->slice_height; + } PHOTO_SLICE_ENC_DUMP("Src Slice Info: size = {%lu,%lu} slice num = {%lu} slice height = {%lu} last slice height = {%lu}\r\n", src_info->width, src_info->height, src_info->slice_num, src_info->slice_height, src_info->last_slice_height); @@ -4689,7 +4697,8 @@ static INT32 PhotoExe_Preview_SliceEncode_Init_VF_GFX_Slice( UINT32 offset; UINT32 scr_slice_height = (slice_idx == (src_slice_info.slice_num - 1)) ? src_slice_info.last_slice_height : src_slice_info.slice_height; UINT32 dst_slice_height = (slice_idx == (dst_slice_info.slice_num - 1)) ? dst_slice_info.last_slice_height : dst_slice_info.slice_height; - + UINT32 dst_scale_slice_height = (slice_idx == (dst_slice_info.slice_num - 1)) ? (src_slice_info.last_slice_height * dst_slice_info.slice_height / src_slice_info.slice_height) : dst_slice_info.slice_height; + /* dst img */ addr_dst[0] = dst_buffer_info.pa; @@ -4710,7 +4719,7 @@ static INT32 PhotoExe_Preview_SliceEncode_Init_VF_GFX_Slice( vf_gfx_scale_param->dst_region.x = 0; vf_gfx_scale_param->dst_region.y = 0; vf_gfx_scale_param->dst_region.w = dst_slice_info.width; - vf_gfx_scale_param->dst_region.h = dst_slice_height; + vf_gfx_scale_param->dst_region.h = dst_scale_slice_height; vf_gfx_scale_param->dst_img.blk = dst_buffer_info.blk; vf_gfx_scale_param->quality = HD_GFX_SCALE_QUALITY_NULL; @@ -4747,6 +4756,23 @@ static INT32 PhotoExe_Preview_SliceEncode_Init_VF_GFX_Slice( addr_dst[0], addr_dst[1] ); + if(slice_idx == (dst_slice_info.slice_num - 1)){ + + HD_GFX_DRAW_RECT draw_rect = {0}; + + draw_rect.dst_img.dim = vf_gfx_scale_param->dst_img.dim; + draw_rect.dst_img.ddr_id = vf_gfx_scale_param->dst_img.ddr_id; + draw_rect.dst_img.format = vf_gfx_scale_param->dst_img.pxlfmt; + draw_rect.dst_img.p_phy_addr[0] = vf_gfx_scale_param->dst_img.phy_addr[0]; + draw_rect.dst_img.p_phy_addr[1] = vf_gfx_scale_param->dst_img.phy_addr[1]; + draw_rect.dst_img.lineoffset[0] = vf_gfx_scale_param->dst_img.loff[0]; + draw_rect.dst_img.lineoffset[1] = vf_gfx_scale_param->dst_img.loff[1]; + draw_rect.color = LV_USER_CFG_STAMP_COLOR_BACKGROUND; + draw_rect.thickness = 1; + draw_rect.type = HD_GFX_RECT_SOLID; + draw_rect.rect = (HD_IRECT){0, 0, vf_gfx_scale_param->dst_img.dim.w, vf_gfx_scale_param->dst_img.dim.h}; + hd_gfx_draw_rect(&draw_rect); + } return E_OK; } diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIDateImprint.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIDateImprint.c old mode 100644 new mode 100755 index fcb0e602d..71081a011 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIDateImprint.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIDateImprint.c @@ -35,6 +35,9 @@ #define __DBGFLT__ "*" //*=All, [mark]=CustomClass #include +#include "UIInfo/UIInfo.h" +#include "sf_battery.h" + #define USE_DBG_STAMP DISABLE /**************************************************** @@ -56,6 +59,8 @@ #define LV_USER_FONT_CONV_ALIGN_W 8 #define LV_USER_FONT_CONV_ALIGN_H 2 +lv_user_font_conv_draw_cfg draw_cfg = {0}; + static void _movie_stamp_lv_cfg_init(lv_user_font_conv_draw_cfg *draw_cfg) { lv_user_font_conv_draw_cfg_init(draw_cfg); @@ -72,13 +77,16 @@ static void _movie_stamp_lv_cfg_init(lv_user_font_conv_draw_cfg *draw_cfg) static UINT32 UIDateImprint_GetStampMemSize_LVGL(const lv_font_t *pFont, char* text) { - lv_user_font_conv_draw_cfg draw_cfg = {0}; + //lv_user_font_conv_draw_cfg draw_cfg = {0}; lv_user_font_conv_calc_buffer_size_result result = {0}; _movie_stamp_lv_cfg_init(&draw_cfg); draw_cfg.string.font = (lv_font_t *)pFont; draw_cfg.string.text = text; + + printf("[%s:%d]draw_cfg.string.text=%s\n", __FUNCTION__, __LINE__, draw_cfg.string.text); + draw_cfg.align_w = LV_USER_FONT_CONV_ALIGN_W; draw_cfg.align_h = LV_USER_FONT_CONV_ALIGN_H; @@ -90,13 +98,15 @@ static UINT32 UIDateImprint_GetStampMemSize_LVGL(const lv_font_t *pFont, char* t lv_user_font_conv_calc_buffer_size(&draw_cfg, &result); + printf("[%s:%d]result.output_buffer_size=%d\n", __FUNCTION__, __LINE__, result.output_buffer_size); + return result.output_buffer_size; } static ER FontConv_LVGL(FONT_CONV_IN *pIn, FONT_CONV_OUT *pOut) { HD_RESULT r; - lv_user_font_conv_draw_cfg draw_cfg = {0}; + //lv_user_font_conv_draw_cfg draw_cfg = {0}; lv_user_font_conv_mem_cfg mem_cfg = {0}; lv_user_font_conv_calc_buffer_size_result result = {0}; lv_color32_t color32; @@ -138,6 +148,7 @@ static ER FontConv_LVGL(FONT_CONV_IN *pIn, FONT_CONV_OUT *pOut) mem_cfg.output_buffer = (void*)pIn->MemAddr; mem_cfg.output_buffer_size = pIn->MemSize; + printf("[%s:%d]mem_cfg.output_buffer_size=%d\n", __FUNCTION__, __LINE__, mem_cfg.output_buffer_size); lv_user_font_conv_calc_buffer_size(&draw_cfg, &result); lv_user_font_conv(&draw_cfg, &mem_cfg); @@ -433,10 +444,15 @@ void UiDateImprint_DestroyBuff(void) } } +char StampStr[64] = {0}; + extern BOOL UiDateImprint_UpdateDate(char *StrBuf, UINT32 buff_len); char * UiDateImprint_InitStrBuf(void) { - char *str = NULL; + char *dateStr = NULL; + INT16 cTemper = 0; + INT16 fTemper = 0; + UINT8 temperStr[32] = {0}; DateTime_Load(); @@ -450,19 +466,27 @@ char * UiDateImprint_InitStrBuf(void) switch (UI_GetData(FL_DATE_STAMP)) { case DATEIMPRINT_DATE: - str = DateTime_MakeYMD(); + dateStr = DateTime_MakeYMD(); break; case DATEIMPRINT_DATE_TIME: - str = DateTime_MakeYMDHMS(); + dateStr = DateTime_MakeYMDHMS(); break; + default: break; } #endif - return str; + sf_stamp_temperature_get(&fTemper, &cTemper); + snprintf((char *)temperStr, sizeof(temperStr), "%d%c%cF %d%c%cC", fTemper, 0xC2, 0xB0, cTemper, 0xC2, 0xB0); + //printf("[%s:%d]temperStr=%s\n", __FUNCTION__, __LINE__, temperStr); + + snprintf((char *)StampStr, sizeof(StampStr), "%s %s", temperStr, dateStr); + printf("[%s:%d]StampStr=%s\n", __FUNCTION__, __LINE__, StampStr); + + return StampStr; } UINT32 UiDateImprint_GetMaxWorkBufSize(DS_STAMP_INFOR *stampInfo) @@ -477,34 +501,45 @@ void UiDateImprint_SelStampFont(UINT32 uiImageWidth, char **font, UINT32 *ScaleF lv_plugin_res_id red_id; - if (uiImageWidth >= 3840) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; + if(uiImageWidth >= 5632) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_24M; } - else if(uiImageWidth >=3600) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; + else if(uiImageWidth >= 4608) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_16M; } - else if(uiImageWidth >=3200) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XL; + else if(uiImageWidth >= 4032) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_12M; } - else if(uiImageWidth >=2880) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XL; + else if(uiImageWidth >= 3264) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_8M; } - else if(uiImageWidth >=1920) { + else if(uiImageWidth >= 1920) + { red_id = LV_USER_CFG_STAMP_FONT_ID_LARGE; } - else if(uiImageWidth >=1080) { + else if(uiImageWidth >= 1080) + { red_id = LV_USER_CFG_STAMP_FONT_ID_MEDIUM; } - else if(uiImageWidth >=640) { + else if(uiImageWidth >= 1024) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL_PIC; + } + else if(uiImageWidth >= 640) + { red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; } - else if(uiImageWidth >=320) { - red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; - } - else { + else + { red_id = LV_USER_CFG_STAMP_FONT_ID_XS; } + printf("[%s:%d]uiImageWidth=%d,stamp font id=%d\n", __FUNCTION__, __LINE__, uiImageWidth, red_id); + *font = (char *) lv_plugin_get_font(red_id)->font; #else @@ -554,33 +589,45 @@ void UiDateImprint_GetStampFont(UINT32 uiImageWidth, char **font) lv_plugin_res_id red_id; - if (uiImageWidth >= 3840) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; - } - else if(uiImageWidth >=3600) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; - } - else if(uiImageWidth >=3200) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XL; - } - else if(uiImageWidth >=2880) { - red_id = LV_USER_CFG_STAMP_FONT_ID_XL; - } - else if(uiImageWidth >=1920) { - red_id = LV_USER_CFG_STAMP_FONT_ID_LARGE; - } - else if(uiImageWidth >=1080) { - red_id = LV_USER_CFG_STAMP_FONT_ID_MEDIUM; - } - else if(uiImageWidth >=640) { - red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; - } - else if(uiImageWidth >=320) { - red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; - } - else { - red_id = LV_USER_CFG_STAMP_FONT_ID_XXL; - } + + if(uiImageWidth >= 5632) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_24M; + } + else if(uiImageWidth >= 4608) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_16M; + } + else if(uiImageWidth >= 4032) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_12M; + } + else if(uiImageWidth >= 3264) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_8M; + } + else if(uiImageWidth >= 1920) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_LARGE; + } + else if(uiImageWidth >= 1080) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_MEDIUM; + } + else if(uiImageWidth >= 1024) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL_PIC; + } + else if(uiImageWidth >= 640) + { + red_id = LV_USER_CFG_STAMP_FONT_ID_SMALL; + } + else + { + red_id = LV_USER_CFG_STAMP_FONT_ID_XS; + } + + printf("[%s:%d]uiImageWidth=%d,stamp font id=%d\n", __FUNCTION__, __LINE__, uiImageWidth, red_id); *font = (char *) lv_plugin_get_font(red_id)->font; @@ -725,8 +772,8 @@ INT32 UiDateImprint_CalcPosition(DATE_IMPRINT_INFO *pInfo, UPOINT *pos) } DBG_IND("photo_w =%d, photo_h=%d, gen w=%d, h=%d\r\n",photo_w,photo_h,(pYuvInfo->GenImg.pw[0]),pYuvInfo->GenImg.ph[0]); - - ofs = pYuvInfo->GenImg.ph[0]; + //Leave blank to the right of the date watermark + ofs = pYuvInfo->GenImg.ph[0]/2; if(photo_w >= (pYuvInfo->GenImg.pw[0] + ofs)){ pos->x = ALIGN_ROUND_4(photo_w - pYuvInfo->GenImg.pw[0] - ofs); @@ -769,6 +816,7 @@ ER UiDateImprint_UpdateData(DATE_IMPRINT_INFO *pInfo) } pStampInfo->PosX = pos.x; pStampInfo->PosY = pos.y; + printf("[%s:%d]pStampInfo->PosX=%d,pStampInfo->PosY=%d\n", __FUNCTION__, __LINE__, pStampInfo->PosX, pStampInfo->PosY); pStampInfo->Img = pYuvInfo->GenImg; //memcpy(&pStampInfo->Img, &pYuvInfo->GenImg, sizeof(VDO_FRAME)); @@ -861,21 +909,90 @@ void UiDateImprint_DrawBG(DS_STAMP_INFOR *stampInfo, HD_VIDEO_FRAME* Img) param.color = LV_USER_CFG_STAMP_COLOR_BACKGROUND; /* ARGB format */ param.thickness = 10; param.rect.w = Img->dim.w; - param.rect.h = stampInfo->Img.dim.h; + param.rect.h = stampInfo->Img.dim.h*11/10; /*add heigt*/ param.rect.x = 0; - param.rect.y = stampInfo->PosY; + //param.rect.y = stampInfo->PosY; + param.rect.y = Img->dim.h - param.rect.h; param.type = HD_GFX_RECT_SOLID; + printf("[%s:%d]Img->dim.h=%d,param.rect.h=%d,stampInfo->PosY=%d\n", __FUNCTION__, __LINE__, Img->dim.h, param.rect.h, stampInfo->PosY); hd_gfx_draw_rect(¶m); } +void UiDateImprint_AttachString(DS_STAMP_INFOR *stampInfo, HD_VIDEO_FRAME* Img, UINT8* name, bool enable_ckey, UINT32 padding, UINT32* x_curr_ofs) +{ + //lv_user_font_conv_draw_cfg draw_cfg = {0}; + lv_user_font_conv_calc_buffer_size_result buff_size = {0}; + lv_user_font_conv_mem_cfg mem_cfg = {0}; + VF_GFX_SCALE param_img = {0}; + HD_VIDEO_FRAME src_img; + void *va; + UINT32 pa; + HD_RESULT ret; + HD_COMMON_MEM_DDR_ID ddr_id = DDR_ID0; + + //_movie_stamp_lv_cfg_init(&draw_cfg); + + draw_cfg.string.text = (char*)name; + /*draw_cfg.string.align = LV_USER_CFG_STAMP_TEXT_ALIGN; + draw_cfg.align_w = LV_USER_FONT_CONV_ALIGN_W; + draw_cfg.align_h = LV_USER_FONT_CONV_ALIGN_H; + draw_cfg.mode = LV_USER_FONT_CONV_DRAW_TEXT; + if(PhotoExe_GetCapYUV420En()) + { + draw_cfg.fmt = HD_VIDEO_PXLFMT_YUV420; + }else + { + draw_cfg.fmt = HD_VIDEO_PXLFMT_YUV422; + } + UiDateImprint_GetStampFont(src_img.dim.w, (char**)&draw_cfg.string.font);*/ + + lv_user_font_conv_calc_buffer_size(&draw_cfg, &buff_size); + + ret = hd_common_mem_alloc("stamp_font", &pa, (void **)&va, buff_size.output_buffer_size, ddr_id); + if (ret != HD_OK) { + DBG_ERR("custom_stamp_buffer allocate failed\n\r"); + } + else { + mem_cfg.output_buffer = va; + mem_cfg.output_buffer_size = buff_size.output_buffer_size; + } + + lv_user_font_conv(&draw_cfg, &mem_cfg); + lv_user_font_conv_cfg_to_hd_frame( + &draw_cfg, + &mem_cfg, + buff_size.width, + buff_size.height, + &src_img + ); + + memset(¶m_img, 0, sizeof(param_img)); + param_img.quality = HD_GFX_SCALE_QUALITY_NULL; + param_img.src_img = src_img; + param_img.src_region.x = 0; + param_img.src_region.y = 0; + param_img.src_region.w = src_img.dim.w; + param_img.src_region.h = src_img.dim.h; + param_img.engine = 0; + param_img.dst_img = *Img; + param_img.dst_region.w = (src_img.dim.w / src_img.dim.h) * stampInfo->Img.ph[0]; + param_img.dst_region.h = stampInfo->Img.ph[0]; + param_img.dst_region.x = (*x_curr_ofs - padding - param_img.dst_region.w); + param_img.dst_region.y = param_img.dst_img.dim.h - param_img.dst_region.h; + + vf_gfx_scale(¶m_img, 1); + + *x_curr_ofs = param_img.dst_region.x; +} + #define LV_USER_FONT_CONV_ALIGN_W 8 #define LV_USER_FONT_CONV_ALIGN_H 2 /* YUV color key */ #define CKEY_Y 0x0 -#define CKEY_U 0x88 -#define CKEY_V 0x88 +#define CKEY_U 0x80 +#define CKEY_V 0x80 void UiDateImprint_AttachICON(DS_STAMP_INFOR *stampInfo, HD_VIDEO_FRAME* Img, lv_plugin_res_id res_id, bool enable_ckey, UINT32 padding, UINT32* x_curr_ofs) { @@ -952,7 +1069,15 @@ void UiDateImprint_AttachICON(DS_STAMP_INFOR *stampInfo, HD_VIDEO_FRAME* Img, lv param_img.dst_img = *Img; param_img.dst_region.w = (src_img.dim.w / src_img.dim.h) * stampInfo->Img.ph[0]; param_img.dst_region.h = stampInfo->Img.ph[0]; - param_img.dst_region.x = (*x_curr_ofs - padding - param_img.dst_region.w); + printf("[%s:%d]padding=%d,param_img.dst_region.w=%d,stampInfo->PosY=%d\n", __FUNCTION__, __LINE__, padding, param_img.dst_region.w, stampInfo->PosY); + if(res_id == LV_PLUGIN_IMG_ID_ICON_10234_GPS) + { + param_img.dst_region.x = ALIGN_FLOOR_8(*x_curr_ofs - param_img.dst_region.w); + } + else + { + param_img.dst_region.x = (*x_curr_ofs - padding - param_img.dst_region.w); + } param_img.dst_region.y = stampInfo->PosY; vf_gfx_scale(¶m_img, 1); @@ -991,6 +1116,8 @@ void UiDateImprint_AttachLogo(DS_STAMP_INFOR *stampInfo, HD_VIDEO_FRAME* Img) addr[1] = addr[0] + (lineoff[0] * g_WaterLogo_yuv420_486.uiHeight); vf_init_ex(&logo, g_WaterLogo_yuv420_486.uiWidth, g_WaterLogo_yuv420_486.uiHeight, Img->pxlfmt, lineoff, addr); + printf("[%s:%d]Img->dim.w=%d, Img->dim.h=%d\n", __FUNCTION__, __LINE__, Img->dim.w, Img->dim.h); + param.quality = HD_GFX_SCALE_QUALITY_NULL; param.src_img = logo; param.src_region.x = 0; @@ -1000,9 +1127,11 @@ void UiDateImprint_AttachLogo(DS_STAMP_INFOR *stampInfo, HD_VIDEO_FRAME* Img) param.engine = 0; param.dst_img = *Img; param.dst_region.x = 0; - param.dst_region.y = stampInfo->PosY; - param.dst_region.w = (g_WaterLogo_yuv420_486.uiWidth / g_WaterLogo_yuv420_486.uiHeight) * stampInfo->Img.ph[0]; - param.dst_region.h = stampInfo->Img.ph[0]; + param.dst_region.y = Img->dim.h - stampInfo->Img.ph[0]*3; + param.dst_region.w = (g_WaterLogo_yuv420_486.uiWidth / g_WaterLogo_yuv420_486.uiHeight) * stampInfo->Img.ph[0]*3; + param.dst_region.h = stampInfo->Img.ph[0]*3; + + printf("[%s:%d]param.dst_region:%d %d %d %d\n", __FUNCTION__, __LINE__, param.dst_region.x, param.dst_region.y, param.dst_region.w, param.dst_region.h); vf_gfx_scale(¶m, 1); hd_common_mem_free(pa, va); @@ -1138,6 +1267,108 @@ UINT8 sf_solar_to_Lunar(UINT16 Year,UINT8 Month, UINT8 Day) return LunarDay; } +void sf_get_gps_info_str(UINT8 *str, UINT8 type) +{ + UINT32 i = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + printf("[%s:%d]puiPara->GpsSwitch=%d,puiPara->Latitude:%s,puiPara->Longitude:%s\n", + __FUNCTION__, __LINE__, puiPara->GpsSwitch, puiPara->Latitude, puiPara->Longitude); + if(puiPara->GpsSwitch == SF_ON) + { + if((puiPara->Latitude[0] == '\0') || (puiPara->Longitude[0] == '\0')) + { + str[0] = '\0'; + } + else if(type == 1) + { + str[i++] = puiPara->Latitude[9]; + str[i++] = puiPara->Latitude[0]; + str[i++] = puiPara->Latitude[1]; + str[i++] = 0xC2; + str[i++] = 0xB0; + str[i++] = puiPara->Latitude[2]; + str[i++] = puiPara->Latitude[3]; + str[i++] = 0x27; // ' + str[i++] = puiPara->Latitude[5]; + str[i++] = puiPara->Latitude[6]; + str[i++] = 0x22; // " + str[i++] = ' '; + str[i++] = puiPara->Longitude[10]; + str[i++] = puiPara->Longitude[0]; + str[i++] = puiPara->Longitude[1]; + str[i++] = puiPara->Longitude[2]; + str[i++] = 0xC2; + str[i++] = 0xB0; + str[i++] = puiPara->Longitude[3]; + str[i++] = puiPara->Longitude[4]; + str[i++] = 0x27; // ' + str[i++] = puiPara->Longitude[6]; + str[i++] = puiPara->Longitude[7]; + str[i++] = 0x22; // " + str[i++] = '\0'; + } + else if(type == 2) + { + str[i++] = puiPara->Latitude[9]; + str[i++] = puiPara->Latitude[0]; + str[i++] = puiPara->Latitude[1]; + str[i++] = 0x2A; + str[i++] = puiPara->Latitude[2]; + str[i++] = puiPara->Latitude[3]; + str[i++] = 0x27; // ' + str[i++] = puiPara->Latitude[5]; + str[i++] = puiPara->Latitude[6]; + str[i++] = 0x22; // " + str[i++] = ' '; + str[i++] = puiPara->Longitude[10]; + str[i++] = puiPara->Longitude[0]; + str[i++] = puiPara->Longitude[1]; + str[i++] = puiPara->Longitude[2]; + str[i++] = 0x2A; + str[i++] = puiPara->Longitude[3]; + str[i++] = puiPara->Longitude[4]; + str[i++] = 0x27; // ' + str[i++] = puiPara->Longitude[6]; + str[i++] = puiPara->Longitude[7]; + str[i++] = 0x22; // " + str[i++] = '\0'; + } + else if(type == 3) + { + str[i++] = puiPara->Latitude[9]; + str[i++] = puiPara->Latitude[0]; + str[i++] = puiPara->Latitude[1]; + str[i++] = '.'; + str[i++] = puiPara->Latitude[2]; + str[i++] = puiPara->Latitude[3]; + str[i++] = '.'; + str[i++] = puiPara->Latitude[5]; + str[i++] = puiPara->Latitude[6]; + str[i++] = '-'; + + str[i++] = puiPara->Longitude[10]; + str[i++] = puiPara->Longitude[0]; + str[i++] = puiPara->Longitude[1]; + str[i++] = puiPara->Longitude[2]; + str[i++] = '.'; + str[i++] = puiPara->Longitude[3]; + str[i++] = puiPara->Longitude[4]; + str[i++] = '.'; + str[i++] = puiPara->Longitude[6]; + str[i++] = puiPara->Longitude[7]; + str[i++] = '\0'; + } + } + else + { + str[0] = '\0'; + } + + printf("[%s:%d]str:%s\n", __FUNCTION__, __LINE__, str); + return; +} + #endif @@ -1145,40 +1376,80 @@ ER UiDateImprint_CopyData(DS_STAMP_INFOR *stampInfo,HD_VIDEO_FRAME* Img, UINT32 { ER ret =E_OK; VF_GFX_COPY param ={0}; + UINT8 customString[32] = {0}; INT32 year = 0, month = 0, day = 0; UINT8 moonday = 0; + UINT8 batValue = 0; - if (stampInfo->StampWeight == 255){ + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + if (stampInfo->StampWeight == 255) + { VOS_TICK t1, t2; UINT32 padding = stampInfo->Img.ph[0]; UINT32 x_curr_ofs = stampInfo->PosX; /* start from date stamp */ + printf("[%s:%d]padding=%d\n", __FUNCTION__, __LINE__, padding); vos_perf_mark(&t1); + //draw stamp background. + UiDateImprint_DrawBG(stampInfo, Img); + + + //moon stamp year = DateTime_Get(DATETIME_YEAR); month = DateTime_Get(DATETIME_MONTH); day = DateTime_Get(DATETIME_DAY); - + printf("[%s:%d]get date time:%04d %02d %02d\n", __FUNCTION__, __LINE__, year, month, day); moonday = (sf_solar_to_Lunar(year, month, day)) - 1; - - UINT8 batValue = 0; - batValue = sf_cardv_battery_level_get(); - if(batValue < SF_BATT_LEVEL_1) - batValue = 1; - batValue -= 1; - - UiDateImprint_DrawBG(stampInfo, Img); - UiDateImprint_AttachLogo(stampInfo, Img); UiDateImprint_AttachICON(stampInfo, Img, (LV_PLUGIN_IMG_ID_ICON_10200_MOON + moonday), true, padding, &x_curr_ofs); + + //battery stamp + batValue = sf_cardv_battery_level_get(); + if(batValue < SF_BATT_LEVEL_1) + { + batValue = 1; + } + batValue -= 1; UiDateImprint_AttachICON(stampInfo, Img, (LV_PLUGIN_IMG_ID_ICON_10230_BATTERT + batValue), true, padding, &x_curr_ofs); + printf("[%s:%d]moon id=%d,battery id=%d\n", __FUNCTION__, __LINE__, + (LV_PLUGIN_IMG_ID_ICON_10200_MOON + moonday), (LV_PLUGIN_IMG_ID_ICON_10230_BATTERT + batValue)); + + //camid stamp + if((puiPara->CamNameSwitch == SF_CAMID_ON) && (puiPara->CamNameStr[0] != '\0')) + { + snprintf((char *)customString, sizeof(customString), "%s", puiPara->CamNameStr); + printf("[%s:%d]customString=%s\n", __FUNCTION__, __LINE__, customString); + UiDateImprint_AttachString(stampInfo, Img, customString, true, padding, &x_curr_ofs); + } + + //gps stamp + //sprintf((char *)puiPara->Latitude, "3458.3100N"); + //sprintf((char *)puiPara->Longitude, "12294.4200E"); + sf_get_gps_info_str(customString, 1); + if(puiPara->GpsSwitch == SF_ON) + { + if(customString[0] != '\0') + { + //snprintf((char *)customString, sizeof(customString), "N22%c%c34'57\" E113%c%c55'19\"", 0xC2, 0xB0, 0xC2, 0xB0); + printf("[%s:%d]customString=%s\n", __FUNCTION__, __LINE__, customString); + UiDateImprint_AttachString(stampInfo, Img, customString, true, padding, &x_curr_ofs); + } + + UiDateImprint_AttachICON(stampInfo, Img, LV_PLUGIN_IMG_ID_ICON_10234_GPS, true, padding, &x_curr_ofs); + } + + //logo stamp + UiDateImprint_AttachLogo(stampInfo, Img); + vos_perf_mark(&t2); DBG_DUMP("*** dur = %lu ms ***\n", vos_perf_duration(t1, t2)); - printf("[%s:%d]MOON ID=%d BATTERT ID:%d\n",__FUNCTION__,__LINE__,(LV_PLUGIN_IMG_ID_ICON_10200_MOON + moonday), (LV_PLUGIN_IMG_ID_ICON_10230_BATTERT + batValue)); - param.src_img=stampInfo->Img; + + param.src_img = stampInfo->Img; param.src_region.x = 0; param.src_region.y = 0; param.src_region.w = stampInfo->Img.loff[0]; @@ -1192,7 +1463,8 @@ ER UiDateImprint_CopyData(DS_STAMP_INFOR *stampInfo,HD_VIDEO_FRAME* Img, UINT32 ret = vf_gfx_copy(¶m); } - else{ + else + { DBG_ERR("Not support StampWeight = %d\r\n",stampInfo->StampWeight); } diff --git a/code/application/source/cardv/SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv_cmd.c b/code/application/source/cardv/SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv_cmd.c index d78372f31..62f8f8e30 100755 --- a/code/application/source/cardv/SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv_cmd.c +++ b/code/application/source/cardv/SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv_cmd.c @@ -35,7 +35,7 @@ #define MAX_WORKER_NUM 10 -#define LV_USER_FONT_CONV_TEST_FONT_RES_ID LV_PLUGIN_FONT_ID_NOTOSANS_BLACK_32_1BPP +#define LV_USER_FONT_CONV_TEST_FONT_RES_ID LV_PLUGIN_FONT_ID_ARIALUNI_32_1BPP #define LV_USER_FONT_CONV_TEST_STRING_ID LV_PLUGIN_STRING_ID_STRID_IMGSIZE static HD_RESULT lv_user_font_conv_get_hd_common_buf(UINT32 size, lv_user_font_conv_mem_cfg* mem, INT32* blk) diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c old mode 100644 new mode 100755 index 1e85f5516..6c50800ee --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c @@ -1811,6 +1811,13 @@ void SysResetFlag(void) puiPara->TimeSend4Switch = DEFAULT_TIMESEND4_SWITCH; #endif + puiPara->x1 = 0; + puiPara->x2 = 0; + puiPara->x3 = 0; + puiPara->x4 = 0; + puiPara->x5 = 0; + puiPara->x6 = 0; + #else diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h old mode 100644 new mode 100755 index 4f015dc1b..52b631aec --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h @@ -532,6 +532,13 @@ typedef struct _UIMenuUIMenuStoreInfo { UINT8 WifiApPWD[16]; UINT8 Zoom; UINT32 FileKey; + + UINT32 x1; + UINT32 x2; + UINT32 x3; + UINT32 x4; + UINT32 x5; + UINT32 x6; //============Sifar==============///Payton } UIMenuStoreInfo; diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h old mode 100644 new mode 100755 index f6689ddc6..148457a74 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -114,4 +114,5 @@ BOOL sf_cmd_fs_ro_check(unsigned char argc, char **argv); BOOL sf_check_net_work_flag(void); void sf_save_camera_info(void); UINT32 sf_cardv_wifi_start(void); +BOOL sf_cmd_disp_para_set(unsigned char argc, char **argv); #endif diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c old mode 100644 new mode 100755 index b91d8b0fa..b4390fa82 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -2376,3 +2376,37 @@ UINT32 sf_cardv_wifi_start(void) return SF_SUCCESS; } + +BOOL sf_cmd_disp_para_set(unsigned char argc, char **argv) +{ + UINT32 value = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + sscanf_s(argv[0],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + puiPara->x1 = value; + + sscanf_s(argv[1],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + puiPara->x2 = value; + + sscanf_s(argv[2],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + puiPara->x3 = value; + + sscanf_s(argv[3],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + puiPara->x4 = value; + + sscanf_s(argv[4],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + puiPara->x5 = value; + + sscanf_s(argv[5],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + puiPara->x6 = value; + + Save_MenuInfo(); + printf("[%s:%d]disp para set:%d %d %d %d %d %d\n", __FUNCTION__, __LINE__, puiPara->x1, puiPara->x2, puiPara->x3, puiPara->x4, puiPara->x5, puiPara->x6); + return TRUE; +} diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi old mode 100644 new mode 100755 index 00445acc7..42c7199e5 --- a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi @@ -15,8 +15,8 @@ partition_kernel { label = "kernel"; reg = <0x0 0x100000 0x0 0x290000>; }; partition_rootfs { label = "rootfs"; reg = <0x0 0x390000 0x0 0x3E0000>; }; partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x770000 0x0 0xB00000>; }; - partition_rtos { label = "rtos"; reg = <0x0 0x1270000 0x0 0x900000>; }; - partition_app { label = "app"; reg = <0x0 0x1B70000 0x0 0x50000>; }; /* app size depneds on hdal/samples/vendor_cfg/Makeile: ROOTFS_UBI_MAX_LEB_COUNT */ - partition_sys { label = "sys"; reg = <0x0 0x1CC0000 0x0 0x10000>; }; + partition_rtos { label = "rtos"; reg = <0x0 0x1270000 0x0 0x910000>; }; + partition_app { label = "app"; reg = <0x0 0x1B80000 0x0 0x50000>; }; /* app size depneds on hdal/samples/vendor_cfg/Makeile: ROOTFS_UBI_MAX_LEB_COUNT */ + partition_sys { label = "sys"; reg = <0x0 0x1CD0000 0x0 0x10000>; }; partition_all { label = "all"; reg = <0x0 0x0000000 0x0 0x2000000>; }; };