| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>gsttagdemux: GStreamer Base Plugins 1.0 Library Reference Manual</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> |
| <link rel="home" href="index.html" title="GStreamer Base Plugins 1.0 Library Reference Manual"> |
| <link rel="up" href="gstreamer-tag.html" title="Tag Support Library"> |
| <link rel="prev" href="gst-plugins-base-libs-gsttagxmpwriter.html" title="gsttagxmpwriter"> |
| <link rel="next" href="gst-plugins-base-libs-gsttagmux.html" title="gsttagmux"> |
| <meta name="generator" content="GTK-Doc V1.25 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> |
| <td width="100%" align="left" class="shortcuts"> |
| <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> |
| <a href="#gst-plugins-base-libs-gsttagdemux.description" class="shortcut">Description</a></span> |
| </td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> |
| <td><a accesskey="u" href="gstreamer-tag.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> |
| <td><a accesskey="p" href="gst-plugins-base-libs-gsttagxmpwriter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> |
| <td><a accesskey="n" href="gst-plugins-base-libs-gsttagmux.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="refentry"> |
| <a name="gst-plugins-base-libs-gsttagdemux"></a><div class="titlepage"></div> |
| <div class="refnamediv"><table width="100%"><tr> |
| <td valign="top"> |
| <h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gsttagdemux.top_of_page"></a>gsttagdemux</span></h2> |
| <p>gsttagdemux — Base class for demuxing tags that are in chunks |
| directly at the beginning or at the end of a file</p> |
| </td> |
| <td class="gallery_image" valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsect1"> |
| <a name="gst-plugins-base-libs-gsttagdemux.other"></a><h2>Types and Values</h2> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="name"> |
| <col class="description"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="datatype_keyword">struct</td> |
| <td class="function_name"><a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemux" title="struct GstTagDemux">GstTagDemux</a></td> |
| </tr> |
| <tr> |
| <td class="datatype_keyword">struct</td> |
| <td class="function_name"><a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemuxClass" title="struct GstTagDemuxClass">GstTagDemuxClass</a></td> |
| </tr> |
| <tr> |
| <td class="datatype_keyword">enum</td> |
| <td class="function_name"><a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemuxResult" title="enum GstTagDemuxResult">GstTagDemuxResult</a></td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-base-libs-gsttagdemux.includes"></a><h2>Includes</h2> |
| <pre class="synopsis">#include <gst/tag/gsttagdemux.h> |
| </pre> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-base-libs-gsttagdemux.description"></a><h2>Description</h2> |
| <div class="refsect2"> |
| <a name="id-1.2.13.9.5.2"></a><h3>Deriving from GstTagDemux</h3> |
| <p> |
| Provides a base class for demuxing tags at the beginning or end of a |
| stream and handles things like typefinding, querying, seeking, and |
| different modes of operation (chain-based, pull_range-based, and providing |
| downstream elements with random access if upstream supports that). The tag |
| is stripped from the output, and all offsets are adjusted for the tag |
| sizes, so that to the downstream element the stream will appear as if |
| there was no tag at all. Also, once the tag has been parsed, GstTagDemux |
| will try to determine the media type of the resulting stream and add a |
| source pad with the appropriate caps in order to facilitate auto-plugging. |
| </p> |
| <p> |
| Subclasses have to do four things: |
| </p> |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem"><p> |
| In their base init function, they must add a pad template for the sink |
| pad to the element class, describing the media type they can parse in |
| the caps of the pad template. |
| </p></li> |
| <li class="listitem"><p> |
| In their class init function, they must override |
| GST_TAG_DEMUX_CLASS(demux_klass)->identify_tag with their own identify |
| function. |
| </p></li> |
| <li class="listitem"><p> |
| In their class init function, they must override |
| GST_TAG_DEMUX_CLASS(demux_klass)->parse_tag with their own parse |
| function. |
| </p></li> |
| <li class="listitem"><p> |
| In their class init function, they must also set |
| GST_TAG_DEMUX_CLASS(demux_klass)->min_start_size and/or |
| GST_TAG_DEMUX_CLASS(demux_klass)->min_end_size to the minimum size required |
| for the identify function to decide whether the stream has a supported tag |
| or not. A class parsing ID3v1 tags, for example, would set min_end_size to |
| 128 bytes. |
| </p></li> |
| </ul></div> |
| <p> |
| </p> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-base-libs-gsttagdemux.functions_details"></a><h2>Functions</h2> |
| <p></p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-base-libs-gsttagdemux.other_details"></a><h2>Types and Values</h2> |
| <div class="refsect2"> |
| <a name="GstTagDemux"></a><h3>struct GstTagDemux</h3> |
| <pre class="programlisting">struct GstTagDemux { |
| GstElement element; |
| }; |
| </pre> |
| <p>Opaque <a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemux" title="struct GstTagDemux"><span class="type">GstTagDemux</span></a> structure.</p> |
| <div class="refsect3"> |
| <a name="GstTagDemux.members"></a><h4>Members</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="300px" class="struct_members_name"> |
| <col class="struct_members_description"> |
| <col width="200px" class="struct_members_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> <em class="structfield"><code><a name="GstTagDemux.element"></a>element</code></em>;</p></td> |
| <td class="struct_member_description"><p>parent element</p></td> |
| <td class="struct_member_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstTagDemuxClass"></a><h3>struct GstTagDemuxClass</h3> |
| <pre class="programlisting">struct GstTagDemuxClass { |
| GstElementClass parent_class; |
| |
| /* minimum size required to identify a tag at the start and determine |
| * its total size */ |
| guint min_start_size; |
| |
| /* minimum size required to identify a tag at the end and determine |
| * its total size */ |
| guint min_end_size; |
| |
| /* vtable */ |
| |
| /* identify tag and determine the size required to parse the tag */ |
| gboolean (*identify_tag) (GstTagDemux * demux, |
| GstBuffer * buffer, |
| gboolean start_tag, |
| guint * tag_size); |
| |
| /* parse the tag once it is identified and its size is known */ |
| GstTagDemuxResult (*parse_tag) (GstTagDemux * demux, |
| GstBuffer * buffer, |
| gboolean start_tag, |
| guint * tag_size, |
| GstTagList ** tags); |
| |
| /* merge start and end tags (optional) */ |
| GstTagList * (*merge_tags) (GstTagDemux * demux, |
| const GstTagList * start_tags, |
| const GstTagList * end_tags); |
| }; |
| </pre> |
| <p>The <a class="link" href="gst-plugins-base-libs-gsttagdemux.html#GstTagDemuxClass" title="struct GstTagDemuxClass"><span class="type">GstTagDemuxClass</span></a> structure. See documentation at beginning of section |
| for details about what subclasses need to override and do.</p> |
| <div class="refsect3"> |
| <a name="GstTagDemuxClass.members"></a><h4>Members</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="300px" class="struct_members_name"> |
| <col class="struct_members_description"> |
| <col width="200px" class="struct_members_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstTagDemuxClass.min-start-size"></a>min_start_size</code></em>;</p></td> |
| <td class="struct_member_description"><p>minimum size required to identify a tag at the start and |
| determine its total size. Set to 0 if not interested in start tags. |
| Subclasses should set this in their class_init function.</p></td> |
| <td class="struct_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstTagDemuxClass.min-end-size"></a>min_end_size</code></em>;</p></td> |
| <td class="struct_member_description"><p>minimum size required to identify a tag at the end and |
| determine its total size. Set to 0 if not interested in end tags. |
| Subclasses should set this in their class_init function.</p></td> |
| <td class="struct_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="struct_member_name"><p><em class="structfield"><code><a name="GstTagDemuxClass.identify-tag"></a>identify_tag</code></em> ()</p></td> |
| <td class="struct_member_description"><p>identify tag and determine the size required to parse the |
| tag. Buffer may be larger than the specified minimum size. |
| Subclassed MUST override this vfunc in their class_init function.</p></td> |
| <td class="struct_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="struct_member_name"><p><em class="structfield"><code><a name="GstTagDemuxClass.parse-tag"></a>parse_tag</code></em> ()</p></td> |
| <td class="struct_member_description"><p>parse the tag. Buffer will be exactly of the size determined by |
| the identify_tag vfunc before. The parse_tag vfunc may change the size |
| stored in *tag_size and return GST_TAG_DEMUX_RESULT_AGAIN to request a |
| larger or smaller buffer. It is also permitted to adjust the tag_size to a |
| smaller value and then return GST_TAG_DEMUX_RESULT_OK in one go. |
| Subclassed MUST override the parse_tag vfunc in their class_init function.</p></td> |
| <td class="struct_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="struct_member_name"><p><em class="structfield"><code><a name="GstTagDemuxClass.merge-tags"></a>merge_tags</code></em> ()</p></td> |
| <td class="struct_member_description"><p>merge start and end tags. Subclasses may want to override this |
| vfunc to allow prioritising of start or end tag according to user |
| preference. Note that both start_tags and end_tags may be NULL. By default |
| start tags are prefered over end tags.</p></td> |
| <td class="struct_member_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstTagDemuxResult"></a><h3>enum GstTagDemuxResult</h3> |
| <p>Result values from the parse_tag virtual function.</p> |
| <div class="refsect3"> |
| <a name="GstTagDemuxResult.members"></a><h4>Members</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="300px" class="enum_members_name"> |
| <col class="enum_members_description"> |
| <col width="200px" class="enum_members_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="enum_member_name"><p><a name="GST-TAG-DEMUX-RESULT-BROKEN-TAG:CAPS"></a>GST_TAG_DEMUX_RESULT_BROKEN_TAG</p></td> |
| <td class="enum_member_description"> |
| <p>cannot parse tag, just skip it</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="GST-TAG-DEMUX-RESULT-AGAIN:CAPS"></a>GST_TAG_DEMUX_RESULT_AGAIN</p></td> |
| <td class="enum_member_description"> |
| <p>call again with less or more data</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="GST-TAG-DEMUX-RESULT-OK:CAPS"></a>GST_TAG_DEMUX_RESULT_OK</p></td> |
| <td class="enum_member_description"> |
| <p>parsed tag successfully</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-base-libs-gsttagdemux.see-also"></a><h2>See Also</h2> |
| <p>GstApeDemux, GstID3Demux</p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr>Generated by GTK-Doc V1.25</div> |
| </body> |
| </html> |