libtaginfo_c  0.2.0
taginfo_c.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 Jörn Magens
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This Program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; see the file LICENSE. If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth
17  * Floor, Boston, MA 02110-1301 USA
18  * https://www.gnu.org/licenses/lgpl-2.1.txt
19  *
20  * Author:
21  * Jörn Magens <shuerhaaken@googlemail.com>
22  * Matias De lellis <mati86dl@gmail.com>
23  * Pavel Vasin <rat4vier@gmail.com>
24  */
25 
26 
27 #ifndef TAGINFO_C_H
28 #define TAGINFO_C_H
29 
114 #ifdef __cplusplus
115 extern "C" {
116 #endif
117 
118 #ifndef BOOL
119 #define BOOL int
121 #endif
122 
123 
125 typedef enum {
177 
178 
180 typedef enum {
192 
193 
195 typedef enum {
239 
240 
243 typedef struct {
244 } TagInfo_Info;
245 
246 
249 typedef struct {
250 } TagInfo_Image;
251 
252 
253 /*----------------------------------------------------------------------------------------*/
254 //Info FREE FUNCTION
255 void taginfo_info_free(TagInfo_Info *info);
256 /*----------------------------------------------------------------------------------------*/
257 
258 
259 
260 /*----------------------------------------------------------------------------------------*/
261 // FACTORY CREATION
262 TagInfo_Info *taginfo_info_create(const char *filename);
264 TagInfo_Info *taginfo_info_create_from_mime(const char *filename, const char *mime_type);
265 /*----------------------------------------------------------------------------------------*/
266 
267 
268 BOOL taginfo_info_is_valid(TagInfo_Info *info);
269 /*----------------------------------------------------------------------------------------*/
270 // LOAD / SAVE
273 /*----------------------------------------------------------------------------------------*/
274 
275 
276 /*----------------------------------------------------------------------------------------*/
277 // STRING MANAGEMENT
280 /*----------------------------------------------------------------------------------------*/
281 
282 
283 /*----------------------------------------------------------------------------------------*/
284 // TAG ACCESS
285 char *taginfo_info_get_album(const TagInfo_Info *info);
286 void taginfo_info_set_album(TagInfo_Info *info, const char *album);
287 
288 char *taginfo_info_get_albumartist(const TagInfo_Info *info);
289 void taginfo_info_set_albumartist(TagInfo_Info *info, const char *albumartist);
290 
291 char *taginfo_info_get_artist(const TagInfo_Info *info);
292 void taginfo_info_set_artist(TagInfo_Info *info, const char *artist);
293 
295 void taginfo_info_set_beats_per_minute(TagInfo_Info *info, int new_bpm);
296 
297 char *taginfo_info_get_comment(const TagInfo_Info *info);
298 void taginfo_info_set_comment(TagInfo_Info *info, const char *comment);
299 
300 char *taginfo_info_get_composer(const TagInfo_Info *info);
301 void taginfo_info_set_composer(TagInfo_Info *info, const char *composer);
302 
303 char *taginfo_info_get_copyright(const TagInfo_Info *info);
304 void taginfo_info_set_copyright(TagInfo_Info *info, const char *copyright);
305 
306 char *taginfo_info_get_encoder(const TagInfo_Info *info);
307 void taginfo_info_set_encoder(TagInfo_Info *info, const char *encoder);
308 
309 char *taginfo_info_get_genre(const TagInfo_Info *info);
310 void taginfo_info_set_genre(TagInfo_Info *info, const char *genre);
311 
313 
314 char *taginfo_info_get_homepage(const TagInfo_Info *info);
315 void taginfo_info_set_homepage(TagInfo_Info *info, const char *homepage);
316 
318 void taginfo_info_set_is_compilation(TagInfo_Info *info, BOOL is_compilation);
319 
321 void taginfo_info_set_original_artist(TagInfo_Info *info, const char *artist);
322 
324 void taginfo_info_set_playcount(TagInfo_Info *info, int count);
325 
326 // rating 1 - 5; 0 -> not set
327 int taginfo_info_get_rating(const TagInfo_Info *info);
328 void taginfo_info_set_rating(TagInfo_Info *info, int rating);
329 
330 char *taginfo_info_get_title(const TagInfo_Info *info);
331 void taginfo_info_set_title(TagInfo_Info *info, const char *title);
332 
334 void taginfo_info_set_track_count(TagInfo_Info *info, int track_number);
335 
337 void taginfo_info_set_track_number(TagInfo_Info *info, int track_number);
338 
340 void taginfo_info_set_volume_count(TagInfo_Info *info, int count);
341 
343 void taginfo_info_set_volume_number(TagInfo_Info *info, int number);
344 
345 int taginfo_info_get_year(const TagInfo_Info *info);
346 void taginfo_info_set_year(TagInfo_Info *info, int year);
347 
348 
349 // AUDIO PROPERTIES
350 int taginfo_info_get_length(const TagInfo_Info *info);
351 int taginfo_info_get_bitrate(const TagInfo_Info *info);
353 int taginfo_info_get_channels(const TagInfo_Info *info);
354 
355 // USER LABELS
356 char ** taginfo_info_get_track_labels(const TagInfo_Info *info,
357  int *data_length);
359  const char* const* data, int data_length);
360 
361 char ** taginfo_info_get_album_labels(const TagInfo_Info *info,
362  int *data_length);
364  const char* const* data, int data_length);
365 
366 char ** taginfo_info_get_artist_labels(const TagInfo_Info *info,
367  int *data_length);
369  const char* const* data,
370  int data_length);
371 
372 // LYRICS
373 char * taginfo_info_get_lyrics(const TagInfo_Info *info);
375  const char *lyrics);
376 /*----------------------------------------------------------------------------------------*/
377 
378 /*----------------------------------------------------------------------------------------*/
379 // IMAGE Extraction
381  int *image_count);
383  TagInfo_Image ** images,
384  const int image_count);
385 /*----------------------------------------------------------------------------------------*/
386 
387 
388 /*----------------------------------------------------------------------------------------*/
389 // IMAGE API
391 
393 void taginfo_image_array_free(TagInfo_Image ** img_arr);
394 
395 char * taginfo_image_get_data(const TagInfo_Image * img, unsigned int * bin_data_length);
397  char * bin_data,
398  unsigned int bin_data_length);
399 
403 
406  TagInfo_ImageFileType image_f_type);
407 
408 char * taginfo_image_get_description(const TagInfo_Image * img);
410  const char * new_description);
411 /*----------------------------------------------------------------------------------------*/
412 
413 
414 #ifdef __cplusplus
415 }
416 #endif
417 #endif
char * taginfo_info_get_composer(const TagInfo_Info *info)
Definition: taginfo_c.cc:301
int taginfo_info_get_track_count(const TagInfo_Info *info)
Definition: taginfo_c.cc:435
Flac media file.
Definition: taginfo_c.h:137
TagInfo_Info * taginfo_info_create_from_mime(const char *filename, const char *mime_type)
Definition: taginfo_c.cc:121
Picture of the lyricist or text writer.
Definition: taginfo_c.h:221
Aiff media file.
Definition: taginfo_c.h:131
BOOL taginfo_info_save(TagInfo_Info *info)
Definition: taginfo_c.cc:153
void taginfo_info_set_track_labels(TagInfo_Info *info, const char *const *data, int data_length)
Set an array of user defined track labels.
Definition: taginfo_c.cc:653
void taginfo_info_set_artist(TagInfo_Info *info, const char *artist)
Definition: taginfo_c.cc:176
Picture of a large, coloured fish.
Definition: taginfo_c.h:231
TagInfo_Image ** taginfo_info_get_images(const TagInfo_Info *info, int *image_count)
Get an array of images copied from the file embedded images.
Definition: taginfo_c.cc:736
void taginfo_image_set_content_type(TagInfo_Image *img, TagInfo_ImageContentType itype)
Set the content's type of the image.
Definition: taginfo_c.cc:818
File icon of a different size or format.
Definition: taginfo_c.h:201
M4A media file.
Definition: taginfo_c.h:139
TagInfo_Info * taginfo_info_create(const char *filename)
Definition: taginfo_c.cc:98
Logo of the publisher (record company)
Definition: taginfo_c.h:237
BOOL taginfo_info_get_has_image(const TagInfo_Info *info)
Get information on the availability of an image that is embedded in the media file.
Definition: taginfo_c.cc:513
Unknown image file type.
Definition: taginfo_c.h:182
int taginfo_info_get_playcount(const TagInfo_Info *info)
Get the play count of a media track.
Definition: taginfo_c.cc:601
Logo of the band or performer.
Definition: taginfo_c.h:235
char * taginfo_info_get_artist(const TagInfo_Info *info)
Get the artist tag of a media track.
Definition: taginfo_c.cc:163
Back cover image of the album.
Definition: taginfo_c.h:205
int taginfo_info_get_channels(const TagInfo_Info *info)
Definition: taginfo_c.cc:493
void taginfo_info_set_title(TagInfo_Info *info, const char *title)
Definition: taginfo_c.cc:245
TagInfo_ImageFileType
is an enumeration of image file types for embedded images
Definition: taginfo_c.h:180
Picture of the band or orchestra.
Definition: taginfo_c.h:217
#define BOOL
Boolean value as integer.
Definition: taginfo_c.h:120
void taginfo_info_set_rating(TagInfo_Info *info, int rating)
Set the rating tag of a media track. rating 1 - 5; 0 -> not set.
Definition: taginfo_c.cc:591
void taginfo_info_set_track_number(TagInfo_Info *info, int track_number)
Definition: taginfo_c.cc:425
Unknown media file type.
Definition: taginfo_c.h:127
int taginfo_info_get_rating(const TagInfo_Info *info)
Get the rating of a media track. rating 1 - 5; 0 -> not set.
Definition: taginfo_c.cc:582
char * taginfo_info_get_homepage(const TagInfo_Info *info)
Definition: taginfo_c.cc:324
BOOL taginfo_info_load(TagInfo_Info *info)
Definition: taginfo_c.cc:147
char * taginfo_info_get_albumartist(const TagInfo_Info *info)
Definition: taginfo_c.cc:255
void taginfo_image_set_file_type(TagInfo_Image *img, TagInfo_ImageFileType image_f_type)
Set the file's type of the image.
Definition: taginfo_c.cc:842
void taginfo_info_set_encoder(TagInfo_Info *info, const char *encoder)
Definition: taginfo_c.cc:360
Tta media file.
Definition: taginfo_c.h:155
char * taginfo_info_get_album(const TagInfo_Info *info)
Definition: taginfo_c.cc:209
M4B media file.
Definition: taginfo_c.h:141
void taginfo_info_set_original_artist(TagInfo_Info *info, const char *artist)
Definition: taginfo_c.cc:199
Picture of the lead artist or soloist.
Definition: taginfo_c.h:211
void taginfo_info_set_is_compilation(TagInfo_Info *info, BOOL is_compilation)
Set the information if the media file is part of a compilation / VA album.
Definition: taginfo_c.cc:630
char * taginfo_info_get_encoder(const TagInfo_Info *info)
Definition: taginfo_c.cc:347
int taginfo_info_get_length(const TagInfo_Info *info)
Definition: taginfo_c.cc:503
MP3 media file.
Definition: taginfo_c.h:145
void taginfo_image_free(TagInfo_Image *img)
Definition: taginfo_c.cc:882
void taginfo_info_set_comment(TagInfo_Info *info, const char *comment)
Definition: taginfo_c.cc:291
Aac media file.
Definition: taginfo_c.h:129
TagInfo_ImageFileType taginfo_image_get_file_type(const TagInfo_Image *img)
Get the file's type of the image.
Definition: taginfo_c.cc:830
WavPack media file.
Definition: taginfo_c.h:161
Picture of the artists during recording.
Definition: taginfo_c.h:225
Wmv media file.
Definition: taginfo_c.h:165
void taginfo_info_set_albumartist(TagInfo_Info *info, const char *albumartist)
Definition: taginfo_c.cc:268
32x32 PNG image that should be used as the file icon
Definition: taginfo_c.h:199
MPC media file.
Definition: taginfo_c.h:149
Oga media file.
Definition: taginfo_c.h:151
TagInfo_MediaFileType
is an enumeration of media file types supported in libtaginfo
Definition: taginfo_c.h:125
int taginfo_info_get_beats_per_minute(const TagInfo_Info *info)
Get the BPM of a media track.
Definition: taginfo_c.cc:544
void taginfo_info_set_track_count(TagInfo_Info *info, int track_number)
Definition: taginfo_c.cc:444
Image from the album itself.
Definition: taginfo_c.h:209
void taginfo_info_set_artist_labels(TagInfo_Info *info, const char *const *data, int data_length)
Set an array of user defined artist labels.
Definition: taginfo_c.cc:703
Picture from a movie or video related to the track.
Definition: taginfo_c.h:229
Picture of the conductor.
Definition: taginfo_c.h:215
void taginfo_info_set_volume_number(TagInfo_Info *info, int number)
Set the volume number tag of a media track.
Definition: taginfo_c.cc:533
Inside leaflet page of the album.
Definition: taginfo_c.h:207
void taginfo_info_set_copyright(TagInfo_Info *info, const char *copyright)
Definition: taginfo_c.cc:383
Asf media file.
Definition: taginfo_c.h:135
TagInfo_ImageContentType taginfo_image_get_content_type(const TagInfo_Image *img)
Get the content's type of the image.
Definition: taginfo_c.cc:806
int taginfo_info_get_volume_number(const TagInfo_Info *info)
Get the volume number of a media track.
Definition: taginfo_c.cc:524
Speex media file.
Definition: taginfo_c.h:163
Opus media file.
Definition: taginfo_c.h:175
TagInfo_ImageContentType
enumeration for image content description
Definition: taginfo_c.h:195
TagInfo_Image * taginfo_image_new()
Definition: taginfo_c.cc:770
void taginfo_image_array_free(TagInfo_Image **img_arr)
Definition: taginfo_c.cc:894
char * taginfo_info_get_lyrics(const TagInfo_Info *info)
Get a lyrics string from the media file.
Definition: taginfo_c.cc:911
void taginfo_info_free_strings()
Definition: taginfo_c.cc:51
char ** taginfo_info_get_album_labels(const TagInfo_Info *info, int *data_length)
Get an array of user defined album labels.
Definition: taginfo_c.cc:666
Impulse Tracker media file.
Definition: taginfo_c.h:169
void taginfo_info_set_album_labels(TagInfo_Info *info, const char *const *data, int data_length)
Set an array of user defined album labels.
Definition: taginfo_c.cc:678
void taginfo_info_set_composer(TagInfo_Info *info, const char *composer)
Definition: taginfo_c.cc:314
An image type not listed here.
Definition: taginfo_c.h:197
Picture of the composer.
Definition: taginfo_c.h:219
void taginfo_info_set_year(TagInfo_Info *info, int year)
Definition: taginfo_c.cc:463
Front cover image of the album.
Definition: taginfo_c.h:203
int taginfo_info_get_volume_count(const TagInfo_Info *info)
Get the volume count of a media track.
Definition: taginfo_c.cc:563
int taginfo_info_get_bitrate(const TagInfo_Info *info)
Definition: taginfo_c.cc:473
Picture of the artists during performance.
Definition: taginfo_c.h:227
char ** taginfo_info_get_artist_labels(const TagInfo_Info *info, int *data_length)
Get an array of user defined artist labels.
Definition: taginfo_c.cc:691
void taginfo_info_set_playcount(TagInfo_Info *info, int count)
Set the play count tag of a media track.
Definition: taginfo_c.cc:610
Illustration related to the track.
Definition: taginfo_c.h:233
void taginfo_info_set_lyrics(TagInfo_Info *info, const char *lyrics)
Set a lyrics string to the media file.
Definition: taginfo_c.cc:925
Picture of the artist or performer.
Definition: taginfo_c.h:213
Mod media file.
Definition: taginfo_c.h:167
char * taginfo_info_get_title(const TagInfo_Info *info)
Definition: taginfo_c.cc:232
char * taginfo_info_get_original_artist(const TagInfo_Info *info)
Definition: taginfo_c.cc:186
Ape media file.
Definition: taginfo_c.h:133
void taginfo_info_set_volume_count(TagInfo_Info *info, int count)
Set the volume count tag of a media track.
Definition: taginfo_c.cc:572
Xm media file.
Definition: taginfo_c.h:171
char * taginfo_info_get_copyright(const TagInfo_Info *info)
Definition: taginfo_c.cc:370
Wave media file.
Definition: taginfo_c.h:157
Bitmap file type.
Definition: taginfo_c.h:190
void taginfo_info_set_homepage(TagInfo_Info *info, const char *homepage)
Definition: taginfo_c.cc:337
void taginfo_info_set_beats_per_minute(TagInfo_Info *info, int new_bpm)
Set the BPM of a media track.
Definition: taginfo_c.cc:553
char * taginfo_info_get_genre(const TagInfo_Info *info)
Definition: taginfo_c.cc:393
void taginfo_info_set_genre(TagInfo_Info *info, const char *genre)
Definition: taginfo_c.cc:406
Picture of the recording location or studio.
Definition: taginfo_c.h:223
void taginfo_image_set_description(TagInfo_Image *img, const char *new_description)
Set the file's type of the image.
Definition: taginfo_c.cc:866
char ** taginfo_info_get_track_labels(const TagInfo_Info *info, int *data_length)
Get an array of user defined track labels.
Definition: taginfo_c.cc:641
char * taginfo_image_get_description(const TagInfo_Image *img)
Get the file's type of the image.
Definition: taginfo_c.cc:854
char * taginfo_info_get_comment(const TagInfo_Info *info)
Definition: taginfo_c.cc:278
MP4 media file.
Definition: taginfo_c.h:147
void taginfo_info_set_album(TagInfo_Info *info, const char *album)
Definition: taginfo_c.cc:222
int taginfo_info_get_samplerate(const TagInfo_Info *info)
Definition: taginfo_c.cc:483
int taginfo_info_get_year(const TagInfo_Info *info)
Definition: taginfo_c.cc:454
Ogg media file.
Definition: taginfo_c.h:153
S3m media file.
Definition: taginfo_c.h:173
Wma media file.
Definition: taginfo_c.h:159
BOOL taginfo_info_get_is_compilation(const TagInfo_Info *info)
Get the information if the media file is part of a compilation / VA album.
Definition: taginfo_c.cc:620
char * taginfo_image_get_data(const TagInfo_Image *img, unsigned int *bin_data_length)
Get the binary data of the image.
Definition: taginfo_c.cc:781
void taginfo_image_set_data(TagInfo_Image *img, char *bin_data, unsigned int bin_data_length)
Set the binary data of the image.
Definition: taginfo_c.cc:794
void taginfo_info_free(TagInfo_Info *info)
Definition: taginfo_c.cc:138
void taginfo_info_enable_string_management(BOOL management)
Enable string management for libtaginfo.
Definition: taginfo_c.cc:45
M4P media file.
Definition: taginfo_c.h:143
int taginfo_info_get_track_number(const TagInfo_Info *info)
Definition: taginfo_c.cc:416
void taginfo_info_set_images(TagInfo_Info *info, TagInfo_Image **images, const int image_count)
Set an array of TagInfo_Image to be embedded into the media file.
Definition: taginfo_c.cc:761
TagInfo_Info * taginfo_info_create_with_file_type(const char *filename, TagInfo_MediaFileType format)
Definition: taginfo_c.cc:108