/* 2004.02.01 first released source code for IOMP */ /* @(#)struct.h 1.13 11/12/92 */ /* * Structure for a single track. This is pretty much self-explanatory -- * one of these exists for each track on the current CD. */ struct trackinfo { char *songname; /* Name of song, dynamically allocated */ char *otherdb; /* Unrecognized info for this track */ char *otherrc; int length; /* Length of track in seconds or Kbytes */ int start; /* Starting position (f+s*75+m*60*75) */ int volume; /* Per-track volume (1-32, 0 to disable) */ int track; /* Physical track number */ int section; /* Section number (0 if track not split) */ char contd; /* Flag: continuation of previous track */ char avoid; /* Flag: don't play this track. */ char data; /* Flag: data track */ }; /* * Structure for internal playlist management. The internal playlist is * simply the list of track ranges that are being played currently. This * is built whenever the CD starts playing; it's used in normal and shuffle * modes as well as playlist mode. * * The "starttime" element represents how much time has elapsed by the time * we get to this entry. For instance, if the list begins with a 5-minute * track and a 3-minute track, the third entry would have a starttime of 8 * minutes. This is used so that the elapsed play time can be displayed * even in shuffle or playlist modes. * * The last member of the list has a start track of 0, and its starttime is * the total playing time of the playlist (which will usually be overestimated, * since we don't play leadouts in some cases.) */ struct play { int start; /* Start track, or 0 if end of list */ int end; /* last track plus 1 */ int starttime; /* Number of seconds elapsed previously */ }; /* * Structure for playlists (as seen by the user.) This is simply a name * followed by a zero-terminated list of track numbers to play. The list * is terminated by a NULL name. */ struct playlist { char *name; /* Name of this playlist */ int *list; /* List of tracks */ }; struct cdinfo { char artist[84]; /* Artist's name */ char cdname[84]; /* Disc's name */ int ntracks; /* Number of tracks on the disc */ int length; /* Total running time in seconds */ int autoplay; /* Start playing CD immediately */ int playmode; /* How to play the CD */ int volume; /* Default volume (1-32, 0 for none) */ struct trackinfo *trk; /* struct trackinfo[ntracks] */ struct playlist *lists; /* User-specified playlists */ char *whichdb; /* Which database is this entry from? */ char *otherdb; /* Unrecognized lines from this entry */ char *otherrc; }; /* The global variable "cd" points to the struct for the CD that's playing. */ extern struct cdinfo *cd; struct playlist *new_list();