📄 files_private.h
字号:
#endif } GNUC_PACKED PsdSelectionListFlags;#define PsdSelectionListFlags_SIZEOF 1typedef struct _PsdSelectionListDescriptor_tag { uint8_t type; PsdSelectionListFlags flags; uint8_t nos; uint8_t bsn; uint16_t lid; uint16_t prev_ofs; uint16_t next_ofs; uint16_t return_ofs; uint16_t default_ofs; uint16_t timeout_ofs; uint8_t totime; uint8_t loop; uint16_t itemid; uint16_t ofs[EMPTY_ARRAY_SIZE]; /* variable length */ /* PsdSelectionListDescriptorExtended */} GNUC_PACKED _PsdSelectionListDescriptor;#define PsdSelectionListDescriptor_SIZEOF 20typedef struct { struct psd_area_t prev_area; struct psd_area_t next_area; struct psd_area_t return_area; struct psd_area_t default_area; struct psd_area_t area[EMPTY_ARRAY_SIZE]; /* variable length */} GNUC_PACKED PsdSelectionListDescriptorExtended;#define PsdSelectionListDescriptorExtended_SIZEOF 16typedef struct { uint8_t type; uint16_t command_count; uint16_t lid; uint16_t command[EMPTY_ARRAY_SIZE]; /* variable length */} GNUC_PACKED PsdCommandListDescriptor;#define PsdCommandListDescriptor_SIZEOF 5typedef struct _PsdPlayListDescriptor_tag { uint8_t type; uint8_t noi; /* number of items */ uint16_t lid; /* list id: high-bit means this list is rejected in the LOT (also, can't use 0) */ uint16_t prev_ofs; /* previous list offset (0xffff disables) */ uint16_t next_ofs; /* next list offset (0xffff disables) */ uint16_t return_ofs; /* return list offset (0xffff disables) */ uint16_t ptime; /* play time in 1/15 s, 0x0000 meaning full item */ uint8_t wtime; /* delay after, in seconds, if 1 <= wtime <= 60 wait is wtime else if 61 <= wtime <= 254 wait is (wtime-60) * 10 + 60 else wtime == 255 wait is infinite */ uint8_t atime; /* auto pause wait time calculated same as wtime, used for each item in list if the auto pause flag in a sector is true */ uint16_t itemid[EMPTY_ARRAY_SIZE]; /* item number 0 <= n <= 1 - play nothing 2 <= n <= 99 - play track n 100 <= n <= 599 - play entry (n - 99) from entries table to end of track 600 <= n <= 999 - reserved 1000 <= n <= 2979 - play segment play item (n - 999) 2980 <= n <= 0xffff - reserved */} GNUC_PACKED _PsdPlayListDescriptor;#define PsdPlayListDescriptor_SIZEOF 14/* TRACKS.SVD SVCD\TRACKS.SVD is a mandatory file which describes the numbers and types of MPEG tracks on the disc. *//* SVDTrackContent indicates the audio/video content of an MPEG Track */typedef struct {#if defined(BITFIELD_LSBF) bitfield_t audio : 2; /* Audio Content 0x00 : No MPEG audio stream 0x01 : One MPEG{1|2} audio stream 0x02 : Two MPEG{1|2} streams 0x03 : One MPEG2 multi-channel audio stream with extension */ bitfield_t video : 3; /* Video Content 0x00 : No MPEG video 0x03 : NTSC video 0x07 : PAL video */ bool reserved1 : 1; /* Reserved, must be zero */ bitfield_t ogt : 2; /* 0x0 - no OGT substream 0x1 - sub-stream 0 available 0x2 - sub-stream 0 & 1 available 0x3 - all OGT sub-substreams available */#else bitfield_t ogt : 2; bool reserved1 : 1; bitfield_t video : 3; bitfield_t audio : 2;#endif} GNUC_PACKED SVDTrackContent;#define SVDTrackContent_SIZEOF 1/* The file contains a series of structures, one for each track, which indicates the track's playing time (in sectors, not actually real time) and contents. */#define TRACKS_SVD_FILE_ID "TRACKSVD"#define TRACKS_SVD_VERSION 0x01typedef struct { char file_id[sizeof(TRACKS_SVD_FILE_ID)-1]; /* == "TRACKSVD" */ uint8_t version; /* == 0x01 */ uint8_t reserved; /* Reserved, must be zero */ uint8_t tracks; /* number of MPEG tracks */ msf_t playing_time[EMPTY_ARRAY_SIZE]; /* per track, BCD coded mm:ss:ff */} GNUC_PACKED TracksSVD;#define TracksSVD_SIZEOF 11typedef struct { /* TracksSVD tracks_svd; */ SVDTrackContent contents[1]; /* should be [], but C99 doesn't allow it indicates track contents */} GNUC_PACKED TracksSVD2;#define TracksSVD2_SIZEOF SVDTrackContent_SIZEOF/* VCD30 tracks svd */typedef struct { char file_id[sizeof(TRACKS_SVD_FILE_ID)-1]; /* == "TRACKSVD" */ uint8_t version; /* == 0x01 */ uint8_t reserved; /* Reserved, must be zero */ uint8_t tracks; /* number of MPEG tracks */ struct { msf_t cum_playing_time; /* BCD coded mm:ss:ff */ uint8_t ogt_info; uint8_t audio_info; } GNUC_PACKED track[EMPTY_ARRAY_SIZE];} GNUC_PACKED TracksSVD_v30;#define TracksSVD_v30_SIZEOF 11/* SEARCH.DAT This file defines where the scan points are. It covers all mpeg tracks together. A scan point at time T is the nearest I-picture in the MPEG stream to the given time T. Scan points are given at every half-second for the entire duration of the disc. */#define SEARCH_FILE_ID "SEARCHSV"#define SEARCH_VERSION 0x01#define SEARCH_TIME_INTERVAL 0x01typedef struct { char file_id[sizeof(SEARCH_FILE_ID)-1]; /* = "SEARCHSV" */ uint8_t version; /* = 0x01 */ uint8_t reserved; /* Reserved, must be zero */ uint16_t scan_points; /* the number of scan points */ uint8_t time_interval; /* The interval of time in between scan points, in units of 0.5 seconds, must be 0x01 */ msf_t points[EMPTY_ARRAY_SIZE]; /* The series of scan points */} GNUC_PACKED SearchDat;#define SearchDat_SIZEOF 13/* SPICONTX.SVD */#define SPICONTX_FILE_ID "SPICONSV"#define SPICONTX_VERSION 0x01typedef struct { char file_id[sizeof(SPICONTX_FILE_ID)-1]; /* = "SPICONSV" */ uint8_t version; /* = 0x01 */ uint8_t reserved; /* Reserved, must be zero */ struct { uint8_t ogt_info; uint8_t audio_info; } GNUC_PACKED spi[MAX_SEGMENTS]; uint8_t reserved2[126]; /* 0x00 */} GNUC_PACKED SpicontxSvd;#define SpicontxSvd_SIZEOF (2*ISO_BLOCKSIZE)/* SCANDATA.DAT for VCD 2.0 */#define SCANDATA_FILE_ID "SCAN_VCD"#define SCANDATA_VERSION_VCD2 0x02#define SCANDATA_VERSION_SVCD 0x01typedef struct { char file_id[sizeof(SCANDATA_FILE_ID)-1]; /* = "SCAN_VCD" */ uint8_t version; /* = 0x02 */ uint8_t reserved; /* Reserved, must be zero */ uint16_t scan_points; /* the number of scan points */ msf_t points[EMPTY_ARRAY_SIZE]; /* actual scan points points[time(iframe)/0.5] */} GNUC_PACKED ScandataDat_v2;#define ScandataDat_v2_SIZEOF 12/* SCANDATA.DAT for SVCD This file fulfills much the same purpose of the SEARCH.DAT file except that this file is mandatory only if the System Profile Tag of the INFO.SVD file is 0x01 (HQ-VCD) and also that it contains sector addresses also for each video Segment Play Items in addition to the regular MPEG tracks. */typedef struct { char file_id[sizeof(SCANDATA_FILE_ID)-1]; /* = "SCAN_VCD" */ uint8_t version; /* = 0x01 */ uint8_t reserved; /* Reserved, must be zero */ uint16_t scandata_count; /* number of 3-byte entries in the table */ uint16_t track_count; /* number of mpeg tracks on disc */ uint16_t spi_count; /* number of consecutively recorded play item segments (as opposed to the number of segment play items). */ msf_t cum_playtimes[EMPTY_ARRAY_SIZE]; /* cumulative playing time up to track N. Track time just wraps at 99:59:74 */} GNUC_PACKED ScandataDat1;#define ScandataDat1_SIZEOF 16typedef struct { /* ScandataDat head; */ uint16_t spi_indexes[1]; /* should be [], but C doesn't allow that; Indexes into the following scandata table */} GNUC_PACKED ScandataDat2;#define ScandataDat2_SIZEOF sizeof(uint16_t)typedef struct { /* ScandataDat2 head; */ uint16_t mpegtrack_start_index; /* Index into the following scandata table where the MPEG track scan points start */ /* The scandata table starts here */ struct { uint8_t track_num; /* Track number as in TOC */ uint16_t table_offset; /* Index into scandata table */ } GNUC_PACKED mpeg_track_offsets[EMPTY_ARRAY_SIZE];} GNUC_PACKED ScandataDat3;#define ScandataDat3_SIZEOF 2typedef struct { /* ScandataDat3 head; */ msf_t scandata_table[1]; /* should be [] but C99 doesn't allow that */} GNUC_PACKED ScandataDat4;#define ScandataDat4_SIZEOF msf_t_SIZEOFPRAGMA_END_PACKED#endif /* __VCD_FILES_PRIVATE_H__ *//* * Local variables: * c-file-style: "gnu" * tab-width: 8 * indent-tabs-mode: nil * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -