1/* Media file scanner
2 *
3 * Project : minidlna
4 * Website : http://sourceforge.net/projects/minidlna/
5 * Author  : Justin Maggard
6 *
7 * MiniDLNA media server
8 * Copyright (C) 2008-2009  Justin Maggard
9 *
10 * This file is part of MiniDLNA.
11 *
12 * MiniDLNA is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 *
16 * MiniDLNA is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with MiniDLNA. If not, see <http://www.gnu.org/licenses/>.
23 */
24#ifndef __SCANNER_H__
25#define __SCANNER_H__
26
27/* Try to be generally PlaysForSure compatible by using similar IDs */
28#define BROWSEDIR_ID		"64"
29
30#define MUSIC_ID		"1"
31#define MUSIC_ALL_ID		"1$4"
32#define MUSIC_GENRE_ID		"1$5"
33#define MUSIC_ARTIST_ID		"1$6"
34#define MUSIC_ALBUM_ID		"1$7"
35#define MUSIC_PLIST_ID		"1$F"
36#define MUSIC_DIR_ID		"1$14"
37#define MUSIC_CONTRIB_ARTIST_ID	"1$100"
38#define MUSIC_ALBUM_ARTIST_ID	"1$107"
39#define MUSIC_COMPOSER_ID	"1$108"
40#define MUSIC_RATING_ID		"1$101"
41
42#define VIDEO_ID		"2"
43#define VIDEO_ALL_ID		"2$8"
44#define VIDEO_GENRE_ID		"2$9"
45#define VIDEO_ACTOR_ID		"2$A"
46#define VIDEO_SERIES_ID		"2$E"
47#define VIDEO_PLIST_ID		"2$10"
48#define VIDEO_DIR_ID		"2$15"
49#define VIDEO_RATING_ID		"2$200"
50
51#define IMAGE_ID		"3"
52#define IMAGE_ALL_ID		"3$B"
53#define IMAGE_DATE_ID		"3$C"
54#define IMAGE_ALBUM_ID		"3$D"
55#define IMAGE_CAMERA_ID		"3$D2" // PlaysForSure == Keyword
56#define IMAGE_PLIST_ID		"3$11"
57#define IMAGE_DIR_ID		"3$16"
58#define IMAGE_RATING_ID		"3$300"
59
60extern int valid_cache;
61
62int
63is_video(const char *file);
64
65int
66is_audio(const char *file);
67
68int
69is_image(const char *file);
70
71int64_t
72get_next_available_id(const char *table, const char *parentID);
73
74int64_t
75insert_directory(const char *name, const char *path, const char *base, const char *parentID, int objectID);
76
77int
78insert_file(char *name, const char *path, const char *parentID, int object, media_types dir_types);
79
80int
81CreateDatabase(void);
82
83void
84start_scanner();
85
86#endif
87