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