Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 874255f3b26b44feb57fbe38a7384518 > files > 228

gmerlin-0.4.1-2mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>gmerlin: Track information</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Track information<br>
<small>
[<a class="el" href="group__plugin__i.html">Media input</a>]</small>
</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__audio__info__t.html">bg_audio_info_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Description of an audio stream.  <a href="structbg__audio__info__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__video__info__t.html">bg_video_info_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Description of a video stream.  <a href="structbg__video__info__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__subtitle__info__t.html">bg_subtitle_info_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Description of a subtitle stream.  <a href="structbg__subtitle__info__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__metadata__extended__t.html">bg_metadata_extended_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Metadata extensions.  <a href="structbg__metadata__extended__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Description of metadata.  <a href="structbg__metadata__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Chapter list.  <a href="structbg__chapter__list__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbg__track__info__t.html">bg_track_info_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Track info.  <a href="structbg__track__info__t.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g6d0f2e3d7db3600f193788a2cd26323f">BG_TRACK_SEEKABLE</a>&nbsp;&nbsp;&nbsp;(1&lt;&lt;0)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Track is seekable.  <a href="#g6d0f2e3d7db3600f193788a2cd26323f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g4303fed51151ea736a3aca472264d437">BG_TRACK_PAUSABLE</a>&nbsp;&nbsp;&nbsp;(1&lt;&lt;1)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Track is pausable.  <a href="#g4303fed51151ea736a3aca472264d437"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g0b6d81c63e154ebd90660887dea3a42b">bg_metadata_free</a> (<a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all strings in a metadata structure.  <a href="#g0b6d81c63e154ebd90660887dea3a42b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gff27ea1ab734ddec91beda0eca7e174d">bg_metadata_copy</a> (<a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *dst, const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *src)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy metadata.  <a href="#gff27ea1ab734ddec91beda0eca7e174d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#ge8bf230205e50a81f3dd8608232796dd">bg_create_track_name</a> (const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m, const char *format)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create trackname from metadata.  <a href="#ge8bf230205e50a81f3dd8608232796dd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g7cee59b3e8be93401a15eeed1083f7d2">bg_metadata_to_string</a> (const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m, int use_tabs)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert metadata to a humanized string.  <a href="#g7cee59b3e8be93401a15eeed1083f7d2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g6e3d6de282df9f5e2f8c0a1265605a3b">bg_metadata_get_year</a> (const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Try to get the year from the metadata.  <a href="#g6e3d6de282df9f5e2f8c0a1265605a3b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g829f6334d8ce9d13befdd36cf7e2b9dc">bg_metadata_append_ext</a> (<a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m, const char *key, const char *value)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append extended metadata.  <a href="#g829f6334d8ce9d13befdd36cf7e2b9dc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g5d3fc22c0e1216921e17402b9faf26df">bg_xml_2_metadata</a> (xmlDocPtr xml_doc, xmlNodePtr xml_metadata, <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *ret)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a libxml2 node into a metadata struct.  <a href="#g5d3fc22c0e1216921e17402b9faf26df"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gef33c7d67ef80e7fecbd0113fe584619">bg_metadata_2_xml</a> (xmlNodePtr xml_metadata, <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *ret)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a metadata struct into a libxml2 node.  <a href="#gef33c7d67ef80e7fecbd0113fe584619"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbg__parameter__info__s.html">bg_parameter_info_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gf1e41fdf65bb9ff6367abf33e9996b79">bg_metadata_get_parameters</a> (<a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get parameters for editing metadata.  <a href="#gf1e41fdf65bb9ff6367abf33e9996b79"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gea7b7aee08f721794ccc0de4dcdcfafd">bg_metadata_set_parameter</a> (void *data, const char *name, const <a class="el" href="unionbg__parameter__value__t.html">bg_parameter_value_t</a> *v)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change metadata by setting parameters.  <a href="#gea7b7aee08f721794ccc0de4dcdcfafd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g5f0a2811f8bb2adc3ee09c857b6c74c1">bg_metadata_dump</a> (const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump metadata to stderr.  <a href="#g5f0a2811f8bb2adc3ee09c857b6c74c1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g68d0f30385d6e02fb478a128098c565d">bg_chapter_list_create</a> (int num_chapters)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create chapter list.  <a href="#g68d0f30385d6e02fb478a128098c565d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g2014f51450f857e436b1c3018c34a3d7">bg_chapter_list_copy</a> (const <a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy chapter list.  <a href="#g2014f51450f857e436b1c3018c34a3d7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gea94cb637a1a770a5895961d96a25832">bg_chapter_list_destroy</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy chapter list.  <a href="#gea94cb637a1a770a5895961d96a25832"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g855451f32acbc66f6457021e82b020f0">bg_chapter_list_insert</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list, int index, int64_t time, const char *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Insert a chapter into a chapter list.  <a href="#g855451f32acbc66f6457021e82b020f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g03228ed09310b54ce301eab24cfcbfaf">bg_chapter_list_delete</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list, int index)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a chapter from a chapter list.  <a href="#g03228ed09310b54ce301eab24cfcbfaf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g103917be87a17536e52907a8406c99f2">bg_chapter_list_set_default_names</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set default chapter names.  <a href="#g103917be87a17536e52907a8406c99f2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g1cbc02a8850f5c35e59ccfd353c85bb5">bg_chapter_list_get_current</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list, <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//group__time.html#ga0">gavl_time_t</a> time)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current chapter.  <a href="#g1cbc02a8850f5c35e59ccfd353c85bb5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g2649bbe1f6f5519044491a1fbfb9c727">bg_chapter_list_changed</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list, <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//group__time.html#ga0">gavl_time_t</a> time, int *current_chapter)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current chapter.  <a href="#g2649bbe1f6f5519044491a1fbfb9c727"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g20dcb6753d86d2698e8f6c153b7f75bb">bg_chapter_list_2_xml</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list, xmlNodePtr xml_list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a chapter list into a libxml2 node.  <a href="#g20dcb6753d86d2698e8f6c153b7f75bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#ge43bf05e99ca025b5dcc4cdf52b43541">bg_xml_2_chapter_list</a> (xmlDocPtr xml_doc, xmlNodePtr xml_list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert libxml2 node into a chapter list.  <a href="#ge43bf05e99ca025b5dcc4cdf52b43541"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gdae95cec199ecd74000ad5c5efd4802a">bg_chapter_list_save</a> (<a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *list, const char *filename)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a chapter list to a file.  <a href="#gdae95cec199ecd74000ad5c5efd4802a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g6d75f05d39075f11c3fc956edbfb85c0">bg_chapter_list_load</a> (const char *filename)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load a chapter list from a file.  <a href="#g6d75f05d39075f11c3fc956edbfb85c0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#gea064b87f4e6cd80fce8b995682a4743">bg_track_info_free</a> (<a class="el" href="structbg__track__info__t.html">bg_track_info_t</a> *info)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all allocated memory in a track info.  <a href="#gea064b87f4e6cd80fce8b995682a4743"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#ge19c2e938e3e2106a6d9c77ffe25720a">bg_set_track_name_default</a> (<a class="el" href="structbg__track__info__t.html">bg_track_info_t</a> *info, const char *location)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the track name from the filename/URL.  <a href="#ge19c2e938e3e2106a6d9c77ffe25720a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__streaminfo.html#g9c682b594246259c3fb9f77e15453a58">bg_get_track_name_default</a> (const char *location, int track, int num_tracks)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a track name from the filename/URL.  <a href="#g9c682b594246259c3fb9f77e15453a58"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
These structures describe media tracks with their streams. They are returned by the input plugin. <hr><h2>Define Documentation</h2>
<a class="anchor" name="g6d0f2e3d7db3600f193788a2cd26323f"></a><!-- doxytag: member="streaminfo.h::BG_TRACK_SEEKABLE" ref="g6d0f2e3d7db3600f193788a2cd26323f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BG_TRACK_SEEKABLE&nbsp;&nbsp;&nbsp;(1&lt;&lt;0)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Track is seekable. 
<p>

</div>
</div><p>
<a class="anchor" name="g4303fed51151ea736a3aca472264d437"></a><!-- doxytag: member="streaminfo.h::BG_TRACK_PAUSABLE" ref="g4303fed51151ea736a3aca472264d437" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BG_TRACK_PAUSABLE&nbsp;&nbsp;&nbsp;(1&lt;&lt;1)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Track is pausable. 
<p>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g0b6d81c63e154ebd90660887dea3a42b"></a><!-- doxytag: member="streaminfo.h::bg_metadata_free" ref="g0b6d81c63e154ebd90660887dea3a42b" args="(bg_metadata_t *m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_metadata_free           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Free all strings in a metadata structure. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="gff27ea1ab734ddec91beda0eca7e174d"></a><!-- doxytag: member="streaminfo.h::bg_metadata_copy" ref="gff27ea1ab734ddec91beda0eca7e174d" args="(bg_metadata_t *dst, const bg_metadata_t *src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_metadata_copy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>Destination </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source</td></tr>
  </table>
</dl>
Make sure, that dst is either memset to 0 before the call or contains only strings, which can savely be freed. 
</div>
</div><p>
<a class="anchor" name="ge8bf230205e50a81f3dd8608232796dd"></a><!-- doxytag: member="streaminfo.h::bg_create_track_name" ref="ge8bf230205e50a81f3dd8608232796dd" args="(const bg_metadata_t *m, const char *format)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* bg_create_track_name           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>format</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create trackname from metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>Format string </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated track name or NULL</dd></dl>
The format string can contain arbitrary characters and the following placeholders<p>
<ul>
<li>p: Artist</li><li>a: Album</li><li>g: Genre</li><li>t: Track name</li><li>c: Comment</li><li>y: Year</li><li>%&lt;d&gt;n: Track number with &lt;d&gt; digits</li></ul>
<p>
If the string corresponding to a placeholder is NULL, the whole function is aborted and NULL is returned. 
</div>
</div><p>
<a class="anchor" name="g7cee59b3e8be93401a15eeed1083f7d2"></a><!-- doxytag: member="streaminfo.h::bg_metadata_to_string" ref="g7cee59b3e8be93401a15eeed1083f7d2" args="(const bg_metadata_t *m, int use_tabs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* bg_metadata_to_string           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>use_tabs</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert metadata to a humanized string. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>use_tabs</em>&nbsp;</td><td>Indicate, that tabs (\t) should be used in the output </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated string </dd></dl>

</div>
</div><p>
<a class="anchor" name="g6e3d6de282df9f5e2f8c0a1265605a3b"></a><!-- doxytag: member="streaminfo.h::bg_metadata_get_year" ref="g6e3d6de282df9f5e2f8c0a1265605a3b" args="(const bg_metadata_t *m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_metadata_get_year           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Try to get the year from the metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The year as int</dd></dl>
The date string can be in multiple formats. This function tries to extract the year and return it as int. 
</div>
</div><p>
<a class="anchor" name="g829f6334d8ce9d13befdd36cf7e2b9dc"></a><!-- doxytag: member="streaminfo.h::bg_metadata_append_ext" ref="g829f6334d8ce9d13befdd36cf7e2b9dc" args="(bg_metadata_t *m, const char *key, const char *value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_metadata_append_ext           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Append extended metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>Value</td></tr>
  </table>
</dl>
Append a key-value pair to the extended metadata 
</div>
</div><p>
<a class="anchor" name="g5d3fc22c0e1216921e17402b9faf26df"></a><!-- doxytag: member="streaminfo.h::bg_xml_2_metadata" ref="g5d3fc22c0e1216921e17402b9faf26df" args="(xmlDocPtr xml_doc, xmlNodePtr xml_metadata, bg_metadata_t *ret)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_xml_2_metadata           </td>
          <td>(</td>
          <td class="paramtype">xmlDocPtr&nbsp;</td>
          <td class="paramname"> <em>xml_doc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">xmlNodePtr&nbsp;</td>
          <td class="paramname"> <em>xml_metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ret</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a libxml2 node into a metadata struct. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>xml_doc</em>&nbsp;</td><td>Pointer to the xml document </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>xml_metadata</em>&nbsp;</td><td>Pointer to the xml node containing the metadata </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ret</em>&nbsp;</td><td>Metadata container, where the info will be stored</td></tr>
  </table>
</dl>
See the libxml2 documentation for more infos 
</div>
</div><p>
<a class="anchor" name="gef33c7d67ef80e7fecbd0113fe584619"></a><!-- doxytag: member="streaminfo.h::bg_metadata_2_xml" ref="gef33c7d67ef80e7fecbd0113fe584619" args="(xmlNodePtr xml_metadata, bg_metadata_t *ret)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_metadata_2_xml           </td>
          <td>(</td>
          <td class="paramtype">xmlNodePtr&nbsp;</td>
          <td class="paramname"> <em>xml_metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ret</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a metadata struct into a libxml2 node. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ret</em>&nbsp;</td><td>Metadata </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>xml_metadata</em>&nbsp;</td><td>Pointer to the xml node for the metadata</td></tr>
  </table>
</dl>
See the libxml2 documentation for more infos 
</div>
</div><p>
<a class="anchor" name="gf1e41fdf65bb9ff6367abf33e9996b79"></a><!-- doxytag: member="streaminfo.h::bg_metadata_get_parameters" ref="gf1e41fdf65bb9ff6367abf33e9996b79" args="(bg_metadata_t *m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structbg__parameter__info__s.html">bg_parameter_info_t</a>* bg_metadata_get_parameters           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get parameters for editing metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A NULL-terminated array of parameter descriptions</dd></dl>
Using this function and <a class="el" href="group__streaminfo.html#gea7b7aee08f721794ccc0de4dcdcfafd">bg_metadata_set_parameter</a> lets you set metadata with the usual configuration methods. The default values of the returned descriptions are set from the Metadata.<p>
Call <a class="el" href="group__parameter.html#g394bbc66cc56d03f762fd53d1b55cca9">bg_parameter_info_destroy_array</a> to free the returned array 
</div>
</div><p>
<a class="anchor" name="gea7b7aee08f721794ccc0de4dcdcfafd"></a><!-- doxytag: member="streaminfo.h::bg_metadata_set_parameter" ref="gea7b7aee08f721794ccc0de4dcdcfafd" args="(void *data, const char *name, const bg_parameter_value_t *v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_metadata_set_parameter           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="unionbg__parameter__value__t.html">bg_parameter_value_t</a> *&nbsp;</td>
          <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Change metadata by setting parameters. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Metadata casted to void </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the parameter </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>Value </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g5f0a2811f8bb2adc3ee09c857b6c74c1"></a><!-- doxytag: member="streaminfo.h::bg_metadata_dump" ref="g5f0a2811f8bb2adc3ee09c857b6c74c1" args="(const bg_metadata_t *m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_metadata_dump           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structbg__metadata__t.html">bg_metadata_t</a> *&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dump metadata to stderr. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>Metadata</td></tr>
  </table>
</dl>
Used for debugging purposes 
</div>
</div><p>
<a class="anchor" name="g68d0f30385d6e02fb478a128098c565d"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_create" ref="g68d0f30385d6e02fb478a128098c565d" args="(int num_chapters)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a>* bg_chapter_list_create           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num_chapters</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create chapter list. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>num_chapters</em>&nbsp;</td><td>Initial number of chapters </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g2014f51450f857e436b1c3018c34a3d7"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_copy" ref="g2014f51450f857e436b1c3018c34a3d7" args="(const bg_chapter_list_t *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a>* bg_chapter_list_copy           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy chapter list. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>Chapter list </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="gea94cb637a1a770a5895961d96a25832"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_destroy" ref="gea94cb637a1a770a5895961d96a25832" args="(bg_chapter_list_t *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_chapter_list_destroy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy chapter list. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g855451f32acbc66f6457021e82b020f0"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_insert" ref="g855451f32acbc66f6457021e82b020f0" args="(bg_chapter_list_t *list, int index, int64_t time, const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_chapter_list_insert           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int64_t&nbsp;</td>
          <td class="paramname"> <em>time</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Insert a chapter into a chapter list. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>Position (starting with 0) where the new chapter will be placed </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>Start time of the chapter </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Chapter name (or NULL) </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g03228ed09310b54ce301eab24cfcbfaf"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_delete" ref="g03228ed09310b54ce301eab24cfcbfaf" args="(bg_chapter_list_t *list, int index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_chapter_list_delete           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a chapter from a chapter list. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>Position (starting with 0) of the chapter to delete </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g103917be87a17536e52907a8406c99f2"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_set_default_names" ref="g103917be87a17536e52907a8406c99f2" args="(bg_chapter_list_t *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_chapter_list_set_default_names           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set default chapter names. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list</td></tr>
  </table>
</dl>
If no names for the chapters are avaiable, this function will set them to "Chapter 1", "Chapter 2" etc. 
</div>
</div><p>
<a class="anchor" name="g1cbc02a8850f5c35e59ccfd353c85bb5"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_get_current" ref="g1cbc02a8850f5c35e59ccfd353c85bb5" args="(bg_chapter_list_t *list, gavl_time_t time)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_chapter_list_get_current           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//group__time.html#ga0">gavl_time_t</a>&nbsp;</td>
          <td class="paramname"> <em>time</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get current chapter. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>Playback time </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The current chapter index</dd></dl>
Use this function after seeking to signal a chapter change 
</div>
</div><p>
<a class="anchor" name="g2649bbe1f6f5519044491a1fbfb9c727"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_changed" ref="g2649bbe1f6f5519044491a1fbfb9c727" args="(bg_chapter_list_t *list, gavl_time_t time, int *current_chapter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_chapter_list_changed           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//group__time.html#ga0">gavl_time_t</a>&nbsp;</td>
          <td class="paramname"> <em>time</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>current_chapter</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get current chapter. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>Playback time </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>current_chapter</em>&nbsp;</td><td>Returns the current chapter </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the chapter changed, 0 else</dd></dl>
Use this function during linear playback to signal a chapter change 
</div>
</div><p>
<a class="anchor" name="g20dcb6753d86d2698e8f6c153b7f75bb"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_2_xml" ref="g20dcb6753d86d2698e8f6c153b7f75bb" args="(bg_chapter_list_t *list, xmlNodePtr xml_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_chapter_list_2_xml           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">xmlNodePtr&nbsp;</td>
          <td class="paramname"> <em>xml_list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a chapter list into a libxml2 node. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>Chapter list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>xml_list</em>&nbsp;</td><td>Pointer to the xml node for the chapter list</td></tr>
  </table>
</dl>
See the libxml2 documentation for more infos 
</div>
</div><p>
<a class="anchor" name="ge43bf05e99ca025b5dcc4cdf52b43541"></a><!-- doxytag: member="streaminfo.h::bg_xml_2_chapter_list" ref="ge43bf05e99ca025b5dcc4cdf52b43541" args="(xmlDocPtr xml_doc, xmlNodePtr xml_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a>* bg_xml_2_chapter_list           </td>
          <td>(</td>
          <td class="paramtype">xmlDocPtr&nbsp;</td>
          <td class="paramname"> <em>xml_doc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">xmlNodePtr&nbsp;</td>
          <td class="paramname"> <em>xml_list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert libxml2 node into a chapter list. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>xml_doc</em>&nbsp;</td><td>Pointer to the xml document </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>xml_list</em>&nbsp;</td><td>Pointer to the xml node for chapter list </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The chapter list from the xml node</dd></dl>
See the libxml2 documentation for more infos 
</div>
</div><p>
<a class="anchor" name="gdae95cec199ecd74000ad5c5efd4802a"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_save" ref="gdae95cec199ecd74000ad5c5efd4802a" args="(bg_chapter_list_t *list, const char *filename)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_chapter_list_save           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a> *&nbsp;</td>
          <td class="paramname"> <em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>filename</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Save a chapter list to a file. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>A chapter list </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>Where to save the list </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g6d75f05d39075f11c3fc956edbfb85c0"></a><!-- doxytag: member="streaminfo.h::bg_chapter_list_load" ref="g6d75f05d39075f11c3fc956edbfb85c0" args="(const char *filename)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structbg__chapter__list__t.html">bg_chapter_list_t</a>* bg_chapter_list_load           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>filename</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Load a chapter list from a file. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>From where to load the list </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly created chapter list or NULL </dd></dl>

</div>
</div><p>
<a class="anchor" name="gea064b87f4e6cd80fce8b995682a4743"></a><!-- doxytag: member="streaminfo.h::bg_track_info_free" ref="gea064b87f4e6cd80fce8b995682a4743" args="(bg_track_info_t *info)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_track_info_free           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__track__info__t.html">bg_track_info_t</a> *&nbsp;</td>
          <td class="paramname"> <em>info</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Free all allocated memory in a track info. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>Track info</td></tr>
  </table>
</dl>
This one can be called by plugins to free all allocated memory contained in a track info. Note, that you have to free() the structure itself after. 
</div>
</div><p>
<a class="anchor" name="ge19c2e938e3e2106a6d9c77ffe25720a"></a><!-- doxytag: member="streaminfo.h::bg_set_track_name_default" ref="ge19c2e938e3e2106a6d9c77ffe25720a" args="(bg_track_info_t *info, const char *location)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_set_track_name_default           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structbg__track__info__t.html">bg_track_info_t</a> *&nbsp;</td>
          <td class="paramname"> <em>info</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>location</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the track name from the filename/URL. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>Track info </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>location</em>&nbsp;</td><td>filename or URL</td></tr>
  </table>
</dl>
This is used for cases, where the input plugin didn't set a track name, and the name cannot (or shouldn't) be set from the metadata. If location is an URL, the whole URL will be copied into the name field. If location is a local filename, the path and extension will be removed. 
</div>
</div><p>
<a class="anchor" name="g9c682b594246259c3fb9f77e15453a58"></a><!-- doxytag: member="streaminfo.h::bg_get_track_name_default" ref="g9c682b594246259c3fb9f77e15453a58" args="(const char *location, int track, int num_tracks)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* bg_get_track_name_default           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>location</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>track</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num_tracks</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a track name from the filename/URL. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>location</em>&nbsp;</td><td>filename or URL </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated track name which must be freed by the caller </dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>track</em>&nbsp;</td><td>Track index </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num_tracks</em>&nbsp;</td><td>Total number of tracks of the location</td></tr>
  </table>
</dl>
If location is an URL, the whole URL will be copied into the name field. If location is a local filename, the path and extension will be removed. 
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat Aug 22 01:28:05 2009 for gmerlin by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>