1/* Metadata extraction
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 __METADATA_H__
25#define __METADATA_H__
26
27typedef struct metadata_s {
28	char *title;
29	char *artist;
30	char *creator;
31	char *album;
32	char *genre;
33	char *comment;
34	char *channels;
35	char *bitrate;
36	char *frequency;
37	char *bps;
38	char *resolution;
39	char *rotation;
40	char *duration;
41	char *date;
42	char *mime;
43	char *dlna_pn;
44} metadata_t;
45
46typedef enum {
47  AAC_INVALID   =  0,
48  AAC_MAIN      =  1, /* AAC Main */
49  AAC_LC        =  2, /* AAC Low complexity */
50  AAC_SSR       =  3, /* AAC SSR */
51  AAC_LTP       =  4, /* AAC Long term prediction */
52  AAC_HE        =  5, /* AAC High efficiency (SBR) */
53  AAC_SCALE     =  6, /* Scalable */
54  AAC_TWINVQ    =  7, /* TwinVQ */
55  AAC_CELP      =  8, /* CELP */
56  AAC_HVXC      =  9, /* HVXC */
57  AAC_TTSI      = 12, /* TTSI */
58  AAC_MS        = 13, /* Main synthetic */
59  AAC_WAVE      = 14, /* Wavetable synthesis */
60  AAC_MIDI      = 15, /* General MIDI */
61  AAC_FX        = 16, /* Algorithmic Synthesis and Audio FX */
62  AAC_LC_ER     = 17, /* AAC Low complexity with error recovery */
63  AAC_LTP_ER    = 19, /* AAC Long term prediction with error recovery */
64  AAC_SCALE_ER  = 20, /* AAC scalable with error recovery */
65  AAC_TWINVQ_ER = 21, /* TwinVQ with error recovery */
66  AAC_BSAC_ER   = 22, /* BSAC with error recovery */
67  AAC_LD_ER     = 23, /* AAC LD with error recovery */
68  AAC_CELP_ER   = 24, /* CELP with error recovery */
69  AAC_HXVC_ER   = 25, /* HXVC with error recovery */
70  AAC_HILN_ER   = 26, /* HILN with error recovery */
71  AAC_PARAM_ER  = 27, /* Parametric with error recovery */
72  AAC_SSC       = 28, /* AAC SSC */
73  AAC_HE_L3     = 31, /* Reserved : seems to be HeAAC L3 */
74} aac_object_type_t;
75
76typedef enum {
77	NONE,
78	EMPTY,
79	VALID
80} ts_timestamp_t;
81
82int
83ends_with(const char * haystack, const char * needle);
84
85char *
86modifyString(char * string, const char * before, const char * after, short like);
87
88void
89check_for_captions(const char * path, sqlite_int64 detailID);
90
91sqlite_int64
92GetFolderMetadata(const char * name, const char * path, const char * artist, const char * genre, sqlite3_int64 album_art);
93
94sqlite_int64
95GetAudioMetadata(const char * path, char * name);
96
97sqlite_int64
98GetImageMetadata(const char * path, char * name);
99
100sqlite_int64
101GetVideoMetadata(const char * path, char * name);
102
103#endif
104