⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdinfo.h

📁 车载电子影音系统dvd播放系统原程序代码
💻 H
📖 第 1 页 / 共 2 页
字号:
}   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 + -