?? navigate.h
字號:
/****************************************************************************
[ mscddef.h, mscd.h, mscd.cpp, mscd1.cpp ]
Copywrite 1995 by TCH/L300, Cheertek, all right reserved
Author : Chung-Hao Tseng
Date : 1995. 1. 4
Purpose :
Notes :
Update :
Date Name Description
====== ========== =================================================
******************************************************************************/
#ifndef __NAVIGATE_H__
#define __NAVIGATE_H__
#ifdef __cplusplus
extern "C"{
#endif
#ifdef _TESTCD
#include "alone.h"
#endif // _TESTCD
// ** TCH1.23; begin...
// If enable below definition, it will be latest support. Otherwise, it's same as WinDVD 1.22a.
#define NV_ANTIHANG
// ** TCH1.23; end...
//////////////////////////////////////////////////////////////
// extern
//////////////////////////////////////////////////////////////
// definition
// *** 22QF(0.20);
extern DWORD _dwFirst_VMGI;
extern BYTE __bTitle; // Record the Logical Titles of ONE DISC
extern WORD __wChapter; // Record the Logical Chapters of ONE Title (PTT)
// ** TCH0.29; begin...
extern BYTE __bTitle_Ns; // Record the Total Titles NO. in ONE DISC
extern WORD __wV_ATR; // Record Video Attribute (current)
extern WORD __wChapter_Ns_Title; // Record the Total Chapters/ current Title (PTT)
extern BYTE __bACHN; // Record current Audio Channel Number.
// ** TCH0.29; end...
extern WORD __wPGCN;
extern BYTE __bPGN;
extern BYTE __bCEN;
extern BYTE __bDomain;
extern BYTE __bPreDomain; // ** TCH1.61-1;
extern BYTE __bNVPlayMode; // ** TCH0.31;
// ** TCH0.39; begin...
extern BYTE __bModeCELLTimeSearch;
extern DWORD __dwTimeCELLTimeSearch;
extern WORD __wTimeTitle; // Total time of Current Title
extern WORD __wTimeChapter; // Total time of Current Chapter
extern WORD __wTimeChapterBegin;// Begin time of Current Chapter
extern WORD __wTimeCellBegin;// Begin time of Current Cell
// ** TCH0.39; end...
extern WORD __wTimeCurrentDisplay; // ** TCH1.61a;
extern WORD __wVTS_StartTTN;
extern BIT _btReadTitleKey;
// ** TCH0.38; begin... Audio/ SP Language
extern WORD __wSP_LCD; // SP Language
extern WORD __wA_LCD; // Audio Language
// ** TCH0.38; end...
// ** TCH0.40; begin... Record Player_Parental_ID, "0xFFFF" mean "Not specified"
extern WORD __wVTS_PTL_ID;
extern WORD __wVMG_PTL_ID;
// ** TCH0.40; end...
extern BYTE __bSPST_Display_Mode; // ** TCH0.451; 0-PS, 1-LB, 2-16:9, 3-4:3.
extern BYTE __bSPST_LB; // ** TCH0.99; Use different SPSTN for LB.
// In "PGC.CPP"
extern BYTE __bPGCNOSequential; // Record the PGC is Sequential/ Shuffle/ Randon
extern BYTE __bLoopPGCount; // Record the Loop Count.
extern WORD __wCELLState; // Record the value that return from
// In "NVCMD.CPP"
//extern unsigned char __sNVCommand[9];
extern BYTE __bNVCommand[9];
// SMAN usage
extern BYTE __bState;
extern BYTE __bStatus;
extern BYTE __bUOP_Parameter; // ** TCH0.99;
// ** TCH1.21-1; begin...
extern BYTE __bDUMP_NV_CTL; // ** TCH1.21-1; Dump different information for NV
#define DUMP_NV_PTL 0x80
#define DUMP_NV_LOADPGC 0x02
#define DUMP_NV_PGCSTATE 0x04
#define DUMP_NV_CELLSTATE 0x08
#define DUMP_NV_TTCC2PGC 0x40
#define DUMP_NV_ENTRY 0x01
#define DUMP_NV_PARSEINFO 0x10 // ** TCH1.23;
#define DUMP_NV_FLOW 0x20 // ** TCH1.25;
// ** TCH1.21-1; end...
//////////////////////////////////////////////////////////////////////
// move to dvdinfo.h
// in VMGI_TT_SRPT
//#define OFFSET_TT_SRP 8
//#define BLOCK_TT_SRP 12
#define MAX_SPSTN 32 // ** TCH0.451;
#define MAX_ASTN 8 // ** TCH0.451;
// MenuCall Usage, Please ref. VTSM_LU-Menu ID
#define MENU_TITLE 1
#define MENU_ROOT 3 // Same as Menu ID
#define MENU_SP 4 // Same as Menu ID
#define MENU_AUDIO 5 // Same as Menu ID
#define MENU_ANGLE 6 // Same as Menu ID
#define MENU_PTT 7 // Same as Menu ID
// Domain definitions
#define STOP_DOM 0
#define VMGM_DOM 1
#define FP_DOM 2
#define VTSM_DOM 4
#define TT_DOM 8
#define SPACE_SYSTEM 0x7
#define SPACE_MENU 0x5
#define SPACE_VMG 0x3
#define SPACE_VTS 0xC
// NV_Action definition
#define ACTION_UP 5
#define ACTION_DOWN 6
#define ACTION_LEFT 7
#define ACTION_RIGHT 8
// DVD_101-2Micky add
#define ACTION_NUMBER_CHECK 9
#define ACTION_NUMBER 10
// DVD_101-2Micky add
#define ACTION_ACTIVE_CHECK 11
#define ACTION_ACTIVE 12
#define ACTION_REPEATAB 13
// ** TCH1.01-2; begin...
#define ACTION_BUTTON_QUERYUOP_END ACTION_ACTIVE
#define ACTION_STOP_INHIBIT_BEGIN 1 // must from "1" and other ACTION_xxx should lower than ACTION_STOP_INHIBIT_END
// ** TCH1.61a; #define ACTION_STOP_INHIBIT_END ACTION_ACTIVE
#define ACTION_STOP_INHIBIT_END ACTION_REPEATAB
// ** TCH1.01-2; end...
#define ACTION_NEXT 15
#define ACTION_PREV 16
// ** TCH1.70; #define ACTION_NEXTTITLE 20
#define ACTION_STOP 30
#define ACTION_PLAY 31 // ** TCH0.373;
#define ACTION_RESUME 32 // ** TCH0.40;
// Flag (Return Value) of _NV_CheckNVCMD // ** TCH0.31;
#define FLAG_NONE 0x00 // Nothing
#define FLAG_FALSE 0x00 // Error
#define FLAG_TRUE 0x01 // OK
#define FLAG_GO 0x02 // Just let flow GO through
#define FLAG_RESTART 0x10 // Needs to restart Chips
#define FLAG_IMMEDIATE 0x51 // NV_CMD needs to process within Command Area
#define FLAG_DONE 0x50 // NV_CMD is done
#define FLAG_JUMP 0x60 // NV_CMD will jump to another STATE
#define FLAG_TRIGGERSTATE 0x61 // NV_CMD will jump to another STATE/STATUS and only modify PGC StateMachine
// NV_Setting definition
#define SET_AST 0
#define SET_SPST 1
#define SET_AGL 2 // ** TCH0.47;
#define SET_PTL_ID_FLD 10 // ** TCH0.40;
// ** TCH0.99; move to "20", if above "20", means allow setting for all states.
// Otherwise allow when DVD-Title exist
#define SET_REGION_CODE 20
#define SET_PARENTAL_CONTROL 21 // ** TCH1.05-908;
//////////////////////////////////////////
// PGC_Play
#define OP_PRECMD 0x80
#define OP_NO_PRECMD 0x00
//***************************************************************************
//CONTROL : Global Data type or Data Structure declare.
//***************************************************************************
// Structure for State information
typedef struct CC_tagStateInfo
{
BYTE bState; // State
BYTE bStatus; // Status
} CC_STATEINFO, * PCC_STATEINFO;
///typedef CC_STATEINFO * PCC_STATEINFO;
// State_ID defineition : (1) State_ID == 0 ==> resevrved state.
// (2) State_ID {0- 127} ==> normal state.
// (3) State_ID >= 128 ==> error state.
#define STATE_UNDEF 0xFF// Unknow state error
#define STATE_RESERVED 0 // Central control will by pass this state
#define STATE_INITIAL 1 // Initialized
#define STATE_STOP 2 // Stop
#define STATE_PRECMD 3 //
#define STATE_POSTCMD 4 //
#define STATE_MARK_CMD STATE_POSTCMD
#define STATE_PG 5 //
#define STATE_STILL 6 //
#define STATE_CELL 7 //
#define STATE_NEXTLINK 8 //
#define STATE_NEXTPG_NONV 9 // ** TCH2.37; It's for NEXTPG
// State status defineition :
#define STATUS_UNDEF 0
#define STATUS_READY 1 // Wait to execute
#define STATUS_DONE 2 // Already be executed and ended
#define STATUS_RUNNING 3 // within execute
#define STATUS_SUSPEND 4 // Suspended; after this mode will transfer to STATUS_WAITING
#define STATUS_WAITING 5 // Wainging some trigger signal
#define STATUS_REDO 6 // re-do the state back from some sleep mode
#define STATUS_NVCMD 7 // Doing NVCMD Now ( STATE_CELL only )
#define STATUS_NVCMD_EXECUTE 8 // Execute NVCMD Now (<ex> Jump/ Link issue )
#define STATUS_ERROR 20 // Error occurred
#define STATUS_SAVE 30 // SAVE status
#define STATUS_RESTORE 31 // Restore status
#define STATUS_DISCARD 32 // Discard some items
#define STATUS_EXIST_RSM 33 // Exist RSM
////////////////////////////////////////////////////////
// _PGC_BitsDiscontinue definition
#define DISCONTINUE_AV 0
#define DISCONTINUE_AV_CDROM 1 // ** TCH1.03; ?? Remove it later
#define DISCONTINUE_AV_ONLY 5 // ** TCH1.61a;
#define DISCONTINUE_AUDIO_SP 10
//////////////////////////////////////////////////////////////
// dvd.cpp [OS issue]
#include "nvcmd.h"
////////////////////////////////////////////////////////////////////
// DVD part
// DVD Information Part
// Navigator Part
BYTE NV_TitlePlay ( BYTE bTitle, WORD wPTT );
BYTE NV_TimePlay ( BYTE bTitle, DWORD dwTime ); // ** TCH0.36;
BYTE NV_TitleTimePlay ( WORD wTime ); // ** TCH1.23; Add it for TimePlay within one Title.
BYTE NV_MenuCall ( BYTE bTypeMenu );
BYTE NV_Action ( BYTE bAction, WORD wParam );
BYTE NV_Setting ( BYTE bSetItem, BYTE bParam ); // ** TCH0.371;
BYTE NV_QueryUOP ( DWORD dwUOP ); // ** TCH0.37;
BYTE NV_RSMControl ( BYTE bStatus );
void NV_Trigger (void); // ** TCH1.72q;
//////////////////////////////////////////////////////
// PGC Part [PGC] Module
BYTE PGC_Playback ( BYTE bPGN, BYTE bOperation );
BYTE PGC_Trigger (void); // ** TCH1.72q;
//////////////////////////////////////////////////////
// State Control
void SMAN_GetStateInfo ( void );
void SMAN_SaveStateInfo ( void );
BYTE SMAN_GetState ( void );
BYTE SMAN_GetStatus ( void );
BYTE SMAN_PushStateInfo ( BYTE bState, BYTE bStatus );
BYTE SMAN_ChangeStatus ( BYTE bStatus );
/////////////////////////////////////////
// Protected function
// Navigator Usage
BOOL _NV_Convert_TTCC2PGC ( BYTE bDirection ); // ** TCH0.31;
BOOL _NV_Convert_STN2STNO ( BYTE bSetItem, BYTE bDirection ); // ** TCH0.451;
BOOL _NV_BuildPGCInfor ( void );
BOOL _NV_SetAudioParameters ( DWORD dwAudio, BYTE bParam ); // ** TCH0.371;
BYTE _NV_SearchLanguage ( BYTE bSetItem ); // ** TCH0.38;
BYTE _NV_ExecuteHighLight (void); // ** TCH0.362;
BYTE _NV_CheckNVCMD (void); // ** TCH0.29;
BYTE _NV_ExecuteNVCMD (void); // ** TCH0.31;
BYTE _NV_LinearNextPrev ( BYTE bNext ); // ** TCH0.31;
BYTE _NV_ProcessPTL_MA (void); // ** TCH0.431;
DWORD _NV_GetUOP ( BYTE bMenuType ); // ** TCH0.47;
BYTE _NV_LinkPGCN ( BYTE bDomain ); // ** TCH1.61-1;
BYTE _NV_CheckSP_ForcedlyDisplay (void); // ** TCH1.61-1;
#ifdef SIMP_DVD
BYTE _NV_SIMPTrigger (void); // ** TCH0.361; SIMP_DVD only
#endif // SIMP_DVD
#ifdef NO_PGC
BYTE _NV_NOPGCTrigger (void); // ** TCH0.361; NO_PGC only
BYTE _NV_GetCELLRange (void); // ** TCH0.361; NO_PGC only
#endif // NO_PGC
/////////// PGC relative APIs
BYTE _PGC_ProcessCell (void); // ** TCH0.31;
BYTE _PGC_WaitCELLStatus ( BYTE bCELLStatus ); // ** TCH0.39;
BYTE _PGC_UpdateCELLInformation (void); // ** TCH1.60a-2;
BYTE _PGC_BuildPGInfor ( BYTE bPGN );
BYTE _PGC_IsAcceptCellTime ( BYTE bCEN );
BYTE _PGC_LookAngleCEN ( BYTE bCEN ); // ** TCH1.60a-1;
BYTE _PGC_SkipAngleBlock ( BYTE bModeCmd ); // ** TCH1.60a-1;
BYTE _PGC_ChooseOneAvaiablePG ( BYTE bPGN ); // ** TCH0.41;
BYTE _PGC_ProcessCMDT ( BYTE bTypeCMDT, BYTE bIdx ); // ** TCH1.03;
void _PGC_BitsDiscontinue ( BYTE bMode ); // ** TCH1.03;
void _PGC_Force2PlayMode ( BYTE bCheckType ); //TCH1.60
// Micky1.23 support resume info from EEPROM
#define USE_NEW_RESUME_INFO
typedef struct NV_tagRSMInfo
{
BYTE __bRSM_Title; // SPRM[4]
WORD __wRSM_Chapter; // SPRM[7]
WORD __wRSM_PGCN; // SPRM[6]
WORD __wRSM_SPRM5;
BYTE __bRSMValid ;
BYTE __bRSM_CEN ;
BYTE __bRSM_byTime ; // TRUE mean RSM by Time, else RSM by VOBUSA
BYTE __bRSM_PGN ; // ** TCH1.03;
BYTE __bRSM_VTSN ;
BYTE __bRSM_Domain ; // ** TCH1.03;
DWORD __dwRSM_NV_PCK ;
WORD __wRSM_Time ; // unit: second
} NV_RSMINFO, * PNV_RSMINFO;
extern NV_RSMINFO NV_Resume[2];
#ifdef __cplusplus
}
#endif
#endif // __NAVIGATE_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -