mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
adding GstTagFlag
Original commit message from CVS: adding GstTagFlag
This commit is contained in:
parent
d3cc6cc4b0
commit
38d4e551fa
6 changed files with 98 additions and 64 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2004-01-22 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* gst/gsttag.c: (_gst_tag_initialize), (gst_tag_register):
|
||||||
|
* gst/gsttag.h:
|
||||||
|
add GstTagFlag
|
||||||
|
|
||||||
2004-01-20 Thomas Vander Stichele <thomas at apestaart dot org>
|
2004-01-20 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* docs/gst/gstreamer-sections.txt:
|
* docs/gst/gstreamer-sections.txt:
|
||||||
|
|
|
@ -987,6 +987,8 @@ Is triggered whenever an error occured.
|
||||||
@gstelement: the object which received the signal.
|
@gstelement: the object which received the signal.
|
||||||
@arg1: the error message
|
@arg1: the error message
|
||||||
@arg2:
|
@arg2:
|
||||||
|
@:
|
||||||
|
@:
|
||||||
@:
|
@:
|
||||||
|
|
||||||
<!-- ##### SIGNAL GstElement::found-tag ##### -->
|
<!-- ##### SIGNAL GstElement::found-tag ##### -->
|
||||||
|
|
67
gst/gsttag.c
67
gst/gsttag.c
|
@ -41,6 +41,7 @@ typedef struct {
|
||||||
gchar * blurb; /* translated description of type */
|
gchar * blurb; /* translated description of type */
|
||||||
|
|
||||||
GstTagMergeFunc merge_func; /* functions to merge the values */
|
GstTagMergeFunc merge_func; /* functions to merge the values */
|
||||||
|
GstTagFlag flag; /* type of tag */
|
||||||
} GstTagInfo;
|
} GstTagInfo;
|
||||||
|
|
||||||
#define TAGLIST "taglist"
|
#define TAGLIST "taglist"
|
||||||
|
@ -56,147 +57,147 @@ _gst_tag_initialize (void)
|
||||||
gst_tag_list_quark = g_quark_from_static_string (TAGLIST);
|
gst_tag_list_quark = g_quark_from_static_string (TAGLIST);
|
||||||
__tag_mutex = g_mutex_new ();
|
__tag_mutex = g_mutex_new ();
|
||||||
__tags = g_hash_table_new (g_direct_hash, g_direct_equal);
|
__tags = g_hash_table_new (g_direct_hash, g_direct_equal);
|
||||||
gst_tag_register (GST_TAG_TITLE,
|
gst_tag_register (GST_TAG_TITLE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("title"),
|
_("title"),
|
||||||
_("commonly used title"),
|
_("commonly used title"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_ARTIST,
|
gst_tag_register (GST_TAG_ARTIST, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("artist"),
|
_("artist"),
|
||||||
_("person(s) responsible for the recording"),
|
_("person(s) responsible for the recording"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_ALBUM,
|
gst_tag_register (GST_TAG_ALBUM, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("album"),
|
_("album"),
|
||||||
_("album containing this data"),
|
_("album containing this data"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_DATE,
|
gst_tag_register (GST_TAG_DATE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_UINT, /* FIXME: own data type for dates? */
|
G_TYPE_UINT, /* FIXME: own data type for dates? */
|
||||||
_("date"),
|
_("date"),
|
||||||
_("date the data was created (in Julian calendar days)"),
|
_("date the data was created (in Julian calendar days)"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_GENRE,
|
gst_tag_register (GST_TAG_GENRE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("genre"),
|
_("genre"),
|
||||||
_("genre this data belongs to"),
|
_("genre this data belongs to"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_COMMENT,
|
gst_tag_register (GST_TAG_COMMENT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("comment"),
|
_("comment"),
|
||||||
_("free text commenting the data"),
|
_("free text commenting the data"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_TRACK_NUMBER,
|
gst_tag_register (GST_TAG_TRACK_NUMBER, GST_TAG_FLAG_META,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("track number"),
|
_("track number"),
|
||||||
_("track number inside a collection"),
|
_("track number inside a collection"),
|
||||||
gst_tag_merge_use_first);
|
gst_tag_merge_use_first);
|
||||||
gst_tag_register (GST_TAG_TRACK_COUNT,
|
gst_tag_register (GST_TAG_TRACK_COUNT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("track count"),
|
_("track count"),
|
||||||
_("count of tracks inside collection this track belongs to"),
|
_("count of tracks inside collection this track belongs to"),
|
||||||
gst_tag_merge_use_first);
|
gst_tag_merge_use_first);
|
||||||
gst_tag_register (GST_TAG_LOCATION,
|
gst_tag_register (GST_TAG_LOCATION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("location"),
|
_("location"),
|
||||||
_("original location of file as a URI"),
|
_("original location of file as a URI"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_DESCRIPTION,
|
gst_tag_register (GST_TAG_DESCRIPTION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("description"),
|
_("description"),
|
||||||
_("short text describing the content of the data"),
|
_("short text describing the content of the data"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_VERSION,
|
gst_tag_register (GST_TAG_VERSION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("version"),
|
_("version"),
|
||||||
_("version of this data"),
|
_("version of this data"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ISRC,
|
gst_tag_register (GST_TAG_ISRC, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("ISRC"),
|
_("ISRC"),
|
||||||
_("International Standard Recording Code - see http://www.ifpi.org/isrc/"),
|
_("International Standard Recording Code - see http://www.ifpi.org/isrc/"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ORGANIZATION,
|
gst_tag_register (GST_TAG_ORGANIZATION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("organization"),
|
_("organization"),
|
||||||
_("organization"), /* FIXME */
|
_("organization"), /* FIXME */
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_COPYRIGHT,
|
gst_tag_register (GST_TAG_COPYRIGHT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("copyright"),
|
_("copyright"),
|
||||||
_("copyright notice of the data"),
|
_("copyright notice of the data"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_CONTACT,
|
gst_tag_register (GST_TAG_CONTACT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("contact"),
|
_("contact"),
|
||||||
_("contact information"),
|
_("contact information"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_LICENSE,
|
gst_tag_register (GST_TAG_LICENSE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("license"),
|
_("license"),
|
||||||
_("license of data"),
|
_("license of data"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_PERFORMER,
|
gst_tag_register (GST_TAG_PERFORMER, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("performer"),
|
_("performer"),
|
||||||
_("person(s) performing"),
|
_("person(s) performing"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_DURATION,
|
gst_tag_register (GST_TAG_DURATION,
|
||||||
G_TYPE_UINT64,
|
G_TYPE_UINT64, GST_TAG_FLAG_DECODED,
|
||||||
_("duration"),
|
_("duration"),
|
||||||
_("length in GStreamer time units (nanoseconds)"),
|
_("length in GStreamer time units (nanoseconds)"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_CODEC,
|
gst_tag_register (GST_TAG_CODEC, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("codec"),
|
_("codec"),
|
||||||
_("codec the data is stored in"),
|
_("codec the data is stored in"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_BITRATE,
|
gst_tag_register (GST_TAG_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("bitrate"),
|
_("bitrate"),
|
||||||
_("exact or average bitrate in bits/s"),
|
_("exact or average bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_NOMINAL_BITRATE,
|
gst_tag_register (GST_TAG_NOMINAL_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("nominal bitrate"),
|
_("nominal bitrate"),
|
||||||
_("nominal bitrate in bits/s"),
|
_("nominal bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_MINIMUM_BITRATE,
|
gst_tag_register (GST_TAG_MINIMUM_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("minimum bitrate"),
|
_("minimum bitrate"),
|
||||||
_("minimum bitrate in bits/s"),
|
_("minimum bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_MAXIMUM_BITRATE,
|
gst_tag_register (GST_TAG_MAXIMUM_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("maximum bitrate"),
|
_("maximum bitrate"),
|
||||||
_("maximum bitrate in bits/s"),
|
_("maximum bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ENCODER_VERSION,
|
gst_tag_register (GST_TAG_ENCODER_VERSION, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("encoder version"),
|
_("encoder version"),
|
||||||
_("version of the encoder used to encode this stream"),
|
_("version of the encoder used to encode this stream"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_SERIAL,
|
gst_tag_register (GST_TAG_SERIAL, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("serial"),
|
_("serial"),
|
||||||
_("serial number of track"),
|
_("serial number of track"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_TRACK_GAIN,
|
gst_tag_register (GST_TAG_TRACK_GAIN, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain track gain"),
|
_("replaygain track gain"),
|
||||||
_("track gain in db"),
|
_("track gain in db"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_TRACK_PEAK,
|
gst_tag_register (GST_TAG_TRACK_PEAK, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain track peak"),
|
_("replaygain track peak"),
|
||||||
_("peak of the track"),
|
_("peak of the track"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ALBUM_GAIN,
|
gst_tag_register (GST_TAG_ALBUM_GAIN, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain album gain"),
|
_("replaygain album gain"),
|
||||||
_("album gain in db"),
|
_("album gain in db"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ALBUM_PEAK,
|
gst_tag_register (GST_TAG_ALBUM_PEAK, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain album peak"),
|
_("replaygain album peak"),
|
||||||
_("peak of the album"),
|
_("peak of the album"),
|
||||||
|
@ -259,6 +260,7 @@ gst_tag_lookup (GQuark entry)
|
||||||
/**
|
/**
|
||||||
* gst_tag_register:
|
* gst_tag_register:
|
||||||
* @name: the name or identifier string
|
* @name: the name or identifier string
|
||||||
|
* @flag: a flag describing the type of tag info
|
||||||
* @type: the type this data is in
|
* @type: the type this data is in
|
||||||
* @nick: human-readable name
|
* @nick: human-readable name
|
||||||
* @blurb: a human-readable description about this tag
|
* @blurb: a human-readable description about this tag
|
||||||
|
@ -267,13 +269,13 @@ gst_tag_lookup (GQuark entry)
|
||||||
* Registers a new tag type for the use with GStreamer's type system. If a type
|
* Registers a new tag type for the use with GStreamer's type system. If a type
|
||||||
* with that name is already registered, that one is used.
|
* with that name is already registered, that one is used.
|
||||||
* The old registration may have used a different type however. So don't rely
|
* The old registration may have used a different type however. So don't rely
|
||||||
* on youre supplied values.
|
* on your supplied values.
|
||||||
* If you know the type is already registered, use gst_tag_lookup instead.
|
* If you know the type is already registered, use gst_tag_lookup instead.
|
||||||
* This function takes ownership of all supplied variables.
|
* This function takes ownership of all supplied variables.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gst_tag_register (gchar *name, GType type, gchar *nick, gchar *blurb,
|
gst_tag_register (gchar *name, GstTagFlag flag, GType type,
|
||||||
GstTagMergeFunc func)
|
gchar *nick, gchar *blurb, GstTagMergeFunc func)
|
||||||
{
|
{
|
||||||
GQuark key;
|
GQuark key;
|
||||||
GstTagInfo *info;
|
GstTagInfo *info;
|
||||||
|
@ -288,6 +290,7 @@ gst_tag_register (gchar *name, GType type, gchar *nick, gchar *blurb,
|
||||||
g_return_if_fail (info == NULL);
|
g_return_if_fail (info == NULL);
|
||||||
|
|
||||||
info = g_new (GstTagInfo, 1);
|
info = g_new (GstTagInfo, 1);
|
||||||
|
info->flag = flag;
|
||||||
info->type = type;
|
info->type = type;
|
||||||
info->nick = nick;
|
info->nick = nick;
|
||||||
info->blurb = blurb;
|
info->blurb = blurb;
|
||||||
|
|
10
gst/gsttag.h
10
gst/gsttag.h
|
@ -41,6 +41,15 @@ typedef enum {
|
||||||
} GstTagMergeMode;
|
} GstTagMergeMode;
|
||||||
#define GST_TAG_MODE_IS_VALID(mode) (((mode) > GST_TAG_MERGE_UNDEFINED) && ((mode) < GST_TAG_MERGE_COUNT))
|
#define GST_TAG_MODE_IS_VALID(mode) (((mode) > GST_TAG_MERGE_UNDEFINED) && ((mode) < GST_TAG_MERGE_COUNT))
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GST_TAG_FLAG_UNDEFINED,
|
||||||
|
GST_TAG_FLAG_META,
|
||||||
|
GST_TAG_FLAG_ENCODED,
|
||||||
|
GST_TAG_FLAG_DECODED,
|
||||||
|
GST_TAG_FLAG_COUNT
|
||||||
|
} GstTagFlag;
|
||||||
|
#define GST_TAG_FLAG_IS_VALID(flag) (((flag) > GST_TAG_FLAG_UNDEFINED) && ((flag) < GST_TAG_FLAG_COUNT))
|
||||||
|
|
||||||
typedef GstStructure GstTagList;
|
typedef GstStructure GstTagList;
|
||||||
#define GST_TAG_LIST(x) ((GstTagList *) (x))
|
#define GST_TAG_LIST(x) ((GstTagList *) (x))
|
||||||
#define GST_IS_TAG_LIST(x) (gst_is_tag_list (GST_TAG_LIST (x)))
|
#define GST_IS_TAG_LIST(x) (gst_is_tag_list (GST_TAG_LIST (x)))
|
||||||
|
@ -52,6 +61,7 @@ typedef void (* GstTagMergeFunc) (GValue *dest, const GValue *src);
|
||||||
void _gst_tag_initialize (void);
|
void _gst_tag_initialize (void);
|
||||||
|
|
||||||
void gst_tag_register (gchar * name,
|
void gst_tag_register (gchar * name,
|
||||||
|
GstTagFlag flag,
|
||||||
GType type,
|
GType type,
|
||||||
gchar * nick,
|
gchar * nick,
|
||||||
gchar * blurb,
|
gchar * blurb,
|
||||||
|
|
|
@ -41,6 +41,7 @@ typedef struct {
|
||||||
gchar * blurb; /* translated description of type */
|
gchar * blurb; /* translated description of type */
|
||||||
|
|
||||||
GstTagMergeFunc merge_func; /* functions to merge the values */
|
GstTagMergeFunc merge_func; /* functions to merge the values */
|
||||||
|
GstTagFlag flag; /* type of tag */
|
||||||
} GstTagInfo;
|
} GstTagInfo;
|
||||||
|
|
||||||
#define TAGLIST "taglist"
|
#define TAGLIST "taglist"
|
||||||
|
@ -56,147 +57,147 @@ _gst_tag_initialize (void)
|
||||||
gst_tag_list_quark = g_quark_from_static_string (TAGLIST);
|
gst_tag_list_quark = g_quark_from_static_string (TAGLIST);
|
||||||
__tag_mutex = g_mutex_new ();
|
__tag_mutex = g_mutex_new ();
|
||||||
__tags = g_hash_table_new (g_direct_hash, g_direct_equal);
|
__tags = g_hash_table_new (g_direct_hash, g_direct_equal);
|
||||||
gst_tag_register (GST_TAG_TITLE,
|
gst_tag_register (GST_TAG_TITLE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("title"),
|
_("title"),
|
||||||
_("commonly used title"),
|
_("commonly used title"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_ARTIST,
|
gst_tag_register (GST_TAG_ARTIST, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("artist"),
|
_("artist"),
|
||||||
_("person(s) responsible for the recording"),
|
_("person(s) responsible for the recording"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_ALBUM,
|
gst_tag_register (GST_TAG_ALBUM, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("album"),
|
_("album"),
|
||||||
_("album containing this data"),
|
_("album containing this data"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_DATE,
|
gst_tag_register (GST_TAG_DATE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_UINT, /* FIXME: own data type for dates? */
|
G_TYPE_UINT, /* FIXME: own data type for dates? */
|
||||||
_("date"),
|
_("date"),
|
||||||
_("date the data was created (in Julian calendar days)"),
|
_("date the data was created (in Julian calendar days)"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_GENRE,
|
gst_tag_register (GST_TAG_GENRE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("genre"),
|
_("genre"),
|
||||||
_("genre this data belongs to"),
|
_("genre this data belongs to"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_COMMENT,
|
gst_tag_register (GST_TAG_COMMENT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("comment"),
|
_("comment"),
|
||||||
_("free text commenting the data"),
|
_("free text commenting the data"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_TRACK_NUMBER,
|
gst_tag_register (GST_TAG_TRACK_NUMBER, GST_TAG_FLAG_META,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("track number"),
|
_("track number"),
|
||||||
_("track number inside a collection"),
|
_("track number inside a collection"),
|
||||||
gst_tag_merge_use_first);
|
gst_tag_merge_use_first);
|
||||||
gst_tag_register (GST_TAG_TRACK_COUNT,
|
gst_tag_register (GST_TAG_TRACK_COUNT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("track count"),
|
_("track count"),
|
||||||
_("count of tracks inside collection this track belongs to"),
|
_("count of tracks inside collection this track belongs to"),
|
||||||
gst_tag_merge_use_first);
|
gst_tag_merge_use_first);
|
||||||
gst_tag_register (GST_TAG_LOCATION,
|
gst_tag_register (GST_TAG_LOCATION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("location"),
|
_("location"),
|
||||||
_("original location of file as a URI"),
|
_("original location of file as a URI"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_DESCRIPTION,
|
gst_tag_register (GST_TAG_DESCRIPTION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("description"),
|
_("description"),
|
||||||
_("short text describing the content of the data"),
|
_("short text describing the content of the data"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_VERSION,
|
gst_tag_register (GST_TAG_VERSION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("version"),
|
_("version"),
|
||||||
_("version of this data"),
|
_("version of this data"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ISRC,
|
gst_tag_register (GST_TAG_ISRC, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("ISRC"),
|
_("ISRC"),
|
||||||
_("International Standard Recording Code - see http://www.ifpi.org/isrc/"),
|
_("International Standard Recording Code - see http://www.ifpi.org/isrc/"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ORGANIZATION,
|
gst_tag_register (GST_TAG_ORGANIZATION, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("organization"),
|
_("organization"),
|
||||||
_("organization"), /* FIXME */
|
_("organization"), /* FIXME */
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_COPYRIGHT,
|
gst_tag_register (GST_TAG_COPYRIGHT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("copyright"),
|
_("copyright"),
|
||||||
_("copyright notice of the data"),
|
_("copyright notice of the data"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_CONTACT,
|
gst_tag_register (GST_TAG_CONTACT, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("contact"),
|
_("contact"),
|
||||||
_("contact information"),
|
_("contact information"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_LICENSE,
|
gst_tag_register (GST_TAG_LICENSE, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("license"),
|
_("license"),
|
||||||
_("license of data"),
|
_("license of data"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_PERFORMER,
|
gst_tag_register (GST_TAG_PERFORMER, GST_TAG_FLAG_META,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("performer"),
|
_("performer"),
|
||||||
_("person(s) performing"),
|
_("person(s) performing"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_DURATION,
|
gst_tag_register (GST_TAG_DURATION,
|
||||||
G_TYPE_UINT64,
|
G_TYPE_UINT64, GST_TAG_FLAG_DECODED,
|
||||||
_("duration"),
|
_("duration"),
|
||||||
_("length in GStreamer time units (nanoseconds)"),
|
_("length in GStreamer time units (nanoseconds)"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_CODEC,
|
gst_tag_register (GST_TAG_CODEC, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
_("codec"),
|
_("codec"),
|
||||||
_("codec the data is stored in"),
|
_("codec the data is stored in"),
|
||||||
gst_tag_merge_strings_with_comma);
|
gst_tag_merge_strings_with_comma);
|
||||||
gst_tag_register (GST_TAG_BITRATE,
|
gst_tag_register (GST_TAG_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("bitrate"),
|
_("bitrate"),
|
||||||
_("exact or average bitrate in bits/s"),
|
_("exact or average bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_NOMINAL_BITRATE,
|
gst_tag_register (GST_TAG_NOMINAL_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("nominal bitrate"),
|
_("nominal bitrate"),
|
||||||
_("nominal bitrate in bits/s"),
|
_("nominal bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_MINIMUM_BITRATE,
|
gst_tag_register (GST_TAG_MINIMUM_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("minimum bitrate"),
|
_("minimum bitrate"),
|
||||||
_("minimum bitrate in bits/s"),
|
_("minimum bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_MAXIMUM_BITRATE,
|
gst_tag_register (GST_TAG_MAXIMUM_BITRATE, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("maximum bitrate"),
|
_("maximum bitrate"),
|
||||||
_("maximum bitrate in bits/s"),
|
_("maximum bitrate in bits/s"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ENCODER_VERSION,
|
gst_tag_register (GST_TAG_ENCODER_VERSION, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("encoder version"),
|
_("encoder version"),
|
||||||
_("version of the encoder used to encode this stream"),
|
_("version of the encoder used to encode this stream"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_SERIAL,
|
gst_tag_register (GST_TAG_SERIAL, GST_TAG_FLAG_ENCODED,
|
||||||
G_TYPE_UINT,
|
G_TYPE_UINT,
|
||||||
_("serial"),
|
_("serial"),
|
||||||
_("serial number of track"),
|
_("serial number of track"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_TRACK_GAIN,
|
gst_tag_register (GST_TAG_TRACK_GAIN, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain track gain"),
|
_("replaygain track gain"),
|
||||||
_("track gain in db"),
|
_("track gain in db"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_TRACK_PEAK,
|
gst_tag_register (GST_TAG_TRACK_PEAK, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain track peak"),
|
_("replaygain track peak"),
|
||||||
_("peak of the track"),
|
_("peak of the track"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ALBUM_GAIN,
|
gst_tag_register (GST_TAG_ALBUM_GAIN, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain album gain"),
|
_("replaygain album gain"),
|
||||||
_("album gain in db"),
|
_("album gain in db"),
|
||||||
NULL);
|
NULL);
|
||||||
gst_tag_register (GST_TAG_ALBUM_PEAK,
|
gst_tag_register (GST_TAG_ALBUM_PEAK, GST_TAG_FLAG_META,
|
||||||
G_TYPE_DOUBLE,
|
G_TYPE_DOUBLE,
|
||||||
_("replaygain album peak"),
|
_("replaygain album peak"),
|
||||||
_("peak of the album"),
|
_("peak of the album"),
|
||||||
|
@ -259,6 +260,7 @@ gst_tag_lookup (GQuark entry)
|
||||||
/**
|
/**
|
||||||
* gst_tag_register:
|
* gst_tag_register:
|
||||||
* @name: the name or identifier string
|
* @name: the name or identifier string
|
||||||
|
* @flag: a flag describing the type of tag info
|
||||||
* @type: the type this data is in
|
* @type: the type this data is in
|
||||||
* @nick: human-readable name
|
* @nick: human-readable name
|
||||||
* @blurb: a human-readable description about this tag
|
* @blurb: a human-readable description about this tag
|
||||||
|
@ -267,13 +269,13 @@ gst_tag_lookup (GQuark entry)
|
||||||
* Registers a new tag type for the use with GStreamer's type system. If a type
|
* Registers a new tag type for the use with GStreamer's type system. If a type
|
||||||
* with that name is already registered, that one is used.
|
* with that name is already registered, that one is used.
|
||||||
* The old registration may have used a different type however. So don't rely
|
* The old registration may have used a different type however. So don't rely
|
||||||
* on youre supplied values.
|
* on your supplied values.
|
||||||
* If you know the type is already registered, use gst_tag_lookup instead.
|
* If you know the type is already registered, use gst_tag_lookup instead.
|
||||||
* This function takes ownership of all supplied variables.
|
* This function takes ownership of all supplied variables.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gst_tag_register (gchar *name, GType type, gchar *nick, gchar *blurb,
|
gst_tag_register (gchar *name, GstTagFlag flag, GType type,
|
||||||
GstTagMergeFunc func)
|
gchar *nick, gchar *blurb, GstTagMergeFunc func)
|
||||||
{
|
{
|
||||||
GQuark key;
|
GQuark key;
|
||||||
GstTagInfo *info;
|
GstTagInfo *info;
|
||||||
|
@ -288,6 +290,7 @@ gst_tag_register (gchar *name, GType type, gchar *nick, gchar *blurb,
|
||||||
g_return_if_fail (info == NULL);
|
g_return_if_fail (info == NULL);
|
||||||
|
|
||||||
info = g_new (GstTagInfo, 1);
|
info = g_new (GstTagInfo, 1);
|
||||||
|
info->flag = flag;
|
||||||
info->type = type;
|
info->type = type;
|
||||||
info->nick = nick;
|
info->nick = nick;
|
||||||
info->blurb = blurb;
|
info->blurb = blurb;
|
||||||
|
|
|
@ -41,6 +41,15 @@ typedef enum {
|
||||||
} GstTagMergeMode;
|
} GstTagMergeMode;
|
||||||
#define GST_TAG_MODE_IS_VALID(mode) (((mode) > GST_TAG_MERGE_UNDEFINED) && ((mode) < GST_TAG_MERGE_COUNT))
|
#define GST_TAG_MODE_IS_VALID(mode) (((mode) > GST_TAG_MERGE_UNDEFINED) && ((mode) < GST_TAG_MERGE_COUNT))
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GST_TAG_FLAG_UNDEFINED,
|
||||||
|
GST_TAG_FLAG_META,
|
||||||
|
GST_TAG_FLAG_ENCODED,
|
||||||
|
GST_TAG_FLAG_DECODED,
|
||||||
|
GST_TAG_FLAG_COUNT
|
||||||
|
} GstTagFlag;
|
||||||
|
#define GST_TAG_FLAG_IS_VALID(flag) (((flag) > GST_TAG_FLAG_UNDEFINED) && ((flag) < GST_TAG_FLAG_COUNT))
|
||||||
|
|
||||||
typedef GstStructure GstTagList;
|
typedef GstStructure GstTagList;
|
||||||
#define GST_TAG_LIST(x) ((GstTagList *) (x))
|
#define GST_TAG_LIST(x) ((GstTagList *) (x))
|
||||||
#define GST_IS_TAG_LIST(x) (gst_is_tag_list (GST_TAG_LIST (x)))
|
#define GST_IS_TAG_LIST(x) (gst_is_tag_list (GST_TAG_LIST (x)))
|
||||||
|
@ -52,6 +61,7 @@ typedef void (* GstTagMergeFunc) (GValue *dest, const GValue *src);
|
||||||
void _gst_tag_initialize (void);
|
void _gst_tag_initialize (void);
|
||||||
|
|
||||||
void gst_tag_register (gchar * name,
|
void gst_tag_register (gchar * name,
|
||||||
|
GstTagFlag flag,
|
||||||
GType type,
|
GType type,
|
||||||
gchar * nick,
|
gchar * nick,
|
||||||
gchar * blurb,
|
gchar * blurb,
|
||||||
|
|
Loading…
Reference in a new issue