📄 logo_cap.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 03/05/15 5:23p $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : Logo capture ****************/
/*************** control module ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#include "general.h"
#pragma NOAREGS
#ifdef SUPPORT_CAPTURE_LOGO
typedef struct structBookmark
{
BYTE bState:4;
BYTE Reserve:4;
} strucLogoCap;
static xdata strucLogoCap _rLogoCap;
#define LCAP_START 1
#define LCAP_WAIT_UOP 2
#define LCAP_WAIT_ENC 3
#define LCAP_WAIT_WRITE 4
#define LCAP_FINISH 5
// *********************************************************************
// Function : void vLogoCapStart(void)
// Description :
// Parameter :
// Return : None
// *********************************************************************
static void vLogoCapStart(void) large
{
// update OSD first
// should we wait OSD finished? Or RISC will flsuh the OSD queue?
// NOTE: when writing flash, RISC could not access flash
// NOTE: since we do not have OSD core timer here, use direct OSD command here
// switch UI state
_rUI.bState = UI_LOGO_CAPTURE;
}
// *********************************************************************
// Function : void vLogoCapEncode(void)
// Description : this is callded from UI_LOGO_CAPTURE
// Parameter :
// Return : None
// *********************************************************************
void vLogoCapEncode(void) large
{
BYTE bEncState = bSharedInfo(SI_CAP_LOGO_ST);
if (_rLogoCap.bState == LCAP_WAIT_ENC)
{
if (bEncState == SV_LCAP_WRITE)
{
// update OSD
// switch to next state
_rLogoCap.bState = LCAP_WAIT_WRITE;
}
}
else if (_rLogoCap.bState == LCAP_WAIT_WRITE)
{
if (bEncState == SV_LCAP_IDLE)
{
// update OSD
// switch UI state
_rUI.bState = UI_RUN;
// switch to next state
_rLogoCap.bState = LCAP_FINISH;
fgSetPlayPostKey(IR_TIME_OUT);
}
}
else
{
return;
}
}
// *********************************************************************
// Function : void vLogoCapInit(BYTE fgInit)
// Description : this is callded from UI_RUN
// Parameter :
// Return : None
// *********************************************************************
void vLogoCapInit(BYTE fgInit) large
{
if (!fgIsLogoCaptureAllow())
{
vSetExitInputState();
return;
}
vOsdPosClear(OSD_POS_AUD_CTRL);//leguo
vOsdPosClear(OSD_POS_REMAIN_MSG);//BillDen
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_WAIT_CAPTURE_LOGO, OSD_NO_DISAPPEAR);
// for state transition
fgSetPlayPostKey(IR_TIME_OUT);
_rLogoCap.bState = LCAP_START;
vSetOsdRefreshNow();
}
// *********************************************************************
// Function : BOOL fgLogoCapState(void)
// Description :
// Parameter :
// Return : None
// *********************************************************************
BOOL fgLogoCapState(void) large
{
switch (_rLogoCap.bState)
{
case LCAP_START:
vSendUopCmd(UOP_CAPTURE, 0, 0, 0);
// set servo stop flag
_bUISrvStatus = PLAYER_SRV_STOP;
_rLogoCap.bState = LCAP_WAIT_UOP;
break;
case LCAP_WAIT_UOP:
if (1)//(_bIRKey == IR_CAPTURE)
{
vLogoCapStart();
// switch to next state
_rLogoCap.bState = LCAP_WAIT_ENC;
}
else /* if (_bIRKey == IR_TIME_OUT) */
{
// other key cancel the capture logo
vSetExitInputState();
}
break;
case LCAP_WAIT_ENC:
break;
case LCAP_WAIT_WRITE:
break;
case LCAP_FINISH:
default:
vSetExitInputState();
break;
}
return(TRUE);
}
// *********************************************************************
// Function : void vLogoCapExit(void)
// Description :
// Parameter :
// Return : None
// *********************************************************************
void vLogoCapExit(void) large
{
// clear OSD here
if (_rLogoCap.bState == LCAP_FINISH)
{
#ifndef BBK_MENU
vOsdPosClear(OSD_POS_NORMAL);
#else
vOsdPosShow(OSD_POS_NORMAL,OSD_MSG_BBK_CAPTURE_OK, OSD_TIMEOUT);
//10/20
//BillDen bg
if (bEepromReadByte(LOGO_TYPE_POSITION)!=EV_LOGO_CAPTURED)
{
fgEepromWriteByte(LOGO_TYPE_POSITION, EV_LOGO_CAPTURED);
vSetSharedInfo(SI_DEFAULT_LOGO, SV_LOGO_CAPTURE);
vNotifySharedInfo(SI_DEFAULT_LOGO, 0, 0);
}
//BillDen end
//leguo bg
if(fgIsMute())
vOsdPosShow(OSD_POS_AUD_CTRL, OSD_MSG_MUTE, OSD_NO_DISAPPEAR);
//leguo end
#endif
}
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
}
}
// *********************************************************************
// Function : BOOL fgIsLogoCaptureAllow(void)
// Description :
// Parameter :
// Return : None
// *********************************************************************
BOOL fgIsLogoCaptureAllow(void) large
{
BYTE bPbcState;
// DVD-Audio? some special VCD? CD-G?
//if (fgIsNonPlay() || fgIsCddaPlay() || fgIsIsoPlay())
if(bSharedInfo(SI_ZOOM_SWITCH) != 0) //BillDen
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
return (FALSE);
}
if (fgIsNonPlay())
{
return (FALSE);
}
else if (fgIsCddaPlay())
{
//if (bSharedInfo(SI_DISC_TYPE) != SV_CDG)
{
return (FALSE);
}
}else if (fgIsIsoPlay()) //BillDen
{
if(bSharedInfo(SI_ISO_ITEM_TYPE) != SV_ISO_JPG || bSharedInfo(SI_MP3_BITRATE_LO) != 0xff)
return (FALSE);
}
else if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO && bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_MLP) //BillDen
return (FALSE);
bPbcState = bSharedInfo(SI_PBC_STATE);
#ifdef BBK
if (!fgIsPlay(bPbcState) && !fgIsPause(bPbcState))
#else
if (!fgIsDiscPlay(bPbcState))
#endif
{
return (FALSE);
}
return (TRUE);
}
#endif /* SUPPORT_CAPTURE_LOGO */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -