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