tizen 2.0 init
[framework/multimedia/gst-plugins-base0.10.git] / gst-libs / gst / tag / tag.h
1 /* GStreamer
2  * Copyright (C) 2003 Benjamin Otte <in7y118@public.uni-hamburg.de>
3  * Copyright (C) 2006-2011 Tim-Philipp Müller <tim centricular net>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21
22 #ifndef __GST_TAG_TAG_H__
23 #define __GST_TAG_TAG_H__
24
25 #include <gst/gst.h>
26
27 G_BEGIN_DECLS
28
29 /* Tag names */
30
31 /**
32  * GST_TAG_MUSICBRAINZ_TRACKID
33  *
34  * MusicBrainz track ID
35  */
36 #define GST_TAG_MUSICBRAINZ_TRACKID     "musicbrainz-trackid"
37 /**
38  * GST_TAG_MUSICBRAINZ_ARTISTID
39  *
40  * MusicBrainz artist ID
41  */
42 #define GST_TAG_MUSICBRAINZ_ARTISTID    "musicbrainz-artistid"
43 /**
44  * GST_TAG_MUSICBRAINZ_ALBUMID
45  *
46  * MusicBrainz album ID
47  */
48 #define GST_TAG_MUSICBRAINZ_ALBUMID     "musicbrainz-albumid"
49 /**
50  * GST_TAG_MUSICBRAINZ_ALBUMARTISTID
51  *
52  * MusicBrainz album artist ID
53  */
54 #define GST_TAG_MUSICBRAINZ_ALBUMARTISTID       "musicbrainz-albumartistid"
55 /**
56  * GST_TAG_MUSICBRAINZ_TRMID
57  *
58  * MusicBrainz track TRM ID
59  */
60 #define GST_TAG_MUSICBRAINZ_TRMID       "musicbrainz-trmid"
61
62 /* FIXME 0.11: remove GST_TAG_MUSICBRAINZ_SORTNAME */
63 #ifndef GST_DISABLE_DEPRECATED
64 /**
65  * GST_TAG_MUSICBRAINZ_SORTNAME
66  *
67  * MusicBrainz artist sort name
68  *
69  * Deprecated.  Use GST_TAG_ARTIST_SORTNAME instead.
70  */
71 #define GST_TAG_MUSICBRAINZ_SORTNAME    GST_TAG_ARTIST_SORTNAME
72 #endif
73
74 /**
75  * GST_TAG_CMML_STREAM
76  *
77  * Annodex CMML stream element tag
78  */
79 #define GST_TAG_CMML_STREAM "cmml-stream"
80 /**
81  * GST_TAG_CMML_HEAD
82  *
83  * Annodex CMML head element tag
84  */
85
86 #define GST_TAG_CMML_HEAD "cmml-head"
87 /**
88  * GST_TAG_CMML_CLIP
89  *
90  * Annodex CMML clip element tag
91  */
92 #define GST_TAG_CMML_CLIP "cmml-clip"
93
94 /* CDDA tags */
95
96 /**
97  * GST_TAG_CDDA_CDDB_DISCID:
98  *
99  * CDDB disc id in its short form (e.g. 'aa063d0f')
100  */
101 #define GST_TAG_CDDA_CDDB_DISCID              "discid"
102
103 /**
104  * GST_TAG_CDDA_CDDB_DISCID_FULL:
105  *
106  * CDDB disc id including all details
107  */
108 #define GST_TAG_CDDA_CDDB_DISCID_FULL         "discid-full"
109
110 /**
111  * GST_TAG_CDDA_MUSICBRAINZ_DISCID:
112  *
113  * Musicbrainz disc id (e.g. 'ahg7JUcfR3vCYBphSDIogOOWrr0-')
114  */
115 #define GST_TAG_CDDA_MUSICBRAINZ_DISCID       "musicbrainz-discid"
116
117 /**
118  * GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL:
119  *
120  * Musicbrainz disc id details
121  */
122 #define GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL  "musicbrainz-discid-full"
123
124 /**
125  * GST_TAG_CAPTURING_SHUTTER_SPEED:
126  *
127  * Shutter speed used when capturing an image, in seconds. (fraction)
128  *
129  * Since: 0.10.31
130  */
131 #define GST_TAG_CAPTURING_SHUTTER_SPEED        "capturing-shutter-speed"
132
133 /**
134  * GST_TAG_CAPTURING_FOCAL_RATIO:
135  *
136  * Focal ratio (f-number) used when capturing an image. (double)
137  *
138  * The value stored is the denominator of the focal ratio (f-number).
139  * For example, if this tag value is 2, the focal ratio is f/2.
140  *
141  * Since: 0.10.31
142  */
143 #define GST_TAG_CAPTURING_FOCAL_RATIO          "capturing-focal-ratio"
144
145 /**
146  * GST_TAG_CAPTURING_FOCAL_LENGTH:
147  *
148  * Focal length used when capturing an image, in mm. (double)
149  *
150  * Since: 0.10.31
151  */
152 #define GST_TAG_CAPTURING_FOCAL_LENGTH         "capturing-focal-length"
153
154 /**
155  * GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO:
156  *
157  * Digital zoom ratio used when capturing an image. (double)
158  *
159  * Since: 0.10.31
160  */
161 #define GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO   "capturing-digital-zoom-ratio"
162
163 /**
164  * GST_TAG_CAPTURING_ISO_SPEED:
165  *
166  * ISO speed used when capturing an image. (integer)
167  *
168  * Since: 0.10.31
169  */
170 #define GST_TAG_CAPTURING_ISO_SPEED           "capturing-iso-speed"
171
172 /**
173  * GST_TAG_CAPTURING_EXPOSURE_PROGRAM:
174  *
175  * Type of exposure control used when capturing an image. (string)
176  *
177  * The allowed values are:
178  *   "undefined"
179  *   "manual"
180  *   "normal" - automatically controlled
181  *   "aperture-priority" - user selects aperture value
182  *   "shutter-priority" - user selects shutter speed
183  *   "creative" - biased towards depth of field
184  *   "action" - biased towards fast shutter speed
185  *   "portrait" - closeup, leaving background out of focus
186  *   "landscape" - landscape photos, background in focus
187  *
188  * Since: 0.10.31
189  */
190 #define GST_TAG_CAPTURING_EXPOSURE_PROGRAM     "capturing-exposure-program"
191
192 /**
193  * GST_TAG_CAPTURING_EXPOSURE_MODE:
194  *
195  * Exposure mode used when capturing an image. (string)
196  *
197  * The allowed values are:
198  *   "auto-exposure"
199  *   "manual-exposure"
200  *   "auto-bracket"
201  *
202  * Since: 0.10.31
203  */
204 #define GST_TAG_CAPTURING_EXPOSURE_MODE       "capturing-exposure-mode"
205
206 /**
207  * GST_TAG_CAPTURING_EXPOSURE_COMPENSATION:
208  *
209  * Exposure compensation using when capturing an image in EV. (double)
210  *
211  * Since: 0.10.33
212  */
213 #define GST_TAG_CAPTURING_EXPOSURE_COMPENSATION "capturing-exposure-compensation"
214
215 /**
216  * GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE:
217  *
218  * Scene mode used when capturing an image. (string)
219  *
220  * The allowed values are:
221  *   "standard"
222  *   "landscape"
223  *   "portrait"
224  *   "night-scene"
225  *
226  * Since: 0.10.31
227  */
228 #define GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE  "capturing-scene-capture-type"
229
230 /**
231  * GST_TAG_CAPTURING_GAIN_ADJUSTMENT:
232  *
233  * Gain adjustment applied to an image. (string)
234  *
235  * The allowed values are:
236  *   "none"
237  *   "low-gain-up"
238  *   "high-gain-up"
239  *   "low-gain-down"
240  *   "high-gain-down"
241  *
242  * Since: 0.10.31
243  */
244 #define GST_TAG_CAPTURING_GAIN_ADJUSTMENT     "capturing-gain-adjustment"
245
246 /**
247  * GST_TAG_CAPTURING_WHITE_BALANCE:
248  *
249  * White balance mode used when capturing an image. (string)
250  *
251  * The allowed values are:
252  *   "auto"
253  *   "manual"
254  *   "daylight"
255  *   "cloudy"
256  *   "tungsten"
257  *   "fluorescent"
258  *   "fluorescent h" (newer daylight-calibrated fluorescents)
259  *   "flash"
260  *
261  * Since: 0.10.31
262  */
263 #define GST_TAG_CAPTURING_WHITE_BALANCE       "capturing-white-balance"
264
265 /**
266  * GST_TAG_CAPTURING_CONTRAST:
267  *
268  * Direction of contrast processing applied when capturing an image. (string)
269  *
270  * The allowed values are:
271  *  "normal"
272  *  "soft"
273  *  "hard"
274  *
275  * Since: 0.10.31
276  */
277 #define GST_TAG_CAPTURING_CONTRAST            "capturing-contrast"
278
279 /**
280  * GST_TAG_CAPTURING_SATURATION:
281  *
282  * Direction of saturation processing applied when capturing an image. (string)
283  *
284  * The allowed values are:
285  *  "normal"
286  *  "low-saturation"
287  *  "high-saturation"
288  *
289  * Since: 0.10.31
290  */
291 #define GST_TAG_CAPTURING_SATURATION          "capturing-saturation"
292
293 /**
294  * GST_TAG_CAPTURING_SHARPNESS:
295  *
296  * Direction of sharpness processing applied when capturing an image. (string)
297  *
298  * The allowed values are:
299  *  "normal"
300  *  "soft"
301  *  "hard"
302  *
303  * Since: 0.10.31
304  */
305 #define GST_TAG_CAPTURING_SHARPNESS          "capturing-sharpness"
306
307 /**
308  * GST_TAG_CAPTURING_FLASH_FIRED:
309  *
310  * If flash was fired during the capture of an image. (boolean)
311  *
312  * Note that if this tag isn't present, it should not be assumed that
313  * the flash did not fire. It should be treated as unknown.
314  *
315  * Since: 0.10.31
316  */
317 #define GST_TAG_CAPTURING_FLASH_FIRED         "capturing-flash-fired"
318
319 /**
320  * GST_TAG_CAPTURING_FLASH_MODE:
321  *
322  * The flash mode selected during the capture of an image. (string)
323  *
324  * The allowed values are:
325  *  "auto"
326  *  "always"
327  *  "never"
328  *
329  * Since: 0.10.31
330  */
331 #define GST_TAG_CAPTURING_FLASH_MODE         "capturing-flash-mode"
332
333 /**
334  * GST_TAG_CAPTURING_METERING_MODE:
335  *
336  * Defines the way a camera determines the exposure. (string)
337  *
338  * The allowed values are:
339  *   "unknown"
340  *   "average"
341  *   "center-weighted-average"
342  *   "spot"
343  *   "multi-spot"
344  *   "pattern"
345  *   "partial"
346  *   "other"
347  *
348  * Since: 0.10.31
349  */
350 #define GST_TAG_CAPTURING_METERING_MODE      "capturing-metering-mode"
351
352 /**
353  * GST_TAG_CAPTURING_SOURCE:
354  *
355  * Indicates the source of capture. The device/medium used to do the
356  * capture. (string)
357  *
358  * Allowed values are:
359  *   "dsc" (= digital still camera)
360  *   "transparent-scanner"
361  *   "reflex-scanner"
362  *   "other"
363  *
364  * Since: 0.10.31
365  */
366 #define GST_TAG_CAPTURING_SOURCE             "capturing-source"
367
368 /**
369  * GST_TAG_IMAGE_HORIZONTAL_PPI:
370  *
371  * Media (image/video) intended horizontal pixel density in ppi. (double)
372  *
373  * Since: 0.10.31
374  */
375 #define GST_TAG_IMAGE_HORIZONTAL_PPI         "image-horizontal-ppi"
376 /**
377  * GST_TAG_IMAGE_VERTICAL_PPI:
378  *
379  * Media (image/video) intended vertical pixel density in ppi. (double)
380  *
381  * Since: 0.10.31
382  */
383 #define GST_TAG_IMAGE_VERTICAL_PPI           "image-vertical-ppi"
384
385
386 /* additional information for image tags */
387
388 /**
389  * GstTagImageType:
390  * @GST_TAG_IMAGE_TYPE_NONE                  : No image type. Can be used to
391  *      tell functions such as gst_tag_image_data_to_image_buffer() that no
392  *      image type should be set. (Since: 0.10.20)
393  * @GST_TAG_IMAGE_TYPE_UNDEFINED             : Undefined/other image type
394  * @GST_TAG_IMAGE_TYPE_FRONT_COVER           : Cover (front)
395  * @GST_TAG_IMAGE_TYPE_BACK_COVER            : Cover (back)
396  * @GST_TAG_IMAGE_TYPE_LEAFLET_PAGE          : Leaflet page
397  * @GST_TAG_IMAGE_TYPE_MEDIUM                : Medium (e.g. label side of CD)
398  * @GST_TAG_IMAGE_TYPE_LEAD_ARTIST           : Lead artist/lead performer/soloist
399  * @GST_TAG_IMAGE_TYPE_ARTIST                : Artist/performer
400  * @GST_TAG_IMAGE_TYPE_CONDUCTOR             : Conductor
401  * @GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA        : Band/orchestra
402  * @GST_TAG_IMAGE_TYPE_COMPOSER              : Composer
403  * @GST_TAG_IMAGE_TYPE_LYRICIST              : Lyricist/text writer
404  * @GST_TAG_IMAGE_TYPE_RECORDING_LOCATION    : Recording location
405  * @GST_TAG_IMAGE_TYPE_DURING_RECORDING      : During recording
406  * @GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE    : During performance
407  * @GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE         : Movie/video screen capture
408  * @GST_TAG_IMAGE_TYPE_FISH                  : A fish as funny as the ID3v2 spec
409  * @GST_TAG_IMAGE_TYPE_ILLUSTRATION          : Illustration
410  * @GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO      : Band/artist logotype
411  * @GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO : Publisher/studio logotype
412  *
413  * Type of image contained in an image tag (specified as field in
414  * the image buffer's caps structure)
415  *
416  * Since: 0.10.9
417  */
418 /* Note: keep in sync with register_tag_image_type_enum() */
419 typedef enum {
420   GST_TAG_IMAGE_TYPE_NONE = -1,
421   GST_TAG_IMAGE_TYPE_UNDEFINED = 0,
422   GST_TAG_IMAGE_TYPE_FRONT_COVER,
423   GST_TAG_IMAGE_TYPE_BACK_COVER,
424   GST_TAG_IMAGE_TYPE_LEAFLET_PAGE,
425   GST_TAG_IMAGE_TYPE_MEDIUM,
426   GST_TAG_IMAGE_TYPE_LEAD_ARTIST,
427   GST_TAG_IMAGE_TYPE_ARTIST,
428   GST_TAG_IMAGE_TYPE_CONDUCTOR,
429   GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA,
430   GST_TAG_IMAGE_TYPE_COMPOSER,
431   GST_TAG_IMAGE_TYPE_LYRICIST,
432   GST_TAG_IMAGE_TYPE_RECORDING_LOCATION,
433   GST_TAG_IMAGE_TYPE_DURING_RECORDING,
434   GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE,
435   GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE,
436   GST_TAG_IMAGE_TYPE_FISH,
437   GST_TAG_IMAGE_TYPE_ILLUSTRATION,
438   GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO,
439   GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO
440 } GstTagImageType;
441
442 #define GST_TYPE_TAG_IMAGE_TYPE  (gst_tag_image_type_get_type ())
443 GType   gst_tag_image_type_get_type (void);
444
445 /**
446  * GST_TAG_ID3V2_HEADER_SIZE:
447  *
448  * ID3V2 header size considered minimum input for some functions such as
449  * gst_tag_list_from_id3v2_tag() and gst_tag_get_id3v2_tag_size() for example.
450  *
451  * Since: 0.10.36
452  */
453 #define GST_TAG_ID3V2_HEADER_SIZE            10
454
455 /* functions for vorbis comment manipulation */
456
457 const gchar *           gst_tag_from_vorbis_tag                 (const gchar *          vorbis_tag);
458 const gchar *           gst_tag_to_vorbis_tag                   (const gchar *          gst_tag);
459 void                    gst_vorbis_tag_add                      (GstTagList *           list, 
460                                                                  const gchar *          tag, 
461                                                                  const gchar *          value);
462
463 GList *                 gst_tag_to_vorbis_comments              (const GstTagList *     list, 
464                                                                  const gchar *          tag);
465
466 /* functions to convert GstBuffers with vorbiscomment contents to GstTagLists and back */
467 GstTagList *            gst_tag_list_from_vorbiscomment_buffer  (const GstBuffer *      buffer,
468                                                                  const guint8 *         id_data,
469                                                                  const guint            id_data_length,
470                                                                  gchar **               vendor_string);
471 GstBuffer *             gst_tag_list_to_vorbiscomment_buffer    (const GstTagList *     list,
472                                                                  const guint8 *         id_data,
473                                                                  const guint            id_data_length,
474                                                                  const gchar *          vendor_string);
475
476 /* functions for ID3 tag manipulation */
477
478 /* FIXME 0.11: inconsistent API naming: gst_tag_list_new_from_id3v1(), gst_tag_list_from_*_buffer(),
479  * gst_tag_list_from_id3v2_tag(). Also, note gst.tag.list_xyz() namespace vs. gst.tag_list_xyz(),
480  * which is a bit confusing and possibly doesn't map too well */
481
482 guint                   gst_tag_id3_genre_count                 (void);
483 const gchar *           gst_tag_id3_genre_get                   (const guint            id);
484 GstTagList *            gst_tag_list_new_from_id3v1             (const guint8 *         data);
485
486 const gchar *           gst_tag_from_id3_tag                    (const gchar *          id3_tag);
487 const gchar *           gst_tag_from_id3_user_tag               (const gchar *          type,
488                                                                  const gchar *          id3_user_tag);
489 const gchar *           gst_tag_to_id3_tag                      (const gchar *          gst_tag);
490
491 gboolean                gst_tag_list_add_id3_image (GstTagList   * tag_list,
492                                                     const guint8 * image_data,
493                                                     guint          image_data_len,
494                                                     guint          id3_picture_type);
495
496 GstTagList *            gst_tag_list_from_id3v2_tag (GstBuffer * buffer);
497
498 guint                   gst_tag_get_id3v2_tag_size  (GstBuffer * buffer);
499
500 /* functions to  convert GstBuffers with xmp packets contents to GstTagLists and back */
501 GstTagList *            gst_tag_list_from_xmp_buffer  (const GstBuffer *  buffer);
502 GstBuffer *             gst_tag_list_to_xmp_buffer    (const GstTagList * list,
503                                                        gboolean           read_only);
504 GstBuffer *             gst_tag_list_to_xmp_buffer_full (const GstTagList * list,
505                                                         gboolean read_only, const gchar ** schemas);
506 const gchar**           gst_tag_xmp_list_schemas      (void);
507
508 /* functions related to exif */
509 GstBuffer *             gst_tag_list_to_exif_buffer (const GstTagList * taglist,
510                                                      gint byte_order,
511                                                      guint32 base_offset);
512
513 GstBuffer *             gst_tag_list_to_exif_buffer_with_tiff_header (const GstTagList * taglist);
514
515 GstTagList *            gst_tag_list_from_exif_buffer (const GstBuffer * buffer,
516                                                        gint byte_order,
517                                                        guint32 base_offset);
518
519 GstTagList *            gst_tag_list_from_exif_buffer_with_tiff_header (
520                                                       const GstBuffer * buffer);
521
522 /* other tag-related functions */
523
524 gboolean                gst_tag_parse_extended_comment (const gchar  * ext_comment,
525                                                         gchar       ** key,
526                                                         gchar       ** lang,
527                                                         gchar       ** value,
528                                                         gboolean       fail_if_no_key);
529
530 gchar                 * gst_tag_freeform_string_to_utf8 (const gchar  * data,
531                                                          gint           size,
532                                                          const gchar ** env_vars);
533
534 GstBuffer             * gst_tag_image_data_to_image_buffer (const guint8   * image_data,
535                                                             guint            image_data_len,
536                                                             GstTagImageType  image_type);
537
538 /* FIXME 0.11: get rid of this awkward register/init function, see tags.c */
539 void                    gst_tag_register_musicbrainz_tags (void);
540
541
542 /* language tag related functions */
543
544 gchar **       gst_tag_get_language_codes (void);
545
546 const gchar *  gst_tag_get_language_name (const gchar * language_code);
547
548 const gchar *  gst_tag_get_language_code_iso_639_1 (const gchar * lang_code);
549
550 const gchar *  gst_tag_get_language_code_iso_639_2B (const gchar * lang_code);
551
552 const gchar *  gst_tag_get_language_code_iso_639_2T (const gchar * lang_code);
553
554 /**
555  * gst_tag_get_language_code:
556  * @lang_code: ISO-639 language code (e.g. "deu" or "ger" or "de")
557  *
558  * Convenience macro wrapping gst_tag_get_language_code_iso_639_1().
559  *
560  * Since: 0.10.26
561  */
562 #define gst_tag_get_language_code(lang_code) \
563     gst_tag_get_language_code_iso_639_1(lang_code)
564
565
566 /* functions to deal with (mostly) Creative Commons licenses */
567
568 /**
569  * GstTagLicenseFlags:
570  * @GST_TAG_LICENSE_PERMITS_REPRODUCTION: making multiple copies
571  *     is allowed
572  * @GST_TAG_LICENSE_PERMITS_DISTRIBUTION: distribution, public display
573  *     and public performance are allowed
574  * @GST_TAG_LICENSE_PERMITS_DERIVATIVE_WORKS: distribution of derivative
575  *     works is allowed
576  * @GST_TAG_LICENSE_PERMITS_SHARING: commercial derivatives are allowed,
577  *     but only non-commercial distribution is allowed
578  * @GST_TAG_LICENSE_REQUIRES_NOTICE: copyright and license notices
579  *     must be kept intact
580  * @GST_TAG_LICENSE_REQUIRES_ATTRIBUTION: credit must be given to
581  *     copyright holder and/or author
582  * @GST_TAG_LICENSE_REQUIRES_SHARE_ALIKE: derivative works must be
583  *     licensed under the same terms or compatible terms as the original work
584  * @GST_TAG_LICENSE_REQUIRES_SOURCE_CODE: source code (the preferred
585  *     form for making modifications) must be provided when exercising some
586  *     rights granted by the license
587  * @GST_TAG_LICENSE_REQUIRES_COPYLEFT: derivative and combined works
588  *     must be licensed under specified terms, similar to those of the original
589  *     work
590  * @GST_TAG_LICENSE_REQUIRES_LESSER_COPYLEFT: derivative works must be
591  *     licensed under specified terms, with at least the same conditions as
592  *     the original work; combinations with the work may be licensed under
593  *     different terms
594  * @GST_TAG_LICENSE_PROHIBITS_COMMERCIAL_USE: exercising rights for
595  *     commercial purposes is prohibited
596  * @GST_TAG_LICENSE_PROHIBITS_HIGH_INCOME_NATION_USE: use in a
597  *     non-developing country is prohibited
598  * @GST_TAG_LICENSE_CREATIVE_COMMONS_LICENSE: this license was created
599  *     by the Creative Commons project
600  * @GST_TAG_LICENSE_FREE_SOFTWARE_FOUNDATION_LICENSE: this license was
601  *     created by the Free Software Foundation (FSF)
602  *
603  * See http://creativecommons.org/ns for more information.
604  *
605  * Since: 0.10.36
606  */
607 typedef enum {
608   GST_TAG_LICENSE_PERMITS_REPRODUCTION             = (1 << 0),
609   GST_TAG_LICENSE_PERMITS_DISTRIBUTION             = (1 << 1),
610   GST_TAG_LICENSE_PERMITS_DERIVATIVE_WORKS         = (1 << 2),
611   GST_TAG_LICENSE_PERMITS_SHARING                  = (1 << 3),
612
613   GST_TAG_LICENSE_REQUIRES_NOTICE                  = (1 << 8),
614   GST_TAG_LICENSE_REQUIRES_ATTRIBUTION             = (1 << 9),
615   GST_TAG_LICENSE_REQUIRES_SHARE_ALIKE             = (1 << 10),
616   GST_TAG_LICENSE_REQUIRES_SOURCE_CODE             = (1 << 11),
617   GST_TAG_LICENSE_REQUIRES_COPYLEFT                = (1 << 12),
618   GST_TAG_LICENSE_REQUIRES_LESSER_COPYLEFT         = (1 << 13),
619
620   GST_TAG_LICENSE_PROHIBITS_COMMERCIAL_USE         = (1 << 16),
621   GST_TAG_LICENSE_PROHIBITS_HIGH_INCOME_NATION_USE = (1 << 17),
622
623   GST_TAG_LICENSE_CREATIVE_COMMONS_LICENSE         = (1 << 24),
624   GST_TAG_LICENSE_FREE_SOFTWARE_FOUNDATION_LICENSE = (1 << 25)
625 } GstTagLicenseFlags;
626
627 gchar **            gst_tag_get_licenses (void);
628
629 GstTagLicenseFlags  gst_tag_get_license_flags (const gchar * license_ref);
630
631 const gchar *       gst_tag_get_license_nick  (const gchar * license_ref);
632
633 const gchar *       gst_tag_get_license_title (const gchar * license_ref);
634
635 const gchar *       gst_tag_get_license_version (const gchar * license_ref);
636
637 const gchar *       gst_tag_get_license_description  (const gchar * license_ref);
638
639 const gchar *       gst_tag_get_license_jurisdiction (const gchar * license_ref);
640
641 GType               gst_tag_license_flags_get_type (void);
642
643 G_END_DECLS
644
645 #endif /* __GST_TAG_TAG_H__ */