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