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

📄 play_pcd.c

📁 MTK 1389E SOURCE CODE
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/12/02 3:16p    $       ****************/
/***************  $Revision:: 3                $       ****************/
/***************                                       ****************/
/***************   Description :                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/

#define _PLAY_PCD_C_

#pragma NOAREGS
#include "general.h"

#if defined (DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC) && defined (SUPPORT_PCD)

// *********************************************************************
// Function : BOOL fgPCDFsMenuShow(BOOL fgOnOff)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vPCDFsMenuShow(BYTE bMode) large
{
  switch (bMode)
  {
    case FS_MENU_SHOW_INIT:
    case FS_MENU_SHOW_ON:
      vFsMenuInit(TRUE);
      break;

    case FS_MENU_SHOW_REFRESH:
      vFsMenuInit(FALSE);
      break;

    case FS_MENU_SHOW_HIDE:
      /* not support yet! */
      break;

    default:
      break;
  }
}

// *********************************************************************
// Function : void vPCDInit(BYTE bType) large
// Description : PCD play module initial
// Parameter : None
// Return    : None
// *********************************************************************
void vPCDInit(BYTE bType) large
{
  /* vPCDFsMenuShow(FS_MENU_SHOW_INIT); */
 #ifdef SUPPORT_DRM
  if (fgIsInSetupMenu()||fgIsInDRMShow())
 #else
  if (fgIsInSetupMenu())
  #endif	
  {
    vPCDFsMenuShow(FS_MENU_SHOW_INIT);
    vOsdPosClear(OSD_POS_INIT);
  }
  else
  {
    vPCDFsMenuShow(FS_MENU_SHOW_ON);
  }
}

// *********************************************************************
// Function : void vPCDExit(void) large
// Description : PCD play module exit
// Parameter : None
// Return    : None
// *********************************************************************
void vPCDExit(void) large
{
  BYTE bValue;
  
  vFsMenuExit();

  /* make sure the WB is deleted */
  vDeleteWB(FSMENU_OSD_WBIDX_BASIC);
  vDeleteWB(FSMENU_OSD_WBIDX_SEC);

/*
  Restore SI_DEFAULT_LOGO by Bright_liu 2005/12/02, for CQ(PL00001431)
  I don't know why not to change the share info in stprisc.c -> bSetLogoType()
  Maybe the logo type changed in setup menu, so I restore the share info just like vISOExit()  
*/
  switch (bEepromReadByte(LOGO_TYPE_POSITION))
  {
    case EV_LOGO_JACKET:
      bValue = SV_LOGO_JACKET;
      break;

    case EV_LOGO_BLUE:
      bValue = SV_LOGO_COLOR;
      break;

    case EV_LOGO_CAPTURED:
      bValue = SV_LOGO_CAPTURE;
      break;

    case EV_LOGO_DEFAULT:
    default:
      bValue = SV_LOGO_FLASH;
      break;
  }
  vSetSharedInfo(SI_DEFAULT_LOGO, bValue);
}

// *********************************************************************
// JPEG zoom mode
// *********************************************************************
static code BYTE pbPcdZoomRatio[] = {
  50, 75, 100, 125, 150, 200
};

#define PCD_ZOOM_MAX    TBL_SIZE(pbPcdZoomRatio)

void vPCDZoomInit(BYTE fgInit) large
{
  /* tell RISC to turn on zoom mode */
  vSendUopCmd(UOP_ZOOM_IN, 0, 0, 0);
}

BOOL fgPCDZoomState(void) large
{
  BYTE bZoom = bSharedInfo(SI_ZOOM_SWITCH);
  BOOL fgRet = TRUE;
  BYTE bIdx;
  
  switch (_bIRKey)
  {
    case IR_FF: /* zoom in */
    {
      for (bIdx = 0; bIdx < PCD_ZOOM_MAX; bIdx++)
      {
        if (pbPcdZoomRatio[bIdx] > bZoom)
        {
          vSendUopCmd(UOP_ZOOM_IN, pbPcdZoomRatio[bIdx], 0, 0);
          break;
        }
      }
      
      if ((bIdx == PCD_ZOOM_MAX) && (bZoom != pbPcdZoomRatio[PCD_ZOOM_MAX - 1]))
      {
        vSendUopCmd(UOP_ZOOM_IN, pbPcdZoomRatio[PCD_ZOOM_MAX - 1], 0, 0);
      }
      break;
    } /* zoom in */

    case IR_FR: /* zoom out */
    {
      for (bIdx = PCD_ZOOM_MAX; bIdx > 0 ; bIdx--)
      {
        if (pbPcdZoomRatio[bIdx - 1] < bZoom)
        {
          vSendUopCmd(UOP_ZOOM_IN, pbPcdZoomRatio[bIdx - 1], 0, 0);
          break;
        }
      }

      if ((bIdx == 0) && (bZoom != pbPcdZoomRatio[0]))
      {
        vSendUopCmd(UOP_ZOOM_IN, pbPcdZoomRatio[0], 0, 0);
      }
      break;
    } /* zoom out */

    case IR_ZOOM_IN:
    case IR_ZOOM_OUT:
      /* escape zoom mode */
      vSetExitInputState();
      break;

    default:
      fgRet = FALSE;
      break;
  }
  
  return (fgRet);
}

void vPCDZoomExit(void) large
{
  BYTE bZoom = bSharedInfo(SI_ZOOM_SWITCH);
  BYTE bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);

  if (fgIsPcdPlay() || (fgIsIsoPlay() && fgFlCheckStatus(FL_STATUS_IN_JPEG)))
  {
    if (bZoom != 0)
    {
      /* tell RISC to turn off zoom mode */
      if (fgIsHiPriorityKey(_bIRKey) == FALSE)
      {
        vSendUopCmd(UOP_ZOOM_IN, 0, 0, 0);
      }
    } /* bZoom != 0 */
  }

  // force clear OSD
  vOsdShowZoomPct(0);
}

/************************************************************************
     Function : void vOsdUpdate(void)
  Description : Update OSD/VFD
    Parameter : None
    Return    : None
************************************************************************/
BYTE bPCDHandleUopRet(BYTE bUopId, BYTE bUopRet) large
{
  BYTE bTmp;
  BYTE bRet = UOP_UPDATE;

#ifndef PLAYER_FLMENU   
  vFsMenuHandleUopRet(bUopId, bUopRet); //Mars,[2002/9/18],to handle uop return in jpg digest mode 
#endif

  if (bUopRet != SV_NO_ERROR)
  {
    return (UOP_FAIL); /* show error */
  }

  switch (bUopId)
  {
    case UOP_DIGITAL_BTN:
    case UOP_ARROW_BTN:
    {
      bRet = UOP_OK; /* no show error */
      break;
    }

    /* normal playback */
    case UOP_PLAY:
      vOsdShowPlayStatus(OSD_SHOW_PLAY, OSD_TIMEOUT_SHORT);
      break;

    /* case UOP_PAUSE: */
    /* case UOP_STOP: */
    case UOP_NEXT:
      vOsdShowPlayStatus(OSD_SHOW_NEXT_ITEM, OSD_TIMEOUT_SHORT);
      break;

    case UOP_PREVIOUS:
      vOsdShowPlayStatus(OSD_SHOW_PREV_ITEM, OSD_TIMEOUT_SHORT);
      break;

    case UOP_REPEAT:
    {
      //bTmp = bSharedInfo(SI_REPEAT_MODE);
      bTmp = bFlGetRepeatType();
      
      if (bUopRet == SV_NO_ERROR)
      {
        switch (bTmp)
        {
          case SV_REPEAT_ALL:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_ALL, OSD_TIMEOUT_SHORT);
            break;
              
          case SV_SINGLE: //Mars Wen,[2002/8/7]
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_SINGLE, OSD_TIMEOUT_SHORT);
            break;
        
          case SV_REPEAT_TRACK:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_ONE, OSD_TIMEOUT_SHORT);
            break;
        
          case SV_SHUFFLE:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_SHUFFLE, OSD_TIMEOUT_SHORT);
            break;
          
          case SV_RANDOM:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_RANDOM, 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 () */
        
        bRet = UOP_OK;
      }
      break;
    } /* UOP_REPEAT */

    /* trick mode control */
    /* case UOP_FORWARD: */
    /* case UOP_REVERSE: */
    /* case UOP_STEP: */
    /* case UOP_STEP_BACK: */
    /* case UOP_A_TO_B: */
    /* case UOP_FREEZE: */

    /* PBC control */
    /* case UOP_MENU_CALL: */
    /* case UOP_RETURN: */
    /* case UOP_CHANGE_ASTN: */
    /* case UOP_CHANGE_SPSTN: */
    /* case UOP_CHANGE_AGL: */
    /* case UOP_RESUME_PLAY: */
    /* case UOP_RESUME: */
    /* case UOP_DEFAULT: */
    /* case UOP_TOP: */
    /* case UOP_GOUP: */
    /* case UOP_STILL_OFF: */
    /* case UOP_MEMORY_PLAY: */

    /* non-PBC control */
    /* case UOP_PBC_SWITCH: */
    /* case UOP_DIGEST: */
    /* case UOP_PROGRAM: */
    case UOP_RANDOM:
    case UOP_SHUFFLE:
    {
      bTmp = bSharedInfo(SI_USR_PBC_CTRL);
      if (bUopRet == SV_NO_ERROR)
      {
        switch (bTmp)
        {
          case SV_SHUFFLE:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_SHUFFLE, OSD_TIMEOUT_SHORT);
            break;

          case SV_RANDOM:
            vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_MP3_RANDOM, OSD_TIMEOUT_SHORT);
            break;            

          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;
      }
      break;
    } /* UOP_SHUFFLE */

    /* case UOP_MEMORY: */
    /* case UOP_BOOKMARK: */

    /* item play */
    /* case UOP_TIME_PLAY: */
    /* case UOP_TITLE_PLAY: */
    /* case UOP_PTT_PLAY: */
    /* case UOP_TRACK_PLAY: */
    /* case UOP_MP3_PLAY: */
    /* case UOP_JPEG_PLAY: */

    default:
      break;
  }

  return (bRet);
}

BYTE fgPCDFFKey(void) large
{
  vSendUopCmd(UOP_FORWARD, 0, 0, 0);

  return (UOP_OK);
}

BYTE fgPCDFRKey(void) large
{

  vSendUopCmd(UOP_REVERSE, 0, 0, 0);

  return (UOP_OK);
}


BYTE fgPCDPauseKey(void) large
{
  if (bSharedInfo(SI_PBC_STATE) == SV_PAUSE)
  {
    vSendUopCmd(UOP_PLAY, 0, 0, 0);
  }
  else
  {
    vSendUopCmd(UOP_PAUSE, 0, 0, 0);
  }

  return (UOP_OK);
}

BYTE fgPCDDisplayKey(void) large
{
  /* show display info */
  vOsdShowError(SV_ERR_DISC_NOT_SUPPORT, OSD_TIMEOUT_SHORT);
  return (UOP_OK);
}

#if defined(PLAYER_FLMENU)
BYTE fgPCDRepeatKey(void) large
{
  BYTE bType = bFlNextRepeatType();

  if (bType == SV_SHUFFLE) {
    vSendUopCmd(UOP_SHUFFLE, SV_ON, 0x0, 0x0);
  }
  else if (bType == SV_RANDOM) {
    vSendUopCmd(UOP_RANDOM, SV_ON, 0x0, 0x0);
  }
  else {
    vSendUopCmd(UOP_REPEAT, bType, 0x0, 0x0);
  }
  
  return (UOP_OK);
}
#else
BYTE fgPCDRepeatKey(void) large
{
  return (UOP_OK);
}
#endif


BYTE fgPCDShuffleKey(void) large
{
  return (UOP_OK);
}

BYTE fgPCDZoomInKey(void) large
{
  vChangeInputState(INPUT_STATE_PCD_ZOOM, FALSE);

  return (UOP_OK);
}


#else   // #if (defined(DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC))

static code BYTE pbPcdZoomRatio[] = { 0 };

//void vPCDFsMenuShow(BYTE bMode) large
void vPCDInit(BYTE bType) large  
{ 
  BYTE bTmp = pbPcdZoomRatio[0];
} 
void vPCDExit(void) large  { }
void vPCDZoomInit(BYTE fgInit) large  { }
BOOL fgPCDZoomState(void) large  { return TRUE; }
void vPCDZoomExit(void) large  { }
BYTE bPCDHandleUopRet(BYTE bUopId, BYTE bUopRet) large
{
  return (UOP_OK);
}

#endif  // #if (defined(DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC))


⌨️ 快捷键说明

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