找回密码
 立即注册
快捷导航
电子元器件供应链服务平台芯联无线充电解决方案
查看: 3323|回复: 4

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

    [复制链接]

该用户从未签到

61

主题

61

帖子

71

积分

注册会员

Rank: 2

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

回复

使用道具 举报

该用户从未签到

0

主题

2

帖子

29

积分

禁止发言

积分
29
发表于 2016-12-17 16:49:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2019-4-23 11:36
  • 签到天数: 191 天

    [LV.7]常住居民III

    1153

    主题

    1785

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    17727
    发表于 2016-12-20 16:33:33 | 显示全部楼层
    好牛的帖子,顶起来
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    24

    积分

    新手上路

    Rank: 1

    积分
    24
    发表于 2017-7-20 15:33:13 | 显示全部楼层
    厉害了厉害了厉害了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    帖子

    39

    积分

    新手上路

    Rank: 1

    积分
    39
    发表于 2018-11-30 15:22:07 | 显示全部楼层
    需要MSTAR8328P前后双录1080P方案。请方案商联络!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    社区