summaryrefslogtreecommitdiff
path: root/src/grl-metadata-key.h
blob: 89b90593c86d05ab860bfa27a0e2b262465a35ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
 * Copyright (C) 2010, 2011 Igalia S.L.
 *
 * Contact: Iago Toral Quiroga <itoral@igalia.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 *
 */

#if !defined (_GRILO_H_INSIDE_) && !defined (GRILO_COMPILATION)
#error "Only <grilo.h> can be included directly."
#endif

#ifndef _GRL_METADATA_KEY_H_
#define _GRL_METADATA_KEY_H_

#include <glib.h>
#include <glib-object.h>

#define GRL_METADATA_KEY_GET_ID(key)   (key)
#define GRL_METADATA_KEY_GET_NAME(key) (grl_metadata_key_get_name (key))
#define GRL_METADATA_KEY_GET_DESC(key) (grl_metadata_key_get_desc (key))
#define GRL_METADATA_KEY_GET_TYPE(key) (grl_metadata_key_get_type (key))

#define GRL_KEYID_FORMAT "u"

#define GRLPOINTER_TO_KEYID(p) (GPOINTER_TO_UINT(p))
#define GRLKEYID_TO_POINTER(k) (GUINT_TO_POINTER(k))

typedef guint32 GrlKeyID;

/**
 * GrlMediaType:
 * @GRL_MEDIA_TYPE_UNKNOWN: unknown media
 * @GRL_MEDIA_TYPE_AUDIO: audio media
 * @GRL_MEDIA_TYPE_VIDEO: video media
 * @GRL_MEDIA_TYPE_IMAGE: image media
 * @GRL_MEDIA_TYPE_CONTAINER: container media
 */
typedef enum {
  GRL_MEDIA_TYPE_UNKNOWN,
  GRL_MEDIA_TYPE_AUDIO,
  GRL_MEDIA_TYPE_VIDEO,
  GRL_MEDIA_TYPE_IMAGE,
  GRL_MEDIA_TYPE_CONTAINER
} GrlMediaType;

#define g_value_get_grl_key_id(value) ((GrlKeyID) g_value_get_uint(value))
#define g_value_set_grl_key_id(value,key) g_value_set_uint(value,(guint)key)

#define GRL_METADATA_KEY_INVALID              0

/* BEGIN CORE KEYS */

#define GRL_METADATA_KEY_ALBUM                1
#define GRL_METADATA_KEY_ARTIST               2
#define GRL_METADATA_KEY_AUTHOR               3
#define GRL_METADATA_KEY_BITRATE              4
#define GRL_METADATA_KEY_CERTIFICATE          5
#define GRL_METADATA_KEY_CHILDCOUNT           6
#define GRL_METADATA_KEY_PUBLICATION_DATE     7
#define GRL_METADATA_KEY_DESCRIPTION          8
#define GRL_METADATA_KEY_DURATION             9
#define GRL_METADATA_KEY_EXTERNAL_PLAYER      10
#define GRL_METADATA_KEY_EXTERNAL_URL         11
#define GRL_METADATA_KEY_FRAMERATE            12
#define GRL_METADATA_KEY_GENRE                13
#define GRL_METADATA_KEY_HEIGHT               14
#define GRL_METADATA_KEY_ID                   15
#define GRL_METADATA_KEY_LAST_PLAYED          16
#define GRL_METADATA_KEY_LAST_POSITION        17
#define GRL_METADATA_KEY_LICENSE              18
#define GRL_METADATA_KEY_LYRICS               19
#define GRL_METADATA_KEY_MIME                 20
#define GRL_METADATA_KEY_PLAY_COUNT           21
#define GRL_METADATA_KEY_RATING               22
#define GRL_METADATA_KEY_SITE                 23
#define GRL_METADATA_KEY_SOURCE               24
#define GRL_METADATA_KEY_STUDIO               25
#define GRL_METADATA_KEY_THUMBNAIL            26
#define GRL_METADATA_KEY_THUMBNAIL_BINARY     27
#define GRL_METADATA_KEY_TITLE                28
#define GRL_METADATA_KEY_URL                  29
#define GRL_METADATA_KEY_WIDTH                30
#define GRL_METADATA_KEY_SEASON               31
#define GRL_METADATA_KEY_EPISODE              32
#define GRL_METADATA_KEY_SHOW                 33
#define GRL_METADATA_KEY_CREATION_DATE        34
#define GRL_METADATA_KEY_CAMERA_MODEL         35
#define GRL_METADATA_KEY_ORIENTATION          36
#define GRL_METADATA_KEY_FLASH_USED           37
#define GRL_METADATA_KEY_EXPOSURE_TIME        38
#define GRL_METADATA_KEY_ISO_SPEED            39
#define GRL_METADATA_KEY_TRACK_NUMBER         40
#define GRL_METADATA_KEY_MODIFICATION_DATE    41
#define GRL_METADATA_KEY_START_TIME           42
#define GRL_METADATA_KEY_FAVOURITE            43
#define GRL_METADATA_KEY_REGION               44
#define GRL_METADATA_KEY_KEYWORD              45
#define GRL_METADATA_KEY_PERFORMER            46
#define GRL_METADATA_KEY_PRODUCER             47
#define GRL_METADATA_KEY_DIRECTOR             48
#define GRL_METADATA_KEY_ORIGINAL_TITLE       49
#define GRL_METADATA_KEY_SIZE                 50
#define GRL_METADATA_KEY_TITLE_FROM_FILENAME  51
#define GRL_METADATA_KEY_MB_ALBUM_ID          52 /* Deprecated: use MB_RELEASE_ID or MB_RELEASE_GROUP_ID */
#define GRL_METADATA_KEY_MB_TRACK_ID          53
#define GRL_METADATA_KEY_MB_ARTIST_ID         54
#define GRL_METADATA_KEY_MB_RECORDING_ID      55
#define GRL_METADATA_KEY_EPISODE_TITLE        56
#define GRL_METADATA_KEY_AUDIO_TRACK          57
#define GRL_METADATA_KEY_ALBUM_DISC_NUMBER    58
#define GRL_METADATA_KEY_COMPOSER             59
#define GRL_METADATA_KEY_ALBUM_ARTIST         60
#define GRL_METADATA_KEY_MB_RELEASE_ID        61
#define GRL_METADATA_KEY_MB_RELEASE_GROUP_ID  62

/* END CORE KEYS */

G_BEGIN_DECLS

const gchar *grl_metadata_key_get_name (GrlKeyID key);

const gchar *grl_metadata_key_get_desc (GrlKeyID key);

GType grl_metadata_key_get_type (GrlKeyID key);

GList *grl_metadata_key_list_new(GrlKeyID first_key, ...);

G_END_DECLS

#endif /* _GRL_METADATA_KEY_H_ */