ref: efd5647c5a30f87becd0d96e9f209b70b41ab0cd
dir: /plist.h/
/* Playlist begins with "# x\n" where x is the total number of records.
* Each record begins with "# x y\n" where x is record index, y is its size in bytes.
* Records are sorted according to mkplist.c:/^cmpmeta function.
* This makes it somewhat easy to just load the whole playlist into memory once,
* map all (Meta*)->... fields to it, saving on memory allocations, and using the same
* data to provide poor's man full text searching.
* Encoding: mkplist.c:/^printmeta/.
* Decoding: zuke.c:/^readplist/.
*/
enum
{
Precord='#',
Palbum= 'a',
Partist= 'A',
Pchannels= 'c',
Pdate= 'd',
Pduration= 'D',
Pimage= 'i',
Ptitle= 't',
Ptrack= 'T',
Ppath= 'p',
Psamplerate= 's',
Maxartist=16, /* max artists for a track */
};
typedef struct Meta Meta;
struct Meta
{
char *artist[Maxartist];
char *album;
char *title;
char *date;
char *track;
char *path;
char *imagefmt;
int numartist;
int duration;
int samplerate;
int channels;
int imageoffset;
int imagesize;
int imagereader; /* non-zero if a special reader required */
};