1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
2  *
3  *  Copyright (C) 2003,2004 Colin Walters <walters@verbum.org>
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  The Rhythmbox authors hereby grant permission for non-GPL compatible
11  *  GStreamer plugins to be used and distributed together with GStreamer
12  *  and Rhythmbox. This permission is above and beyond the permissions granted
13  *  by the GPL license by which Rhythmbox is covered. If you modify this code
14  *  you may extend this exception to your version of the code, but you are not
15  *  obligated to do so. If you do not wish to do so, delete this exception
16  *  statement from your version.
17  *
18  *  This program is distributed in the hope that it will be useful,
19  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
20  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  *  GNU General Public License for more details.
22  *
23  *  You should have received a copy of the GNU General Public License
24  *  along with this program; if not, write to the Free Software
25  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
26  *
27  */
28 
29 #include <config.h>
30 
31 #include <string.h>
32 
33 #include <glib/gi18n.h>
34 #include <gst/gst.h>
35 #include <gst/tag/tag.h>
36 
37 #include "rb-metadata-gst-common.h"
38 #include "rb-debug.h"
39 
40 RBMetaDataField
rb_metadata_gst_tag_to_field(const char * tag)41 rb_metadata_gst_tag_to_field (const char *tag)
42 {
43 	if (!strcmp (tag, GST_TAG_TITLE))
44 		return RB_METADATA_FIELD_TITLE;
45 	else if (!strcmp (tag, GST_TAG_ARTIST))
46 		return RB_METADATA_FIELD_ARTIST;
47 	else if (!strcmp (tag, GST_TAG_ALBUM))
48 		return RB_METADATA_FIELD_ALBUM;
49 	else if (!strcmp (tag, GST_TAG_DATE_TIME))
50 		return RB_METADATA_FIELD_DATE;
51 	else if (!strcmp (tag, GST_TAG_GENRE))
52 		return RB_METADATA_FIELD_GENRE;
53 	else if (!strcmp (tag, GST_TAG_COMMENT))
54 		return RB_METADATA_FIELD_COMMENT;
55 	else if (!strcmp (tag, GST_TAG_TRACK_NUMBER))
56 		return RB_METADATA_FIELD_TRACK_NUMBER;
57 	else if (!strcmp (tag, GST_TAG_TRACK_COUNT))
58 		return RB_METADATA_FIELD_MAX_TRACK_NUMBER;
59 	else if (!strcmp (tag, GST_TAG_ALBUM_VOLUME_NUMBER))
60 		return RB_METADATA_FIELD_DISC_NUMBER;
61 	else if (!strcmp (tag, GST_TAG_ALBUM_VOLUME_COUNT))
62 		return RB_METADATA_FIELD_MAX_TRACK_NUMBER;
63 	else if (!strcmp (tag, GST_TAG_DESCRIPTION))
64 		return RB_METADATA_FIELD_DESCRIPTION;
65 	else if (!strcmp (tag, GST_TAG_VERSION))
66 		return RB_METADATA_FIELD_VERSION;
67 	else if (!strcmp (tag, GST_TAG_ISRC))
68 		return RB_METADATA_FIELD_ISRC;
69 	else if (!strcmp (tag, GST_TAG_ORGANIZATION))
70 		return RB_METADATA_FIELD_ORGANIZATION;
71 	else if (!strcmp (tag, GST_TAG_COPYRIGHT))
72 		return RB_METADATA_FIELD_COPYRIGHT;
73 	else if (!strcmp (tag, GST_TAG_CONTACT))
74 		return RB_METADATA_FIELD_CONTACT;
75 	else if (!strcmp (tag, GST_TAG_LICENSE))
76 		return RB_METADATA_FIELD_LICENSE;
77 	else if (!strcmp (tag, GST_TAG_PERFORMER))
78 		return RB_METADATA_FIELD_PERFORMER;
79 	else if (!strcmp (tag, GST_TAG_DURATION))
80 		return RB_METADATA_FIELD_DURATION;
81 	else if (!strcmp (tag, GST_TAG_CODEC))
82 		return RB_METADATA_FIELD_CODEC;
83 	else if (!strcmp (tag, GST_TAG_BITRATE))
84 		return RB_METADATA_FIELD_BITRATE;
85 	else if (!strcmp (tag, GST_TAG_TRACK_GAIN))
86 		return RB_METADATA_FIELD_TRACK_GAIN;
87 	else if (!strcmp (tag, GST_TAG_TRACK_PEAK))
88 		return RB_METADATA_FIELD_TRACK_PEAK;
89 	else if (!strcmp (tag, GST_TAG_ALBUM_GAIN))
90 		return RB_METADATA_FIELD_ALBUM_GAIN;
91 	else if (!strcmp (tag, GST_TAG_ALBUM_PEAK))
92 		return RB_METADATA_FIELD_ALBUM_PEAK;
93 	else if (!strcmp (tag, GST_TAG_BEATS_PER_MINUTE))
94 		return RB_METADATA_FIELD_BPM;
95 	else if (!strcmp (tag, GST_TAG_MUSICBRAINZ_TRACKID))
96 		return RB_METADATA_FIELD_MUSICBRAINZ_TRACKID;
97 	else if (!strcmp (tag, GST_TAG_MUSICBRAINZ_ARTISTID))
98 		return RB_METADATA_FIELD_MUSICBRAINZ_ARTISTID;
99 	else if (!strcmp (tag, GST_TAG_MUSICBRAINZ_ALBUMID))
100 		return RB_METADATA_FIELD_MUSICBRAINZ_ALBUMID;
101 	else if (!strcmp (tag, GST_TAG_MUSICBRAINZ_ALBUMARTISTID))
102 		return RB_METADATA_FIELD_MUSICBRAINZ_ALBUMARTISTID;
103 	else if (!strcmp (tag, GST_TAG_ARTIST_SORTNAME))
104 		return RB_METADATA_FIELD_ARTIST_SORTNAME;
105 	else if (!strcmp (tag, GST_TAG_ALBUM_SORTNAME))
106 		return RB_METADATA_FIELD_ALBUM_SORTNAME;
107 	else if (!strcmp (tag, GST_TAG_ALBUM_ARTIST))
108 		return RB_METADATA_FIELD_ALBUM_ARTIST;
109 	else if (!strcmp (tag, GST_TAG_ALBUM_ARTIST_SORTNAME))
110 		return RB_METADATA_FIELD_ALBUM_ARTIST_SORTNAME;
111 	else if (!strcmp (tag, GST_TAG_COMPOSER))
112 		return RB_METADATA_FIELD_COMPOSER;
113 	else if (!strcmp (tag, GST_TAG_COMPOSER_SORTNAME))
114 		return RB_METADATA_FIELD_COMPOSER_SORTNAME;
115 	else
116 		return -1;
117 }
118 
119 const char *
rb_metadata_gst_field_to_gst_tag(RBMetaDataField field)120 rb_metadata_gst_field_to_gst_tag (RBMetaDataField field)
121 {
122 	switch (field)
123 	{
124 	case RB_METADATA_FIELD_TITLE:
125 		return GST_TAG_TITLE;
126 	case RB_METADATA_FIELD_ARTIST:
127 		return GST_TAG_ARTIST;
128 	case RB_METADATA_FIELD_ALBUM:
129 		return GST_TAG_ALBUM;
130 	case RB_METADATA_FIELD_DATE:
131 		return GST_TAG_DATE_TIME;
132 	case RB_METADATA_FIELD_GENRE:
133 		return GST_TAG_GENRE;
134 	case RB_METADATA_FIELD_COMMENT:
135 		return GST_TAG_COMMENT;
136 	case RB_METADATA_FIELD_TRACK_NUMBER:
137 		return GST_TAG_TRACK_NUMBER;
138 	case RB_METADATA_FIELD_MAX_TRACK_NUMBER:
139 		return GST_TAG_TRACK_COUNT;
140 	case RB_METADATA_FIELD_DISC_NUMBER:
141 		return GST_TAG_ALBUM_VOLUME_NUMBER;
142 	case RB_METADATA_FIELD_MAX_DISC_NUMBER:
143 		return GST_TAG_ALBUM_VOLUME_COUNT;
144 	case RB_METADATA_FIELD_DESCRIPTION:
145 		return GST_TAG_DESCRIPTION;
146 	case RB_METADATA_FIELD_VERSION:
147 		return GST_TAG_VERSION;
148 	case RB_METADATA_FIELD_ISRC:
149 		return GST_TAG_ISRC;
150 	case RB_METADATA_FIELD_ORGANIZATION:
151 		return GST_TAG_ORGANIZATION;
152 	case RB_METADATA_FIELD_COPYRIGHT:
153 		return GST_TAG_COPYRIGHT;
154 	case RB_METADATA_FIELD_CONTACT:
155 		return GST_TAG_CONTACT;
156 	case RB_METADATA_FIELD_LICENSE:
157 		return GST_TAG_LICENSE;
158 	case RB_METADATA_FIELD_PERFORMER:
159 		return GST_TAG_PERFORMER;
160 	case RB_METADATA_FIELD_DURATION:
161 		return GST_TAG_DURATION;
162 	case RB_METADATA_FIELD_CODEC:
163 		return GST_TAG_CODEC;
164 	case RB_METADATA_FIELD_BITRATE:
165 		return GST_TAG_BITRATE;
166 	case RB_METADATA_FIELD_TRACK_GAIN:
167 		return GST_TAG_TRACK_GAIN;
168 	case RB_METADATA_FIELD_TRACK_PEAK:
169 		return GST_TAG_TRACK_PEAK;
170 	case RB_METADATA_FIELD_ALBUM_GAIN:
171 		return GST_TAG_ALBUM_GAIN;
172 	case RB_METADATA_FIELD_ALBUM_PEAK:
173 		return GST_TAG_ALBUM_PEAK;
174 	case RB_METADATA_FIELD_BPM:
175 		return GST_TAG_BEATS_PER_MINUTE;
176 	case RB_METADATA_FIELD_MUSICBRAINZ_TRACKID:
177 		return GST_TAG_MUSICBRAINZ_TRACKID;
178 	case RB_METADATA_FIELD_MUSICBRAINZ_ARTISTID:
179 		return GST_TAG_MUSICBRAINZ_ARTISTID;
180 	case RB_METADATA_FIELD_MUSICBRAINZ_ALBUMID:
181 		return GST_TAG_MUSICBRAINZ_ALBUMID;
182 	case RB_METADATA_FIELD_MUSICBRAINZ_ALBUMARTISTID:
183 		return GST_TAG_MUSICBRAINZ_ALBUMARTISTID;
184 	case RB_METADATA_FIELD_ARTIST_SORTNAME:
185 		return GST_TAG_ARTIST_SORTNAME;
186 	case RB_METADATA_FIELD_ALBUM_SORTNAME:
187 		return GST_TAG_ALBUM_SORTNAME;
188 	case RB_METADATA_FIELD_ALBUM_ARTIST:
189 		return GST_TAG_ALBUM_ARTIST;
190 	case RB_METADATA_FIELD_ALBUM_ARTIST_SORTNAME:
191 		return GST_TAG_ALBUM_ARTIST_SORTNAME;
192 	case RB_METADATA_FIELD_COMPOSER:
193 		return GST_TAG_COMPOSER;
194 	case RB_METADATA_FIELD_COMPOSER_SORTNAME:
195 		return GST_TAG_COMPOSER_SORTNAME;
196 	default:
197 		return NULL;
198 	}
199 }
200