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