搜索
 找回密码
 立即注册

简单一步 , 微信登陆

关于MSC8328P在切换前后拉窗口大小之后接倒车线松开之后黑屏

作者:chenfangyu | 时间:2016-12-16 16:18:55 | 阅读:20638| 显示全部楼层
         其主要是在后拉切换的地方没有对以前后拉窗口的大小进行适配引起的,需要将切换窗口的地方进行窗口调整,进行一下调整。
在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                     

回复

使用道具 举报

大神点评4

xx史君梦 发表于:2016-12-17 16:49:12
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

sara 发表于:2016-12-20 16:33:33
好牛的帖子,顶起来
回复 支持 反对

使用道具 举报

米恩找资料 发表于:2017-7-20 15:33:13
厉害了厉害了厉害了
回复 支持 反对

使用道具 举报

atoptw 发表于:2018-11-30 15:22:07
需要MSTAR8328P前后双录1080P方案。请方案商联络!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版