其主要是在后拉切换的地方没有对以前后拉窗口的大小进行适配引起的,需要将切换窗口的地方进行窗口调整,进行一下调整。
在StateVideoFunc.c中以下部分
case F_LARGE_R_SMALL:
printc("F_LARGE_R_SMALL \r\n");
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_OVERLAY,MMP_DISPLAY_WIN_PIP);
dispAtt.usDisplayWidth = RTNA_LCD_GetAttr()->usPanelW;
dispAtt.usDisplayHeight = RTNA_LCD_GetAttr()->usPanelH;
MMPD_Display_GetWinAttributes(FRONT_CAM_WINDOW_ID, &winattr);
MMPS_Display_SetWindowAttrToDisp(FRONT_CAM_WINDOW_ID, winattr , dispAtt);
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, (RTNA_LCD_GetAttr()->usPanelW >> 1), (RTNA_LCD_GetAttr()->usPanelH >>1), 0,0,MMP_SCAL_FITMODE_OPTIMAL,AHC_FALSE);//RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH >>1, AHC_FALSE);
MMPS_Display_SetWinActive(FRONT_CAM_WINDOW_ID , AHC_TRUE);
MMPS_Display_SetWinActive(REAR_CAM_WINDOW_ID , AHC_TRUE);
break;
case F_SMALL_R_LARGE:
printc("F_SMALL_R_LARGE \r\n");
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_PIP,MMP_DISPLAY_WIN_OVERLAY);
MMPS_Display_SetWinScaleAndOffset(FRONT_CAM_WINDOW_ID, MMP_SCAL_FITMODE_OPTIMAL,
RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH, RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH >>1, 0, 0);
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH, 0,0,MMP_SCAL_FITMODE_OPTIMAL, AHC_FALSE);
MMPS_Display_SetWinActive(FRONT_CAM_WINDOW_ID , AHC_TRUE);
MMPS_Display_SetWinActive(REAR_CAM_WINDOW_ID , AHC_TRUE);
break;
case ONLY_FRONT:
printc("ONLY_FRONT \r\n");
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_PIP,MMP_DISPLAY_WIN_OVERLAY);
dispAtt.usDisplayWidth = RTNA_LCD_GetAttr()->usPanelW;
dispAtt.usDisplayHeight = RTNA_LCD_GetAttr()->usPanelH;
MMPD_Display_GetWinAttributes(FRONT_CAM_WINDOW_ID, &winattr);
MMPS_Display_SetWindowAttrToDisp(FRONT_CAM_WINDOW_ID, winattr , dispAtt);
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, (RTNA_LCD_GetAttr()->usPanelW >> 1), (RTNA_LCD_GetAttr()->usPanelH >>1), 0,0,MMP_SCAL_FITMODE_OPTIMAL,AHC_FALSE);//RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH >>1, AHC_FALSE);
MMPS_Display_SetWinActive(FRONT_CAM_WINDOW_ID , AHC_TRUE);
MMPS_Display_SetWinActive(REAR_CAM_WINDOW_ID , MMP_FALSE);
break;
case ONLY_REAR:
printc("ONLY_REAR \r\n");
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_OVERLAY,MMP_DISPLAY_WIN_PIP);
MMPS_Display_SetWinScaleAndOffset(FRONT_CAM_WINDOW_ID, MMP_SCAL_FITMODE_OPTIMAL,
RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH, RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH >>1, 0, 0);
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH, 0,0,MMP_SCAL_FITMODE_OPTIMAL, AHC_FALSE);
MMPS_Display_SetWinActive(FRONT_CAM_WINDOW_ID , MMP_FALSE);
MMPS_Display_SetWinActive(REAR_CAM_WINDOW_ID , AHC_TRUE);
break;
case F_TOP_R_BOTTOM:
printc("F_TOP_R_BOTTOM \r\n");
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_PIP,MMP_DISPLAY_WIN_OVERLAY);
MMPS_Display_SetWinScaleAndOffset(FRONT_CAM_WINDOW_ID, MMP_SCAL_FITMODE_OUT,
RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH, RTNA_LCD_GetAttr()->usPanelW , RTNA_LCD_GetAttr()->usPanelH >>1, 0, 0);
dispAtt.usDisplayWidth = RTNA_LCD_GetAttr()->usPanelW;
dispAtt.usDisplayHeight = RTNA_LCD_GetAttr()->usPanelH >> 1;
dispAtt.usStartX = 0;
dispAtt.usStartY = RTNA_LCD_GetAttr()->usPanelH >> 2;
MMPD_Display_GetWinAttributes(FRONT_CAM_WINDOW_ID, &winattr);
MMPS_Display_SetWindowAttrToDisp(FRONT_CAM_WINDOW_ID, winattr , dispAtt);
#ifdef FULL_IMAGE_SHOW_IN_HALF_PANEL
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID,
RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH >> 1,
0,RTNA_LCD_GetAttr()->usPanelH >> 1,
MMP_SCAL_FITMODE_OUT, AHC_FALSE);
#else
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID,
RTNA_LCD_GetAttr()->usPanelW , RTNA_LCD_GetAttr()->usPanelH,
0,0,
MMP_SCAL_FITMODE_OPTIMAL, AHC_FALSE);
#endif
MMPS_Display_SetWinActive(FRONT_CAM_WINDOW_ID , AHC_TRUE);
MMPS_Display_SetWinActive(REAR_CAM_WINDOW_ID , AHC_TRUE);
break;
case F_LEFT_R_RIGHT:
printc("F_LEFT_R_RIGHT \r\n");
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_PIP,MMP_DISPLAY_WIN_OVERLAY);
MMPS_Display_SetWinScaleAndOffset(FRONT_CAM_WINDOW_ID, MMP_SCAL_FITMODE_OUT,
RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH,
RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH,
0, 0);
dispAtt.usDisplayWidth = RTNA_LCD_GetAttr()->usPanelW >> 1 ;
dispAtt.usDisplayHeight = RTNA_LCD_GetAttr()->usPanelH;
dispAtt.usStartX = RTNA_LCD_GetAttr()->usPanelW >> 2;
dispAtt.usStartY = 0;
MMPD_Display_GetWinAttributes(FRONT_CAM_WINDOW_ID, &winattr);
MMPS_Display_SetWindowAttrToDisp(FRONT_CAM_WINDOW_ID, winattr , dispAtt);
#ifdef FULL_IMAGE_SHOW_IN_HALF_PANEL
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID,
RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH,
RTNA_LCD_GetAttr()->usPanelW >> 1,0,
MMP_SCAL_FITMODE_OPTIMAL, AHC_FALSE);
#else
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID,
RTNA_LCD_GetAttr()->usPanelW , RTNA_LCD_GetAttr()->usPanelH,
0,0,
MMP_SCAL_FITMODE_OPTIMAL, AHC_FALSE);
#endif
MMPS_Display_SetWinActive(FRONT_CAM_WINDOW_ID , AHC_TRUE);
MMPS_Display_SetWinActive(REAR_CAM_WINDOW_ID , AHC_TRUE);
break;
在dsc_Key.c中的RealIDUIKeyTask函数中在一下地方添加
gbRearState = AHC_FALSE;
//MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_OVERLAY,MMP_DISPLAY_WIN_PIP);
//F_SMALL_R_LARGE
printc("### %s,%d,gbWinExchangedCnt= %d,PIP_SWAP_TYPE_NUM= %d -\r\n", __func__, __LINE__,gbWinExchangedCnt,PIP_SWAP_TYPE_NUM);
printc("### %s,%d,gbWinExchangedCnt % PIP_SWAP_TYPE_NUM= %d -\r\n", __func__, __LINE__,gbWinExchangedCnt % PIP_SWAP_TYPE_NUM);
if((gbWinExchangedCnt % PIP_SWAP_TYPE_NUM)!=0)
{
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_PIP,MMP_DISPLAY_WIN_OVERLAY);
}
else
{
MMPS_Display_SetWinPriority(MMP_DISPLAY_WIN_OSD,MMP_DISPLAY_WIN_MAIN,MMP_DISPLAY_WIN_OVERLAY,MMP_DISPLAY_WIN_PIP);
}
DrawRearCamReverseLine(AHC_FALSE);
#if (TVOUT_PREVIEW_EN||HDMI_PREVIEW_EN)
if(AHC_IsTVConnectEx()||AHC_IsHdmiConnect()){
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, Width/2, Height/2, Width/2, Height/2, MMP_SCAL_FITMODE_OPTIMAL, 0);
}
else
#endif
{
#if (VERTICAL_LCD == VERTICAL_LCD_DEGREE_0)
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, Width/2, Height/2, Width/2, Height/2, MMP_SCAL_FITMODE_OPTIMAL, 0);
#elif (VERTICAL_LCD == VERTICAL_LCD_DEGREE_90)
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, Width/2, Height/2, 0,0,MMP_SCAL_FITMODE_OPTIMAL,AHC_FALSE);//RTNA_LCD_GetAttr()->usPanelW >> 1, RTNA_LCD_GetAttr()->usPanelH >>1, AHC_FALSE);
#elif (VERTICAL_LCD == VERTICAL_LCD_DEGREE_270)
//AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, Width/2, Height/2, Width/2, 0, MMP_SCAL_FITMODE_OPTIMAL, 0);
//F_SMALL_R_LARGE
AHC_HostUVCVideoSetWinAttribute(REAR_CAM_WINDOW_ID, RTNA_LCD_GetAttr()->usPanelW, RTNA_LCD_GetAttr()->usPanelH, 0,0,MMP_SCAL_FITMODE_OPTIMAL, AHC_FALSE);
#endif
|