?? digest.c
字號:
//////////////////////////////////////////////////////////////
// ***** Big Modification History Area *****
// LLY2.80a,
// - remove the codes while define "_ALONE",
//////////////////////////////////////////////
#define VIEWTIME 225L // The default starting point from Track
// The file "winav.h" must be included in first line
// LLY.045-1, porting for new define depending on 22QF055.DOC
// all original include file will be put in "winav.h"
#include "winav.h"
// LLY.045-1 end ...
#include "digest.h"
//LJY1.20, support 4M flash, remove digest
#ifndef NO_DIGEST
#include "cc.h"
#include "cdinfo.h"
#include "utl.h"
#include "hal.h"
#include "servo.h"
#include "isr.h"
#include "input.h"
#include "chips.h"
#include "osd.h"
#include "linear.h"
// wyc.100 for DVD digest
#ifdef _WINDVD
#include "navigate.h"
#include "cell.h"
#include "dvdinfo.h" // ** TCH0.27;
#include "monitor.h"
#endif // _WINDVD
//LJY1.21,
// - Remove UTL_ChangeCDROMSpeed().
// DVD_274Micky, add copyright. Don't remove it!!!!
BYTE Copyright_CHEERTEK_INC_2002_DIGEST;
static DWORD __dwCheckDigestTime; //for checking digest hang use
static DWORD __dwPreIFrames; //for checking digest hang use
DWORD __dwIFrames; //the I Frame decteced number
// wyc.100 dvd digest
BYTE __bDVDDigest;
// wyc.172r, reudce SRAM
#ifndef NO_DVDDIGEST
BYTE __bCHAPXXFromCurr;
BYTE __bPreDVDDigest;
BYTE __bDigestStop;
BYTE __bCmdKeyPress;
WORD __wTotChapTime;
#endif // NO_DVDDIGEST
DWORD __dwTimeShow; // the sector time to show in one track
BYTE __bTotPageNO;
extern DWORD __dwGoToTime;
extern BYTE __bDigestStyle; // Digest Mode
extern BYTE IDATA __bMin, __bSec;
// Micky2.79, tune the usage of __bCountStop, don't reference DOUBLE_STOP
//#ifdef DOUBLE_STOP
//extern BYTE __bCountStop;
//#endif
extern BYTE __bFrames;
// end ..
extern BIT __btDIGEST; // means Digest Mode
extern DWORD __dwTimeDiscEnd; // The end of the disc time
extern void _OSD_ShowCDDA(void);
extern BIT _OSD_LogoFillData(WORD wWords, BYTE *pwLogoData);
BYTE __bGrid; // The DIGEST screen 3 by 3
static DWORD __dwTimeDigestBegin; // the system time begins to digest show
// wyc.172r, reudce SRAM use __dwTimeDigestBegin to replace __dwDigestKeep
//static DWORD __dwDigestKeep; // for DIGEST_STYLE_TRACK
// record the starting point (__dwTimeNow)
BYTE __bStyle; // Digest Style
BYTE __bTrackNO; // current track NO (Had played)
// DVD_275Micky, share the same variable.
#define __bPlayOrder Copyright_CHEERTEK_INC_2002_DIGEST
//BYTE __bPlayOrder; // record the playorder
// **** TCH0.99C-XQ, static BYTE __bPageNO= NULL; // which page
//LJY1.20, declare __bPageNo in Thumb.c instead of digest.c(support 4M flash, remove digest)
extern BYTE __bPageNO; // which page
static BYTE __bTrackRepeat; // record the repeat time in one track
static BYTE __bDigestModePlay; // DIGEST ModePlay variable
static int __iXDigest; // X coordinate
static int __iYDigest; // Y coordinate
BIT __btDigestEnableAudio; // control Audio O/P when ] ()
static BIT __btTrackPoint ; // flag for check first point
// enter track mode
static BIT __btDigestMode; // 0: 9 frame, 1: 4 frame
// ShowTable coordinate for digest frame ver. and hor. start
static BYTE __bTableX[3];
static BYTE __bTableY[3];
BIT __btDigestSetMode;
// indicate the DIGEST mode will start from a CD-DA track
BIT __btCDDADigest;
// for reduce SRAM size usage
DWORD _dwTemp;
// wyc.172r, reudce SRAM and move local variables to global
int _iHor, _iVer; // recode the positon of showing digest number
int _iRem;
extern DWORD __dwTimeTorelence;
//LJY279
extern int __iRow;
extern int __iCol;
extern void SWOSD_DigestInfo(void);
extern void _OSD_ShowDigestNumber(WORD wValue);
extern WORD __wFontH;
extern WORD __wFontW;
// *********************************************************************
// Function : _DigestOverview
// Description : Enter the DIGEST mode and reorcd the Page NO.
// Arguments : None
// Return :
// Side Effect : when it's called, it will always enter digest mode
// *********************************************************************
void _DigestOverview ()
{
__dwPreIFrames=0; // for digest hang checking
__dwIFrames=0; // record the I frame detected
// wyc.172r, reudce SRAM
#ifndef NO_DVDDIGEST
__bCmdKeyPress = FALSE;
#endif // NO_DVDDIGEST
// Check ID, discard it if ID is out of range
if (!__bDVDDigest)
{
__bTrackNO = __bPageNO* (__bGrid* __bGrid);
__bTrackNO+= (BYTE)__wTrackBegin;
}
if ( (__bStyle & 0x0F) == DIGEST_STYLE_NORMAL4 )
{
__btDigestMode= DIGEST_FRAME_4;
}
else
{
__btDigestMode= DIGEST_FRAME_9;
}
HAL_ControlCDIF(HAL_CDIF_CLOSE);
HAL_Display(HAL_DISPLAY_VIDEO, FALSE);
// CHIPS_OpenAudio( FALSE ); //LJY1.24-3
__bModePlay= MODE_PLAYUNKNOW;
if ((__bStyle & 0x0F)==DIGEST_STYLE_TRACK)
{ // Cindy 041 for one sequence header
// wyc.172r, reudce SRAM and use __dwTimeDigestBegin to replace __dwDigestKeep
__dwTemp=/*__dwDigestKeep*/__dwTimeDigestBegin;
//get track number
CDINFO_ParseInfo ( VCD_ENTRIES_TRACK, &__dwTemp, NULL );
__bTrackNO=(BYTE)__dwTemp;
__btTrackPoint=TRUE;
__bTemp= UTL_CheckPlayItemMode ( __bTrackNO );
#ifndef NO_CDDADIGEST
// LLY.274p, check playing mode method has updated
//if (__bTemp & MODE_PLAYCDDA)
if(__bAttrPlayNew == ATTR_CDDA)
__btCDDADigest=TRUE;
#endif //NO_CDDADIGEST
}
#ifndef NO_CDDADIGEST
if (__wDiscType & BOOK_CDDA)
__btCDDADigest=TRUE;
#endif //#ifndef NO_CDDADIGEST
__bDigestModePlay= MODE_PLAYUNKNOW;
UTL_SetPlayMode ( MODE_PLAYMOTION );
// Restore normal audio
if (__btMute)
{
OSD_OUTPUT_MACRO ( MSG_MUTE, FALSE, 1 );
}
__btMute= FALSE; // digest default not mute
// f/w 0.45, cancel 3D in DIGEST mode
if (__bModeChannel==AUDIO_3D)
{
__bModeChannel=AUDIO_STEREO;
OSD_OUTPUT_MACRO(MSG_AUDIO, __bModeChannel, 1);
}
OSD_OUTPUT_MACRO ( MSG_PLAYING, NULL, NULL );
CHIPS_OpenAudio( FALSE );
// modify for let DIGEST output same as last decoded MPEG stream
// do not force to be NTSC mode.
// __btNTSCBitStream= TRUE;
// Set to zero, Let the play start from Track begin first time.
// Let DIGEST mode can encounter ONE Sequence Header
// wyc.273-1, keep this code for fixing some VCD titles digest frame error.
__dwTimeShow= NULL;
__dwIER= INT_IFSC;
// Prevent clear by MSG_MUTE
{
__bTemp = __bPageNO;
if ( (__bStyle & 0x0F) <= DIGEST_STYLE_PAGE )
//bPage++;
__bTemp++;
//low->style, high page number
//Digest forever display
if (((__bStyle & 0x0F) != DIGEST_STYLE_CHAPXX) && ((__bStyle & 0x0F) != DIGEST_STYLE_TRACK))
{
OSD_OUTPUT_MACRO(MSG_DIGEST, MAKEWORD( (__bStyle & 0x0F), (__bPageNO + 1) ), 0xff);
}
else
{
OSD_OUTPUT_MACRO(MSG_DIGEST, MAKEWORD( (__bStyle & 0x0F), NULL ), 0xff);
}
}
// First time setting
__bPlayOrder= NULL;
__bTrackRepeat= NULL;
if ( __btDigestMode== DIGEST_FRAME_4 )
{
HAL_DigestInitial(4);
__bGrid= 2;
if(__wDiscType & BOOK_DVD)
{
//***** check more, must add for DVD title
}
else if(__wDiscType & BOOK_SVCD)
{
__bTableX[0]= 14; //16; // 20;
__bTableX[1]= 78; //80; // 100;
__bTableY[0]= 16; // 20;
__bTableY[1]= 132; //140; // 150;
}
else if(__wDiscType & BOOK_CVD)
{
__bTableX[0]= 16; // 30;
__bTableX[1]= 64; // 100;
__bTableY[0]= 14; //16; // 20;
__bTableY[1]= 132; //140; // 150;
}
else
{
__bTableX[0]= 4; //2;
__bTableX[1]= 88; //94;
__bTableY[0]= 16;
__bTableY[1]= 132; //140; // 150;
}
}
else
{
HAL_DigestInitial(9);
__bGrid= 3;
if(__wDiscType & BOOK_DVD)
{
//***** check more, must add for DVD title
__bTableX[0]= 24;//16;//32;
__bTableX[1]= 74;//68;//46; //56; //80;
__bTableX[2]= 124;//118;//96;//76; //96; //128;
__bTableY[0]= 30; //34;
__bTableY[1]= 106; //114;
__bTableY[2]= 182; //194;
}
//LJY2.80, using the same setting for CVD&SVCD
else if((__wDiscType & BOOK_CVD) || (__wDiscType & BOOK_SVCD))
{
__bTableX[0]= 22; //32;
__bTableX[1]= 46; //80;
__bTableX[2]= 70; //128;
__bTableY[0]= 30; //34;
__bTableY[1]= 106; //114;
__bTableY[2]= 182; //194;
}
else
{
//LJY1.00, fine tune X to be (6, 38, 70) for P-Scan OSD flash issue.
__bTableX[0]= 6;//14;//16; //12;
__bTableX[1]= 38;//64;//68;
__bTableX[2]= 70;//114;//120; //124;
__bTableY[0]= 30;
__bTableY[1]= 106;
__bTableY[2]= 182;
}
}
__btDIGEST= TRUE;
// must put after DigestInitial
HAL_AdjustTVMode (); // marked by LLY on 1999.02.23
__iXDigest= __bTableX[0];
__iYDigest= __bTableY[0];
// Set DIGEST mode, please refer TechNote
HAL_DigestPosition(__iXDigest, __iYDigest);
if (!__btCDDADigest)
{
//WYC.050a begin
//DWORD dwHsize, dwVsize;
W99AV_ReadInfo(W99AV_INFO_DIGEST_HSIZE, &_dwTemp);
W99AV_ReadInfo(W99AV_INFO_DIGEST_VSIZE, &__dwTemp);
// end
//LJY0.86, for new HAL_ClearScreen()
HAL_ClearScreen(HAL_COLOR_DIGEST);
}
// swosd must know the YUV buffer start, digest size
SWOSD_DigestInfo();
////////////////////
// enable IFSC IRQ
EX1= 1;
W99AV_ClearInterrupt(INT_IFSC);
W99AV_EnableInterrupt(NULL);
__btPlaying= FALSE;
__btPause= FALSE;
__bModeCmd= KEY_STOP;
}
// *********************************************************************
// Function : DIGEST_SetStyle
// Description : Record a global variable __bStyle
// Arguments : bStyle
// Return : previous Style
// Side Effect :
// *********************************************************************
BYTE DIGEST_SetStyle ( BYTE bStyle )
{
BYTE bTemp;
bTemp= __bStyle;
__bStyle= bStyle;
// reset digest page number
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -