2003-11-03 15:34:52 -05:00
|
|
|
/*
|
|
|
|
* $Id$
|
|
|
|
* Header file for mp3 scanner and monitor
|
|
|
|
*
|
|
|
|
* Copyright (C) 2003 Ron Pedde (ron@pedde.com)
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _MP3_SCANNER_H_
|
|
|
|
#define _MP3_SCANNER_H_
|
|
|
|
|
2004-10-15 16:10:39 -04:00
|
|
|
#include <sys/types.h>
|
|
|
|
|
2003-11-03 15:34:52 -05:00
|
|
|
typedef struct tag_mp3file {
|
|
|
|
char *path;
|
|
|
|
char *fname;
|
2004-03-16 02:54:37 -05:00
|
|
|
char *title; /* TIT2 */
|
|
|
|
char *artist; /* TPE1 */
|
|
|
|
char *album; /* TALB */
|
|
|
|
char *genre; /* TCON */
|
|
|
|
char *comment; /* COMM */
|
2004-02-22 22:27:49 -05:00
|
|
|
char *type;
|
2004-03-16 02:54:37 -05:00
|
|
|
char *composer; /* TCOM */
|
|
|
|
char *orchestra; /* TPE2 */
|
|
|
|
char *conductor; /* TPE3 */
|
|
|
|
char *grouping; /* TIT1 */
|
2004-11-04 00:04:46 -05:00
|
|
|
char *url; /* daap.songdataurl (asul) */
|
2003-11-11 21:59:45 -05:00
|
|
|
|
|
|
|
int bitrate;
|
|
|
|
int samplerate;
|
|
|
|
int song_length;
|
|
|
|
int file_size;
|
2004-03-16 02:54:37 -05:00
|
|
|
int year; /* TDRC */
|
2004-01-27 00:30:06 -05:00
|
|
|
|
2004-03-16 02:54:37 -05:00
|
|
|
int track; /* TRCK */
|
2004-01-27 00:30:06 -05:00
|
|
|
int total_tracks;
|
2003-11-11 21:59:45 -05:00
|
|
|
|
2004-03-16 02:54:37 -05:00
|
|
|
int disc; /* TPOS */
|
2004-02-18 15:34:08 -05:00
|
|
|
int total_discs;
|
|
|
|
|
2004-03-03 01:50:09 -05:00
|
|
|
int time_added;
|
|
|
|
int time_modified;
|
|
|
|
int time_played;
|
2005-03-11 01:39:40 -05:00
|
|
|
int play_count;
|
|
|
|
int rating;
|
2004-11-20 14:22:40 -05:00
|
|
|
int db_timestamp;
|
2005-03-11 01:39:40 -05:00
|
|
|
int disabled;
|
2004-09-07 23:48:09 -04:00
|
|
|
int bpm; /* TBPM */
|
2003-12-09 00:48:06 -05:00
|
|
|
|
2003-11-09 22:58:39 -05:00
|
|
|
int got_id3;
|
2005-03-11 01:39:40 -05:00
|
|
|
unsigned int id;
|
|
|
|
|
2005-04-03 22:21:26 -04:00
|
|
|
char *description; /* long file type */
|
|
|
|
char *codectype; /* song.codectype */
|
2004-06-14 15:01:06 -04:00
|
|
|
int item_kind; /* song or movie */
|
2004-11-04 00:04:46 -05:00
|
|
|
int data_kind; /* dmap.datakind (asdk) */
|
2005-03-19 05:02:19 -05:00
|
|
|
int force_update;
|
|
|
|
int sample_count;
|
2004-11-20 14:22:40 -05:00
|
|
|
char compilation;
|
2003-11-03 15:34:52 -05:00
|
|
|
} MP3FILE;
|
|
|
|
|
2005-04-19 00:47:59 -04:00
|
|
|
typedef struct tag_m3ufile {
|
|
|
|
int id; /**< integer id (miid) */
|
|
|
|
char *title; /**< playlist name as displayed in iTunes (minm) */
|
|
|
|
int type; /**< 0=static webmanaged, 1=smart, 2=static m3u (aeSP/MPTY) */
|
|
|
|
int items; /**< number of items (mimc) */
|
|
|
|
char *query; /**< where clause if type 1 (MSPS) */
|
|
|
|
int db_timestamp; /**< time last updated */
|
|
|
|
char *path; /**< path of underlying playlist (if type 2) */
|
|
|
|
int index; /**< index of playlist for paths with multiple playlists */
|
|
|
|
} M3UFILE;
|
|
|
|
|
2005-04-24 17:15:18 -04:00
|
|
|
#define PL_STATICWEB 0
|
|
|
|
#define PL_SMART 1
|
|
|
|
#define PL_STATICFILE 2
|
|
|
|
#define PL_STATICXML 3
|
|
|
|
|
2003-11-04 01:11:00 -05:00
|
|
|
extern int scan_init(char *path);
|
2004-06-14 15:01:06 -04:00
|
|
|
extern void make_composite_tags(MP3FILE *song);
|
|
|
|
|
2005-03-11 01:39:40 -05:00
|
|
|
/* FIXME: this should be refactored out of here... */
|
2004-10-15 16:10:39 -04:00
|
|
|
extern off_t aac_drilltoatom(FILE *aac_fp, char *atom_path, unsigned int *atom_length);
|
2005-03-11 01:39:40 -05:00
|
|
|
extern long scan_aac_findatom(FILE *fin, long max_offset, char *which_atom, int *atom_size);
|
2003-11-03 15:34:52 -05:00
|
|
|
#endif /* _MP3_SCANNER_H_ */
|