📄 logo_cap.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 03/12/12 9:35a $ ****************/
/*************** $Revision: 2.0 $ ****************/
/*************** ****************/
/*************** 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
{
_bIRKey = IR_NONE;
_bIRKey0 = IR_NONE;
_bPlayPostKey = IR_NONE;
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
#ifdef CAPTURE_PATCH
fgEepromWriteByte(EVER_BEEN_CAPTURE_POSITION, 1);
#endif
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
if(bSharedInfo(SI_USR_AUX_CTRL)!=SV_REPEAT_AB&&bSharedInfo(SI_USR_AUX_CTRL)!=SV_REPEAT_SET_A&&bSharedInfo(SI_DISC_TYPE) != SV_DVD_VIDEO)//billy[070415] for display 'AB' after capture logo
{
if (fgIsIsoPlay())
{
vOsdPosClear(OSD_POS_ISO_REPEAT_LEFT);
}
else
{
vOsdPosClear(OSD_POS_REPEAT_LEFT);
}
}
}
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
{
#ifdef MT1389_REV_HD //added for captureing mp4_logo by tide
if((bSharedInfo(SI_ISO_ITEM_TYPE) != SV_ISO_JPG||bSharedInfo(SI_MP3_BITRATE_LO) != 0xff)&&bSharedInfo(SI_ISO_ITEM_TYPE) <=SV_ISO_MPG)
return (FALSE);
else if(bSharedInfo(SI_JPG_MODE) != JPEGMOD_SLIDESHOW&&bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_JPG)
return (FALSE);
#else
if(bSharedInfo(SI_ISO_ITEM_TYPE) != SV_ISO_JPG || bSharedInfo(SI_MP3_BITRATE_LO) != 0xff)
return (FALSE);
else if(bSharedInfo(SI_JPG_MODE) != JPEGMOD_SLIDESHOW) //dengsu 0826
return (FALSE);
#endif
#if defined(GUI_DC_SELECT)||defined(DC_SELECT)
else if(bSharedInfo(SI_JPG_MODE) == JPEGMOD_SLIDESHOW && bSharedInfo(SI_JPG_STT) == JPEGSTT_DEC_STRT)
return(FALSE);
#endif
}
else if(bSharedInfo(SI_DISC_TYPE) == SV_PCD && bSharedInfo(SI_JPG_MODE) == JPEGMOD_SLIDESHOW && bSharedInfo(SI_JPG_STT) == JPEGSTT_DEC_STRT)
return(FALSE);
#ifdef SUPPORT_DVD_AUDIO
else if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO && bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_MLP) //BillDen
return (FALSE);
#endif
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 + -