35 #define VH_STRINGIFY(s) #s
36 #define VH_TOSTRING(s) VH_STRINGIFY(s)
38 #define VH_VERSION_INT(a, b, c) (a << 16 | b << 8 | c)
39 #define VH_VERSION_DOT(a, b, c) a ##.## b ##.## c
40 #define VH_VERSION(a, b, c) VH_VERSION_DOT(a, b, c)
42 #define LIBVALHALLA_VERSION_MAJOR 2
43 #define LIBVALHALLA_VERSION_MINOR 0
44 #define LIBVALHALLA_VERSION_MICRO 0
46 #define LIBVALHALLA_DB_VERSION 2
48 #define LIBVALHALLA_VERSION_INT VH_VERSION_INT(LIBVALHALLA_VERSION_MAJOR, \
49 LIBVALHALLA_VERSION_MINOR, \
50 LIBVALHALLA_VERSION_MICRO)
51 #define LIBVALHALLA_VERSION VH_VERSION(LIBVALHALLA_VERSION_MAJOR, \
52 LIBVALHALLA_VERSION_MINOR, \
53 LIBVALHALLA_VERSION_MICRO)
54 #define LIBVALHALLA_VERSION_STR VH_TOSTRING(LIBVALHALLA_VERSION)
55 #define LIBVALHALLA_BUILD LIBVALHALLA_VERSION_INT
66 typedef enum valhalla_lang {
76 typedef enum valhalla_file_type {
77 VALHALLA_FILE_TYPE_NULL = 0,
78 VALHALLA_FILE_TYPE_AUDIO,
79 VALHALLA_FILE_TYPE_IMAGE,
80 VALHALLA_FILE_TYPE_PLAYLIST,
81 VALHALLA_FILE_TYPE_VIDEO,
82 } valhalla_file_type_t;
85 typedef enum valhalla_meta_grp {
176 #define VALHALLA_METADATA_CATEGORY "category"
177 #define VALHALLA_METADATA_EPISODE "episode"
178 #define VALHALLA_METADATA_GENRE "genre"
179 #define VALHALLA_METADATA_MPAA "mpaa"
180 #define VALHALLA_METADATA_RUNTIME "runtime"
181 #define VALHALLA_METADATA_SEASON "season"
182 #define VALHALLA_METADATA_SYNOPSIS "synopsis"
183 #define VALHALLA_METADATA_SYNOPSIS_SHOW "synopsis_show"
186 #define VALHALLA_METADATA_BUDGET "budget"
187 #define VALHALLA_METADATA_COUNTRY "country"
188 #define VALHALLA_METADATA_REVENUE "revenue"
189 #define VALHALLA_METADATA_STUDIO "studio"
192 #define VALHALLA_METADATA_ACTOR "actor"
193 #define VALHALLA_METADATA_ARTIST "artist"
194 #define VALHALLA_METADATA_AUTHOR "author"
195 #define VALHALLA_METADATA_CASTING "casting"
196 #define VALHALLA_METADATA_COMPOSER "composer"
197 #define VALHALLA_METADATA_CREDITS "credits"
198 #define VALHALLA_METADATA_DIRECTOR "director"
199 #define VALHALLA_METADATA_DIRECTOR_PHOTO "director_photo"
200 #define VALHALLA_METADATA_EDITOR "editor"
201 #define VALHALLA_METADATA_PRODUCER "producer"
202 #define VALHALLA_METADATA_WRITER "writer"
205 #define VALHALLA_METADATA_COVER "cover"
206 #define VALHALLA_METADATA_COVER_SEASON "cover_season"
207 #define VALHALLA_METADATA_COVER_SHOW "cover_show"
208 #define VALHALLA_METADATA_COVER_SHOW_HEADER "cover_show_header"
209 #define VALHALLA_METADATA_FAN_ART "fanart"
210 #define VALHALLA_METADATA_LYRICS "lyrics"
211 #define VALHALLA_METADATA_THUMBNAIL "thumbnail"
214 #define VALHALLA_METADATA_TRACK "track"
217 #define VALHALLA_METADATA_PLAY_COUNT "playcount"
218 #define VALHALLA_METADATA_RATING "rating"
219 #define VALHALLA_METADATA_WATCHED "watched"
222 #define VALHALLA_METADATA_AUDIO_BITRATE "audio_bitrate"
223 #define VALHALLA_METADATA_AUDIO_CHANNELS "audio_channels"
224 #define VALHALLA_METADATA_AUDIO_CODEC "audio_codec"
225 #define VALHALLA_METADATA_AUDIO_LANG "audio_lang"
226 #define VALHALLA_METADATA_AUDIO_STREAMS "audio_streams"
227 #define VALHALLA_METADATA_DURATION "duration"
228 #define VALHALLA_METADATA_FILESIZE "filesize"
229 #define VALHALLA_METADATA_HEIGHT "height"
230 #define VALHALLA_METADATA_PICTURE_ORIENTATION "picture_orientation"
231 #define VALHALLA_METADATA_SUB_LANG "sub_lang"
232 #define VALHALLA_METADATA_SUB_STREAMS "sub_streams"
233 #define VALHALLA_METADATA_VIDEO_ASPECT "video_aspect"
234 #define VALHALLA_METADATA_VIDEO_BITRATE "video_bitrate"
235 #define VALHALLA_METADATA_VIDEO_CODEC "video_codec"
236 #define VALHALLA_METADATA_VIDEO_STREAMS "video_streams"
237 #define VALHALLA_METADATA_WIDTH "width"
240 #define VALHALLA_METADATA_DATE "date"
241 #define VALHALLA_METADATA_PREMIERED "premiered"
242 #define VALHALLA_METADATA_YEAR "year"
245 #define VALHALLA_METADATA_ALBUM "album"
246 #define VALHALLA_METADATA_TITLE "title"
247 #define VALHALLA_METADATA_TITLE_ALTERNATIVE "title_alternative"
248 #define VALHALLA_METADATA_TITLE_SHOW "title_show"
273 typedef enum valhalla_verb {
283 typedef enum valhalla_dl {
292 typedef enum valhalla_event_od {
299 typedef enum valhalla_event_gl {
308 typedef enum valhalla_event_md {
314 typedef enum valhalla_stats_type {
324 typedef enum valhalla_metadata_pl {
337 typedef struct valhalla_metadata_s {
345 typedef struct valhalla_file_s {
349 valhalla_file_type_t type;
352 #define VH_CFG_RANGE 8
354 #define VH_VOID_T (0 << VH_CFG_RANGE)
355 #define VH_VOIDP_T (1 << VH_CFG_RANGE)
356 #define VH_INT_T (2 << VH_CFG_RANGE)
357 #define VH_VOIDP_2_T (4 << VH_CFG_RANGE)
360 #define VH_CFG_INIT(name, type, num) VALHALLA_CFG_##name = ((type) + (num))
382 typedef enum valhalla_cfg {
494 typedef struct valhalla_init_param_s {
523 unsigned int decrapifier : 1;
537 const char *id,
void *data);
599 #define valhalla_config_set(handle, conf, arg...) \
600 valhalla_config_set_orig (handle, VALHALLA_CFG_##conf, ##arg, ~0)
741 int loop, uint16_t timeout, uint16_t delay,
int priority);
800 typedef enum valhalla_db_type {
802 VALHALLA_DB_TYPE_TEXT,
803 VALHALLA_DB_TYPE_GROUP,
807 typedef enum valhalla_db_operator {
808 VALHALLA_DB_OPERATOR_IN,
809 VALHALLA_DB_OPERATOR_NOTIN,
810 VALHALLA_DB_OPERATOR_EQUAL,
814 typedef struct valhalla_db_item_s {
824 typedef struct valhalla_db_metares_s {
825 int64_t meta_id, data_id;
826 const char *meta_name, *data_value;
833 typedef struct valhalla_db_fileres_s {
836 valhalla_file_type_t type;
840 typedef struct valhalla_db_restrict_s {
841 struct valhalla_db_restrict_s *next;
865 #define VALHALLA_DB_SEARCH(id, txt, g, t, l, p) \
867 VALHALLA_DB_TYPE_##t, \
870 VALHALLA_META_GRP_##g, \
890 #define VALHALLA_DB_RESTRICT(op, m_id, d_id, m_txt, d_txt, m_t, d_t, l, p) \
893 VALHALLA_DB_OPERATOR_##op, \
894 VALHALLA_DB_SEARCH (m_id, m_txt, NIL, m_t, l, p), \
895 VALHALLA_DB_SEARCH (d_id, d_txt, NIL, d_t, l, p) \
899 #define VALHALLA_DB_SEARCH_ID(meta_id, group, l, p) \
900 VALHALLA_DB_SEARCH (meta_id, NULL, group, ID, l, p)
902 #define VALHALLA_DB_SEARCH_TEXT(meta_name, group, l, p) \
903 VALHALLA_DB_SEARCH (0, meta_name, group, TEXT, l, p)
905 #define VALHALLA_DB_SEARCH_GRP(group, l, p) \
906 VALHALLA_DB_SEARCH (0, NULL, group, GROUP, l, p)
909 #define VALHALLA_DB_RESTRICT_INT(op, meta, data, l, p) \
910 VALHALLA_DB_RESTRICT (op, meta, data, NULL, NULL, ID, ID, l, p)
912 #define VALHALLA_DB_RESTRICT_STR(op, meta, data, l, p) \
913 VALHALLA_DB_RESTRICT (op, 0, 0, meta, data, TEXT, TEXT, l, p)
915 #define VALHALLA_DB_RESTRICT_INTSTR(op, meta, data, l, p) \
916 VALHALLA_DB_RESTRICT (op, meta, 0, NULL, data, ID, TEXT, l, p)
918 #define VALHALLA_DB_RESTRICT_STRINT(op, meta, data, l, p) \
919 VALHALLA_DB_RESTRICT (op, 0, data, meta, NULL, TEXT, ID, l, p)
921 #define VALHALLA_DB_RESTRICT_LINK(from, to) \
922 do {(to).next = &(from);} while (0)
953 valhalla_file_type_t filetype,
992 valhalla_file_type_t filetype,
1122 const char *meta,
const char *data,
1146 const char *meta,
const char *data,
1164 const char *meta,
const char *data);
1185 const char *meta,
const char *data,