📄 cdinfo.h
字号:
} ENTRY_RANGE, * PENTRY_RANGE;
// wyc1.25, record the length of FILE_RECORD because of F/W will reference it.
// wyc2.36, when unicode, we use two byte 00 00 to represent end of file name. So need to add one more byte to insert 00.
#ifdef SUPPORT_UNICODE
#define FILE_RECORD_LENGTH 23
#else
#define FILE_RECORD_LENGTH 22
#endif
typedef struct tagFILE_RECORD
{
FILENAMEINFO FileName;
ENTRY_RANGE FileRange;
BYTE bFileAttr;
}FILE_RECORD, *PFILE_RECORD;
// wyc2.80, fish's modification code.
// LLY2.80, specify the structure length of ENTRY_RANGE (BYTE unit)
#define ENTRY_RANGE_LENGTH 7 // wyc1.10, need to increase the length to 7
// ** TCH0.50; begin...
// wyc.274p-PicCD, rename MP3_LOG to FILE_LOG and PMP3_LOG to PFILE_LOG
typedef struct tagFILE_LOG
{
BYTE bMaxStringLen; // include end of strng "\0"
BYTE bGapbyString;
/// BYTE bMaxNO;
/// BYTE bActualNO;
WORD wMaxNO;
WORD wActualNO;
WORD wStartNO; // "0" is start, new from WinDVD 0.50
WORD wAttrFilter; // ** TCH1.01b; only support which FILE_FLAG_XXXX
// wyc0.87, add bDirIndex to record the current parsing dir and pDirExtAttr to record the directory files attribute.
BYTE bDirIndex;
// wyc1.00, record the ending sector position of current parsing dir.
DWORD bDirSectorNum;
BYTE *pDirExtAttr;
// wyc1.25, use pFileRecord to replace these two pointer.
FILE_RECORD *pFileRecord;
void * ptrVoid;
char * pName;
WORD * pAttr; // FILE_FLAG_XXXX
// wyc2.81, need to add TREE record into FILE_LOG for FManager to get the TREE record from CDINFO.
BYTE * pTree;
} FILE_LOG, * PFILE_LOG;
// ** TCH0.50; end...
// ** TCH0.38; end...
#ifdef VCD_SYSTEM
// ** DVD-TCH0.22; begin...
WORD HAL_DumpUserData(BYTE* pbBuf, WORD wLen, BYTE bSectorNO);
WORD HAL_DumpUserDatabyOffset ( BYTE* pbBuf, WORD wLen, BYTE bSectorNO, WORD wOffset );
// ** DVD-TCH0.22; end...// ** TCH0.22;
#endif // VCD_SYSTEM
////////////////////////////////////////////////
// export Functions
// wyc.274p-PicCD, add new function CDINFO_DetectPictureCD.
BOOL CDINFO_DetectPictureCD (void);
WORD CDINFO_GetBookColor (void);
BOOL CDINFO_DetectKaraokeVCD (void);
BOOL CDINFO_CheckStatus ( WORD wMode );
BOOL CDINFO_GetTrackNO ( BYTE * StartTrack, BYTE * EndTrack, DWORD * LeadOut );
BOOL CDINFO_GetTrackInfo ( BYTE TrackNO, DWORD * Startpoint, BYTE * TrackInfo );
BOOL CDINFO_Reset (void);
BOOL CDINFO_CloseTray ( BOOL bClose );
DWORD CDINFO_SearchStartSector ( DWORD dwStartSector );
BOOL CDINFO_ParseInfo ( WORD nMode, DWORD * pdwVal, WORD nSubMode );
#ifdef TEST
BOOL CDINFO_ParseInfoString ( WORD nWord, WORD nTrack, char * pChar, int iLen );
#endif // TEST
WORD CDINFO_GetList ( WORD nMode, WORD nSubMode );
WORD CDINFO_ParseList ( WORD nMode, WORD * pWord );
BYTE CDINFO_CheckSegPlayItem ( WORD nMode, WORD nItem );
//////////////////////////////////////
// Parse ISO9660
BOOL CD_DetectCVDEncryption (void);
WORD CD_GetFirstEntry ( char * pEntry );
// wyc2.31, remove this function because of no module reference it.
//WORD CD_GetNextEntry ( char * pEntry );
DWORD CD_ParserDirectory ( char * pDir, char * pExt );
// wyc.276-ISO, remove parameter
BOOL CD_PrepareISO9660 (void);
// wyc.274p-VCD, new function to detect special VCD.
BOOL CDINFO_DetectSpecialVCD () ;
WORD CD_SetDirectoryLocation ( DWORD dwSector );
// wyc.274j-PicCD, support parse specific file name and directory
BYTE CD_GetEntryByFileName(char *pFileName, char *pDirName, DWORD *dwFileLoc, DWORD *dwFileLength);
WORD CD_GetEntrybyIndex ( BYTE bIndex, char * pEntry );
BOOL CD_GetEntryInfo ( BYTE bType, DWORD * pVal );
#ifndef NO_MP3
//WORD CD_ShowDirectory ( char * pExt ); // test only
// wyc.274p-PicCD, rename PMP3_LOG to PFILE_LOG and add parameter bIsFirSession
WORD CD_GetTotalEntriesbyDir ( PFILE_LOG pFILELog ); // ** TCH0.38;
// wyc.276-ISO, remove parameter bFindEntry
WORD CD_GetTotalEntriesbyPath ( PFILE_LOG pFILELog ); // ** TCH0.38;
#endif // NO_MP3
/////////////////////////////////////////////////
// protected functions
BYTE _CheckVCD ( WORD * pRet ); // 1996.9
BYTE _CheckCDI ( WORD * pRet ); // 1996.10
void CDINFO_PrepareVCD ( WORD wDiscType );
WORD _GetListIDOffset ( WORD nItem );
WORD _ReadPSDList ( WORD nOffset );
BYTE _GetSegPlayItem ( WORD nItem );
DWORD _GetEntryData ( WORD nEntry, BYTE * pTrack );
BYTE _UpdateCDROMData ( WORD wSector, WORD wStart, WORD wOffset );
#ifdef TEST
WORD _TestList ( WORD nType );
#endif // TEST
WORD _CD_GetEntrybyDir ( BYTE bIdx, char * pEntry );
WORD _CD_GetEntrybyPath ( BYTE bIdx, char * pEntry );
void _CD_DoStrrchr ( BYTE * pBuf, BYTE c );
// wyc.274j-2-Test
#ifdef DEBUG_FUNCTION
void CD_WORD2HexStr ( BYTE * pStr, WORD wVal );
#endif //
//////////////////////////////////////////////////
// structure definition
typedef struct tagPATHTABLE
{
BYTE LEN_DI;
BYTE ExtendedAttribRecordLen;
BYTE LocationOfExtent0;
BYTE LocationOfExtent1;
BYTE LocationOfExtent2;
BYTE LocationOfExtent3;
/// WORD ParentDirNum;
BYTE ParentDirNum[2];
char DirectoryID[128];
} PATHTABLE;
#define DIRRECORD_DATALEN1 10
#define DIRRECORD_DATALEN2 14
typedef struct tagDIRRECORD
{
BYTE LEN_DR;
BYTE ExtendAttribute;
/// DWORD LocationExtent1;
BYTE LocationExtent1 [4]; // ** TCH0.452;
BYTE LocationExtent2_0;
BYTE LocationExtent2_1;
BYTE LocationExtent2_2;
BYTE LocationExtent2_3;
/// DWORD DataLen1;
/// DWORD DataLen2;
BYTE DataLen1[4]; // ** TCH0.452;
BYTE DataLen2[4]; // ** TCH0.452;
char Unused[7]; // Recording Date adn Time
BYTE flags;
BYTE FileUnitSize;
BYTE InterleaveGap;
/// WORD VolumeSequence1;
/// WORD VolumeSequence2;
BYTE VolumeSequence [4]; // ** TCH0.452;
BYTE FileIDLen;
} DIRRECORD;
typedef struct tagVTOC
{
BYTE DescriptorType;
char StandardID[5];
BYTE DescriptorVer;
char Unused1;
char SystemID[32];
char VolumeID[32];
char Unused2[8];
// ** TCH0.50; 80 bytes
/// DWORD VolumeSpace1;
BYTE cVolumeSpace1[4];
BYTE VolumeSpace2_0;
BYTE VolumeSpace2_1;
BYTE VolumeSpace2_2;
BYTE VolumeSpace2_3;
char Unused3[32];
// ** TCH0.50; 120 bytes
DWORD VolumeSet;
DWORD VolumeSequence;
DWORD LogicBlockSize;
DWORD PathSize1;
DWORD PathSize2;
DWORD LPath;
DWORD LOPath;
// ** TCH0.50; 148 bytes
BYTE MPath0;
BYTE MPath1;
BYTE MPath2;
BYTE MPath3;
DWORD MOPath;
// ** TCH0.50; 156 bytes
char Root[34];
char VolumeSetID[128];
char IDs[256];
char AppID[128];
} VTOC;
typedef struct tagINFOVCD
{
char SystemID[8];
unsigned char VerID0;
unsigned char VerID1;
char DiscID[16];
unsigned char AlbumVolumes0;
unsigned char AlbumVolumes1;
unsigned char VolumesNo0;
unsigned char VolumesNo1;
// below will used by VIDEO_CD 2.00
unsigned char SizeMapTrackMotionPicture[13];
unsigned char StatusFlag;
char cPSDSize[4];
unsigned char cSegmentAddress_BCD[3];
unsigned char cMultiplier;
char cMaxListID[2];
char cMaxSegmentNO[2];
unsigned char cSegmentPlayItem_Table [1980];
unsigned char cReserved[12];
} INFOVCD;
typedef struct tagENTRY
{
char FileID[8];
int SpecID;
unsigned char EntryUsed0;
unsigned char EntryUsed1;
unsigned char Track1;
unsigned char Track2;
unsigned char Entry1;
} ENTRY;
typedef struct tagTRACKINFO
{
BYTE bTrackNO;
BYTE bTrackInfo;
DWORD dwSectors;
} TRACKINFO;
typedef struct tagPlayList
{
unsigned char cListHeader;
unsigned char cNOI;
unsigned char cListID[2];
unsigned char cPreviousOffset[2];
unsigned char cNextOffset[2];
unsigned char cReturnOffset[2];
unsigned char cPlayTime [2];
unsigned char cPlayItemWaitTime;
unsigned char cAutoPauseWaitTime;
unsigned char cItemNO [1000][2]; // suppose not exceed 1999
// need to change to dynamic
} PLAYLIST;
typedef struct tagSelectionList
{
unsigned char cListHeader;
unsigned char cReserved;
unsigned char cNOS;
unsigned char cBSN;
unsigned char cListID[2];
unsigned char cPreviousOffset[2];
unsigned char cNextOffset[2];
unsigned char cReturnOffset[2];
unsigned char cDefaultOffset[2];
unsigned char cTimeOutOffset[2];
unsigned char cWaitTime;
unsigned char cLoopCount;
unsigned char cPlayItemNO[2];
unsigned char cSelectionNO [100][2]; // range from 0 - 99
} SELECTIONLIST;
#endif // __CDINFO_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -