1 /*
2     $Id$
3 
4     Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
5 
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20 
21 #ifndef VCDFILES_H
22 #define VCDFILES_H
23 
24 #include <libvcd/types.h>
25 
26 #define INFO_VCD_SECTOR    150
27 #define ENTRIES_VCD_SECTOR 151
28 #define LOT_VCD_SECTOR     152
29 #define LOT_VCD_SIZE       32
30 #define PSD_VCD_SECTOR     (LOT_VCD_SECTOR+LOT_VCD_SIZE)
31 
32 #define MAX_SEGMENTS       1980
33 #define MAX_ENTRIES        500
34 #define MAX_SEQ_ENTRIES    99
35 
36 /* these are used for SVCDs only */
37 #define TRACKS_SVD_SECTOR  (PSD_VCD_SECTOR+1)
38 #define SEARCH_DAT_SECTOR  (TRACKS_SVD_SECTOR+1)
39 
40 /* Maximum index of optional LOT.VCD (the List ID Offset Table.) */
41 #define LOT_VCD_OFFSETS ((1 << 15)-1)
42 
43 typedef enum {
44   PSD_TYPE_PLAY_LIST = 0x10,        /* Play List */
45   PSD_TYPE_SELECTION_LIST = 0x18,   /* Selection List (+Ext. for SVCD) */
46   PSD_TYPE_EXT_SELECTION_LIST = 0x1a, /* Extended Selection List (VCD2.0) */
47   PSD_TYPE_END_LIST = 0x1f,         /* End List */
48   PSD_TYPE_COMMAND_LIST = 0x20      /* Command List */
49 } psd_descriptor_types;
50 
51 #define ENTRIES_ID_VCD  "ENTRYVCD"
52 #define ENTRIES_ID_VCD3 "ENTRYSVD"
53 #define ENTRIES_ID_SVCD "ENTRYVCD" /* not ENTRYSVD! */
54 
55 #define SCANDATA_VERSION_VCD2 0x02
56 #define SCANDATA_VERSION_SVCD 0x01
57 
58 void
59 set_entries_vcd(VcdObj_t *p_vcdobj, void *p_buf);
60 
61 void
62 set_info_vcd (VcdObj_t *p_vcdobj, void *p_buf);
63 
64 uint32_t
65 get_psd_size (VcdObj_t *p_vcdobj, bool extended);
66 
67 void
68 set_lot_vcd (VcdObj_t *p_vcdobj, void *p_buf, bool extended);
69 
70 void
71 set_psd_vcd (VcdObj_t *p_vcdobj, void *p_buf, bool extended);
72 
73 void
74 set_tracks_svd (VcdObj_t *p_vcdobj, void *p_buf);
75 
76 uint32_t
77 get_search_dat_size (const VcdObj_t *p_vcdobj);
78 
79 void
80 set_search_dat (VcdObj_t *p_vcdobj, void *p_buf);
81 
82 uint32_t
83 get_scandata_dat_size (const VcdObj_t *p_vcdobj);
84 
85 void
86 set_scandata_dat (VcdObj_t *p_vcdobj, void *p_buf);
87 
88 
89 vcd_type_t
90 vcd_files_info_detect_type (const void *info_buf);
91 
92 #endif /* VCDFILES_H */
93 
94 
95 /*
96  * Local variables:
97  *  c-file-style: "gnu"
98  *  tab-width: 8
99  *  indent-tabs-mode: nil
100  * End:
101  */
102