⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 play_com.c

📁 MTK1389 SOURCE CODE
💻 C
📖 第 1 页 / 共 5 页
字号:
  vFlHandleUopRet(bUopId, bUopRet);
#endif    
  
  if (bUopRet != SV_NO_ERROR)
  {
    bRet = UOP_FAIL; /* show error */
  }
  else
  {
    bRet = UOP_UPDATE;
  }
  
#ifdef PLAYER_FLMENU 
  if (fgIsIsoPlay()) 
  { // fix the issue : jpeg slideshow and press IR_ROOT_MENU can't go back to FILE MENU
    extern void vFlHandleUopCheck();	
    vFlHandleUopCheck();
  }  
#endif
  
  switch (bUopId)
  {
    case UOP_DIGITAL_BTN:
      if (fgIsVcdPlay())
        break;
    case UOP_ARROW_BTN:
    {
        bRet = UOP_OK; /* no show error */
      break;
    }
    
    /* normal playback */
    case UOP_PLAY:
    case UOP_RESUME_PLAY:
      if (bUopRet == SV_NO_ERROR)
      {
        vOsdShowPlayStatus(OSD_SHOW_PLAY, OSD_TIMEOUT_SHORT);
        if (fgIsDvdPlay() && (bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM))
        {
          VfdShowPlayInfo(VFD_INFO_TITLE_CHAPTER, bSharedInfo(SI_TT_NO), bSharedInfo(SI_TRACK_NO));
        }
#ifdef VCD_SUPPORT        
        else if(fgIsVcdPlay())
        {
          VfdShowPlayInfo(VFD_INFO_TRACK, 0, bSharedInfo(SI_TRACK_NO));
        }
#endif        
      }
      if (fgIsDvdPlay() )
      {
        _fgDVDStopPlayWait = FALSE ;
      }
      break;
         
      
    /* case UOP_STOP: */
    case UOP_NEXT:
      if(fgIsDvdPlay())
      {
#ifdef DVD_SHOW_MSG_FIRST
        if (bUopRet != SV_NO_ERROR)
        {
          /* TODO: recall play status */
          vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
        }
#else
        if (bUopRet == SV_NO_ERROR)
        {
          vOsdShowPlayStatus(OSD_SHOW_NEXT_CH, OSD_TIMEOUT_SHORT);
        }
#endif
      }
#ifdef VCD_SUPPORT      
      else if(fgIsVcdPlay())
      {
      	if (bUopRet == SV_NO_ERROR)
        {
          if (!fgIsInDigest(bSharedInfo(SI_PBC_STATE)))
            vOsdShowPlayStatus(OSD_SHOW_NEXT_TRK, OSD_TIMEOUT_SHORT);
        }
      }
#endif      
      break;
        
    case UOP_TOP:
    case UOP_PREVIOUS:
      if(fgIsDvdPlay())
      {
#ifdef DVD_SHOW_MSG_FIRST
        if (bUopRet != SV_NO_ERROR)
        {
          /* TODO: recall play status */
          vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
        }
#else
        if (bUopRet == SV_NO_ERROR)
        {
          vOsdShowPlayStatus(OSD_SHOW_PREV_CH, OSD_TIMEOUT_SHORT);
        }
#endif
      }
#ifdef VCD_SUPPORT      
      else if(fgIsVcdPlay())
      {
      	if (bUopRet == SV_NO_ERROR)
        {
          if (!fgIsInDigest(bSharedInfo(SI_PBC_STATE)))
            vOsdShowPlayStatus(OSD_SHOW_PREV_TRK, OSD_TIMEOUT_SHORT);
        }
      }
#endif      
      break;
      
    case UOP_REPEAT:
      bTmp1 = bSharedInfo(SI_REPEAT_MODE);
      bTmp2 = bSharedInfo(SI_USR_AUX_CTRL);
      if ((bUopRet == SV_NO_ERROR) && (!fgISUsrSeqPlay(bTmp2)))
      {
        switch (bTmp1)
        {
          case SV_REPEAT_ALL:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_ALL, OSD_TIMEOUT_SHORT);
            break;

          case SV_REPEAT_TITLE:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_TITLE, OSD_TIMEOUT_SHORT);
            break;
            
          case SV_REPEAT_TRACK:
          case SV_REPEAT_LIST:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_TRACK, OSD_TIMEOUT_SHORT);
            break;
            
          case SV_REPEAT_CHAPTER:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_CHAPTER, OSD_TIMEOUT_SHORT);
            break;

          case SV_REPEAT_NONE:
          case SV_REPEAT_ABNONE:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_OFF, OSD_TIMEOUT_SHORT);
            break;

          default:
            break;
        } /* switch () */
      }
      break;
      
#ifdef DVD_SHOW_MSG_FIRST
      case UOP_FORWARD:
      case UOP_REVERSE:
        /* note only for FF/FR/SF/SR */
        if(fgIsDvdPlay())
        {
          if (bUopRet == SV_NO_ERROR)
          {
            vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
            bRet = UOP_OK; /* no need to update again! */
          }
        }
        break;
#endif /* DVD_SHOW_MSG_FIRST */

    case UOP_MENU_CALL:
      if(fgIsDvdPlay())
      {
        if (bUopRet == SV_NO_ERROR)
        {
          vDVDShowMenuType(OSD_TIMEOUT);
        }
      }
      break;
 
    case UOP_RETURN:
#ifdef VCD_SUPPORT    
      if(fgIsVcdPlay())	
      {
        if (bUopRet == SV_NO_ERROR)
        {
          vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_PBC_MENU, OSD_TIMEOUT);
        }
      } /* UOP_RETURN */
#endif      
      break;
  
      case UOP_CHANGE_ASTN:
    case UOP_NEXT_ASTN:
#ifdef VCD_SUPPORT    
      if(fgIsVcdPlay())
       {
         if (bUopRet == SV_NO_ERROR)
         {
           bTmp1 = bSharedInfo(SI_DISC_TYPE);
           bTmp2 = bSharedInfo(SI_AST_NS);
           if (IS_SVCD_TYPE(bTmp1)
           )
           {
             if (bTmp2 > 0)
             {
               {
                 vOsdShowAudioN(OSD_AUDIO_NORMAL | OSD_TIMEOUT, bSharedInfo(SI_AST_NO) + 1, bTmp2);
               }
             }
             else
             {
               vOsdShowAudioN(OSD_AUDIO_CLEAR, 0, 0);
             }
           }
         }
       } /* UOP_NEXT_ASTN */
      else
#endif      
      	{
      bTmp1 = bSharedInfo(SI_AST_NO);
      bTmp2 = bSharedInfo(SI_AST_NS);

#ifdef AUDIO_STREAM_CHANGE_MUTE
      if (!fgIsMute()) /* if mute off */
      {
        // TODO: if change from PCM to PCM?
        if (bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_PCM)
        {
          vAdspMute(ADSP_ON, AST_PCM_CHANGE_UNMUTE_CNT); // extra mute time for PCM
        }
      }
#endif /* AUDIO_STREAM_CHANGE_MUTE */

      if ((bUopRet == SV_NO_ERROR) && (bTmp1 < bTmp2) && (bTmp2 > 0))
      {
#ifdef PLAYER_KARAOKE
        if ((bAdspCurrVocal() != VOCAL_AUDIO1) && (bAdspCurrVocal() != VOCAL_AUDIO2))
#endif
        {
          vDVDShowAudio(bTmp1, bTmp2);
        }
      }
      else
      {
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_DIRECT)
        vOsdShowAudio(OSD_AUDIO_CLEAR, 0, 0, 0, 0, 0, 0);
#else
        if (fgIsInputStateValid(INPUT_STATE_AUDIO_CHANGE))
        {
          fgSetPlayPostKey(IR_TIME_OUT);
        }
#endif
      }
      break;
    }
      break;
  
  case UOP_PBC_SWITCH:
#ifdef VCD_SUPPORT  
     	if(fgIsVcdPlay())
          {
            if (bUopRet == SV_NO_ERROR)
            {
              bTmp1 = bSharedInfo(SI_PBC_SWITCH);
              if (bTmp1 == SV_PBC_ON)
              {
                vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_PBC_ON, OSD_TIMEOUT_SHORT);
              }
              else
              {
                vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_PBC_OFF, OSD_TIMEOUT_SHORT);
              }
              #ifndef PLAYER_NO_VFD
              VfdShowPbcSwitch(bTmp1 == SV_PBC_ON);
              #endif
              /* note no need to update VFD in combine.c */
              //bRet = UOP_OK;
            }

          } /* UOP_PBC_SWITCH */
#endif           
        break;  
  
  case UOP_SHUFFLE:
      if (bUopRet == SV_NO_ERROR)
      {
          if(!fgIsIsoPlay())
          {
          bTmp1 = bSharedInfo(SI_USR_AUX_CTRL);
          bTmp2 = bSharedInfo(SI_REPEAT_MODE);

          if (fgISUsrSeqPlay(bTmp1) && fgISUsrSeqPlay(bTmp2))
          {
            break;
          }

          if (bSharedInfo(SI_USR_PBC_CTRL) == SV_SHUFFLE)
          {
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_SHUFFLE_ON, OSD_TIMEOUT_SHORT);
          }
          else
          {
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_SHUFFLE_OFF, OSD_TIMEOUT_SHORT);
          }
        }
#if(defined(DDISC_PB_SHUFFLE_ENABLED) || defined(DDISC_PB_RANDOM_ENABLED))      
        else if(fgIsIsoPlay())
        {
          bTmp1 = bSharedInfo(SI_USR_PBC_CTRL);
          bTmp2 = bSharedInfo(SI_ISO_ITEM_TYPE);
      
          if (fgFlCheckStatus(FL_STATUS_IN_MENU))
          {
            vFlIpShowInfo(IP_INFO_RPT_TYPE, bTmp1, 0);
          }
          else if ((fgIsIsoItemStill(bTmp2) || fgIsIsoItemAV(bTmp2)) && (bUopRet == SV_NO_ERROR))
          {
            switch (bTmp1)
            {
#ifdef DDISC_PB_SHUFFLE_ENABLED
              case SV_SHUFFLE:
                vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_SHUFFLE, OSD_TIMEOUT_SHORT);
                break;
#endif

#ifdef DDISC_PB_RANDOM_ENABLED
              case SV_RANDOM:
                vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_RANDOM, OSD_TIMEOUT_SHORT);
                break;
#endif

              case SV_REPEAT_NONE:
              case SV_REPEAT_ABNONE:
                vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_NORMAL_MODE, OSD_TIMEOUT_SHORT);
                break;

              default:
                break;
            }
            bRet = UOP_OK;
          }
        }
#endif /* (defined(DDISC_PB_SHUFFLE_ENABLED) || defined(DDISC_PB_RANDOM_ENABLED)) */

      }
      break;
      
#ifdef PLAYER_DIGEST
    case UOP_DIGEST:
      if (fgIsInputStateValid(INPUT_STATE_DIGEST))
      {
        if (bUopRet == SV_NO_ERROR)
        {
          fgSetPlayPostKey(IR_DONE);
        }
        else /* error occur */
        {
          fgSetPlayPostKey(IR_TIME_OUT);
        }
      }
      break;
#endif            
      
    case UOP_GROUP_PLAY:
    case UOP_TITLE_PLAY:
      if (_bInputState == INPUT_STATE_TITLE_SEARCH)
      {
        if (bUopRet != SV_NO_ERROR)
        {
          /* title search failed, escape */
          fgSetPlayPostKey(IR_TIME_OUT);
          break;
        }

        if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT)
        {
          /* call the title search state to switch to time search */
          fgSetPlayPostKey(IR_SELECT);
          _rSearchStateCtx.bType = SEARCH_DVD_TIME_CHANGE;
          vIrSetTimeOut(IR_TIMEOUT_SEARCH);
          break;
        }
        else if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT)
        {
          /* call the title search state to switch to PTT search */
          fgSetPlayPostKey(IR_SELECT);
          _rSearchStateCtx.bType = SEARCH_DVD_PTT_CHANGE;
          vIrSetTimeOut(IR_TIMEOUT_SEARCH);
          break;
        }
     }  
     
     case UOP_PTT_PLAY:
      if ((_bInputState == INPUT_STATE_PTT_SEARCH) &&
          (_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_WAIT))
      {
        if (bUopRet != SV_NO_ERROR)
        {
          /* title search failed, escape */
          fgSetPlayPostKey(IR_TIME_OUT);
          break;
        }

        /* call the chapter search state to switch to time search */
        fgSetPlayPostKey(IR_SELECT);
        _rSearchStateCtx.bType = SEARCH_DVD_TIME_CH_CHANGE;
        vIrSetTimeOut(IR_TIMEOUT_SEARCH);
        break;
      }
      else
      {
        vOsdDisplayChange(DISP_PLAY_INFO, 0);

      }
      break;
      
    case UOP_TRACK_PLAY:
#ifdef VCD_SUPPORT    
      if(fgIsVcdPlay())
      {
        if (!fgIsInGoto())  // megaa Goto
        {
          if (bUopRet == SV_NO_ERROR)
          {
            vOsdDisplayChange(DISP_PLAY_INFO, 0);
          }
          else
          {
            vOsdDisplayChange(DISP_PLAY_INFO, PLAY_INFO_CLEAR);
          }
        }
      }
      else
#endif       
      if(fgIsDvdPlay())
      {
        if ((_bInputState == INPUT_STATE_PTT_SEARCH) &&
          (_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_WAIT))
        {
          if (bUopRet != SV_NO_ERROR)
          {
            /* title search failed, escape */
            fgSetPlayPostKey(IR_TIME_OUT);
            break;
          }

          /* call the chapter search state to switch to time search */
          fgSetPlayPostKey(IR_SELECT);
          _rSearchStateCtx.bType = SEARCH_DVD_TIME_CH_CHANGE;
          vIrSetTimeOut(IR_TIMEOUT_SEARCH);
          break;
        }
        else
        {
          vOsdDisplayChange(DISP_PLAY_INFO, 0);
        }
      }
      break;  
      
    case UOP_CHANGE_SPSTN:
    case UOP_NEXT_SPSTN:
    case UOP_SP_SWITCH:
    case UOP_NEXT_SPSTN_NOSP:
    {
      bTmp1 = bSharedInfo(SI_SPST_NO);
      bTmp2 = bSharedInfo(SI_SPST_NS);

      if ((bUopRet == SV_NO_ERROR) && (bTmp2 > 0) && ((bTmp1 & 0x1f) < bTmp2))
      {
        vDVDShowSubtitle(bTmp1, bTmp2);
      }
      else
      {
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_DIRECT)
        vOsdShowSubtitle(OSD_SUBTITLE_CLEAR, 0, 0, 0, 0, 0);
#else
        if (fgIsInputStateValid(INPUT_STATE_SUBTITLE_CHANGE))
        {
          fgSetPlayPostKey(IR_TIME_OUT);
        }
#endif
      }
    }  
      break;  
      
#ifdef DVD_ANGLE_CHANGE_SELECT
    case UOP_NEXT_AGL:
    case UOP_CHANGE_AGL:
    {
      if (bUopRet == SV_NO_ERROR)
      {
        if (fgIsInputStateValid(INPUT_STATE_ANGLE_CHANGE))
        {
          vOsdShowAngle(OSD_ANGLE_HILI, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
        }
        else /* not in angle select mode */
        {
          if (fgIsAngleShow())
          {
            vOsdShowAngle(OSD_ANGLE_NORMAL, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
          }
          else
          {
            vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
          }
        }
        bRet = UOP_OK; /* no need to update angle mark again */
      }
      break;
    }
#endif /* DVD_ANGLE_CHANGE_SELECT */  
      
    /* case UOP_MP3_PLAY: */
    /* case UOP_JPEG_PLAY: */

#ifdef PLAYER_BOOKMARK
    case UOP_BOOKMARK:
      vBookmarkUpdate();
      break;
#endif      

    default:
      break;  
  
  }/* switch */  
  
  return (bRet);
}
#endif
void vShowMenuAfterPause(void) large
{
  vSetSharedInfo(SI_MPV_PAUSE,0);
  switch(bSharedInfo(SH_PAUSE_SHOW_WB))
  {
    case SV_SHOW_SETUP:
#ifdef RS232_LOG
  DBGLogS(" enter SV_SHOW_SETUP  ");
  DBGLogB(bSharedInfo(SI_OSD_STATE),bSharedInfo(SI_OSD_CMD_BUF_FULL),0xff,0xff);
  DBGLogS("\n");
#endif      
#ifndef N22_CERTIFICATION
      if ((bSharedInfo(SI_OSD_STATE) != OSD_ST_INIT) &&
          (bSharedInfo(SI_OSD_CMD_BUF_FULL) != TRUE)
  #ifdef PLAYER_FLMENU
           && (!fgFlCheckStatus(FL_STATUS_IN_HELP))
  #endif
          )
          {
#ifdef RS232_LOG
  DBGLogS(" enter SV_SHOW_SETUP  \n");
  #endif          	
            /* when osd state is init, do not accept setup menu command */
            vChangeInputState(INPUT_STATE_SETUP, FALSE);
          }
#endif /* N22_CERTIFICATION */
      break;
          
#ifdef PLAYER_PROGRAM
    case SV_SHOW_PROGRAM:       
      vChangeInputState(INPUT_STATE_PROGRAM, FALSE);
      break;
#endif /* PLAYER_PROGRAM */

#ifdef PLAYER_BOOKMARK
    case SV_SHOW_BOOKMARK:
      vChangeInputState(INPUT_STATE_BOOKMARK, FALSE);
      break;
#endif /* PLAYER_BOOKMARK */

#ifdef PLAYER_DIGEST
    case SV_SHOW_DIGEST:
      vChangeInputState(INPUT_STATE_DIGEST, FALSE);
      break;
#endif/* PLAYER_DIGEST */

    default:
      break;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -