1 <chapter id="chapter-metadata">
2 <title>Metadata</title>
5 &GStreamer; makes a clear distinction between two types of metadata, and
6 has support for both types. The first is stream tags, which describe the
7 content of a stream in a non-technical way. Examples include the author
8 of a song, the title of that very same song or the album it is a part of.
9 The other type of metadata is stream-info, which is a somewhat technical
10 description of the properties of a stream. This can include video size,
11 audio samplerate, codecs used and so on. Tags are handled using the
12 &GStreamer; tagging system. Stream-info can be retrieved from a
13 <classname>GstPad</classname>.
16 <sect1 id="section-streaminfo">
17 <title>Stream information</title>
20 Stream information can most easily be read by reading them from a
21 <classname>GstPad</classname>. This has already been discussed before
22 in <xref linkend="section-caps-metadata"/>. Therefore, we will skip
27 <sect1 id="section-tags-read">
28 <title>Tag reading</title>
31 Tag reading is remarkably simple in &GStreamer; Every element supports
32 the <quote>found-tag</quote> signal, which will be fired each the time
33 the element reads tags from the stream. A <classname>GstBin</classname>
34 will conveniently forward tags found by its childs. Therefore, in most
35 applications, you will only need to connect to the
36 <quote>found-tag</quote> signal on the top-most bin in your pipeline,
37 and you will automatically retrieve all tags from the stream.
40 Note, however, that the <quote>found-tag</quote> might be fired
41 multiple times and by multiple elements in the pipeline. It is the
42 application's responsibility to put all those tags together and
43 display them to the user in a nice, coherent way.
47 <sect1 id="section-tags-write">
48 <title>Tag writing</title>