1.Linux水印修改:a.录像水印日期底部修改为透明;b.图片水印字体根据分辨率做区分;c.增加串口命令;

This commit is contained in:
alxer 2023-07-25 18:11:21 +08:00
parent e7df615ab8
commit cfe46de7f0
12 changed files with 624 additions and 132 deletions

13
code/application/source/cardv/Makefile Normal file → Executable file
View File

@ -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 \

View File

@ -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)

View File

@ -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

View File

@ -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);
/* 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

View File

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

View File

@ -35,6 +35,9 @@
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
#include <kwrap/debug.h>
#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(&param);
}
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(&param_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(&param_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(&param_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(&param, 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(&param);
}
else{
else
{
DBG_ERR("Not support StampWeight = %d\r\n",stampInfo->StampWeight);
}

View File

@ -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)

View File

@ -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

View File

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

1
code/lib/source/sifar/code/include/sf_common.h Normal file → Executable file
View File

@ -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

34
code/lib/source/sifar/code/source/common/sf_common.c Normal file → Executable file
View File

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

View File

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