Sophie

Sophie

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

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: Filter chains</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>Filter chains</h1>Chains of A/V filters.  
<a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br class="typebreak">
bg_audio_filter_chain_s&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Audio filter chain.  <a href="#gc6c5789a65e623aee471836c9c256c52"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br class="typebreak">
bg_video_filter_chain_s&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Video filter chain.  <a href="#gc07ef15450d30eb73d4c25c08047a61b"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__filter__chain.html#g39c0e1088b59d21f2d00376ca21b1d8f">bg_audio_filter_chain_create</a> (const bg_gavl_audio_options_t *opt, <a class="el" href="group__plugin__registry.html#g7470a35f2437f3fbc9762587d3fe7142">bg_plugin_registry_t</a> *plugin_reg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an audio filter chain.  <a href="#g39c0e1088b59d21f2d00376ca21b1d8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <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__filter__chain.html#g74ba2dbde5ef5738f4e4222fda7939b1">bg_audio_filter_chain_get_parameters</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return parameters.  <a href="#g74ba2dbde5ef5738f4e4222fda7939b1"></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__filter__chain.html#gd815388df7631570dce86030998d2a4b">bg_audio_filter_chain_set_parameter</a> (void *data, const char *name, const <a class="el" href="unionbg__parameter__value__t.html">bg_parameter_value_t</a> *val)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a parameter for an audio chain.  <a href="#gd815388df7631570dce86030998d2a4b"></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__filter__chain.html#gf8028d9f96cdff42d43b98290b476646">bg_audio_filter_chain_need_rebuild</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if an audio filter chain needs to be rebuilt.  <a href="#gf8028d9f96cdff42d43b98290b476646"></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__filter__chain.html#g7b00cdcb2bba416fcebae7fa7401c489">bg_audio_filter_chain_need_restart</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if an audio filter chain needs to be restarted.  <a href="#g7b00cdcb2bba416fcebae7fa7401c489"></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__filter__chain.html#g26c87950fe2e4d72203794bf086b6bc1">bg_audio_filter_chain_rebuild</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rebuild an audio chain.  <a href="#g26c87950fe2e4d72203794bf086b6bc1"></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__filter__chain.html#g82a50c9888c67d6615828b04dce7e49c">bg_audio_filter_chain_connect_input</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch, <a class="el" href="group__plugin.html#gf3ade316707ab6bd66d55dcf60403b3d">bg_read_audio_func_t</a> func, void *priv, int stream)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set input callback of an audio filter chain.  <a href="#g82a50c9888c67d6615828b04dce7e49c"></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__filter__chain.html#g7c846f0ecaff5d0459ac58c89e740441">bg_audio_filter_chain_init</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch, const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__audio__format__s.html">gavl_audio_format_t</a> *in_format, <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__audio__format__s.html">gavl_audio_format_t</a> *out_format)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an audio filter chain.  <a href="#g7c846f0ecaff5d0459ac58c89e740441"></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__filter__chain.html#gd8bae202495f153308e9eb1d987854a9">bg_audio_filter_chain_set_out_format</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch, const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__audio__format__s.html">gavl_audio_format_t</a> *out_format)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set output format of an audio filter chain.  <a href="#gd8bae202495f153308e9eb1d987854a9"></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__filter__chain.html#g78f053c1ec9ddc855b97368ceac2208a">bg_audio_filter_chain_read</a> (void *priv, <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__audio__frame__s.html">gavl_audio_frame_t</a> *frame, int stream, int num_samples)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a audio samples from an audio filter chain.  <a href="#g78f053c1ec9ddc855b97368ceac2208a"></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__filter__chain.html#g241d064edd0662c6f6ce1f0d6ce95512">bg_audio_filter_chain_destroy</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an audio filter chain.  <a href="#g241d064edd0662c6f6ce1f0d6ce95512"></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__filter__chain.html#g51257070794f00016eed879c6514f1ec">bg_audio_filter_chain_lock</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock an audio filter chain.  <a href="#g51257070794f00016eed879c6514f1ec"></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__filter__chain.html#gfcf5a49c76ac10346fc96770f7397650">bg_audio_filter_chain_unlock</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock an audio filter chain.  <a href="#gfcf5a49c76ac10346fc96770f7397650"></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__filter__chain.html#gc3281a7c5530acf528ebfb9f29c68a98">bg_audio_filter_chain_reset</a> (<a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset an audio filter chain.  <a href="#gc3281a7c5530acf528ebfb9f29c68a98"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__filter__chain.html#g8335aa715086ffe5fddc9a76640e9705">bg_video_filter_chain_create</a> (const bg_gavl_video_options_t *opt, <a class="el" href="group__plugin__registry.html#g7470a35f2437f3fbc9762587d3fe7142">bg_plugin_registry_t</a> *plugin_reg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a video filter chain.  <a href="#g8335aa715086ffe5fddc9a76640e9705"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <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__filter__chain.html#g7629731879074271526909d96319f77b">bg_video_filter_chain_get_parameters</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return parameters.  <a href="#g7629731879074271526909d96319f77b"></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__filter__chain.html#ge564dadf5ef2f41b284983b737bf68db">bg_video_filter_chain_set_parameter</a> (void *data, const char *name, const <a class="el" href="unionbg__parameter__value__t.html">bg_parameter_value_t</a> *val)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a parameter for a video chain.  <a href="#ge564dadf5ef2f41b284983b737bf68db"></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__filter__chain.html#gb67fd069263093f26ead8cae427a2487">bg_video_filter_chain_need_rebuild</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a video filter chain needs to be rebuilt.  <a href="#gb67fd069263093f26ead8cae427a2487"></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__filter__chain.html#ga7b0f5f1785882f9c3f388ccb56c15b3">bg_video_filter_chain_need_restart</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a video filter chain needs to be restarted.  <a href="#ga7b0f5f1785882f9c3f388ccb56c15b3"></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__filter__chain.html#gc7882a80aa4a2f29374999d8bd916cc5">bg_video_filter_chain_rebuild</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rebuild a video chain.  <a href="#gc7882a80aa4a2f29374999d8bd916cc5"></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__filter__chain.html#gdb3b8cb378b3049c566245a1eebeec62">bg_video_filter_chain_connect_input</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch, <a class="el" href="group__plugin.html#gdc25c1f00af83f18062dcf72af04374d">bg_read_video_func_t</a> func, void *priv, int stream)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set input callback of a video filter chain.  <a href="#gdb3b8cb378b3049c566245a1eebeec62"></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__filter__chain.html#ge85118a8e7733dabbfc331f09d84047e">bg_video_filter_chain_init</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch, const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__video__format__s.html">gavl_video_format_t</a> *in_format, <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__video__format__s.html">gavl_video_format_t</a> *out_format)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a video filter chain.  <a href="#ge85118a8e7733dabbfc331f09d84047e"></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__filter__chain.html#gf71adaf902033b82a61388000920f98e">bg_video_filter_chain_set_out_format</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch, const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__video__format__s.html">gavl_video_format_t</a> *out_format)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set output format of a video filter chain.  <a href="#gf71adaf902033b82a61388000920f98e"></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__filter__chain.html#gc7c1fa919cebe20fc133b6804628e446">bg_video_filter_chain_read</a> (void *priv, <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__video__frame__s.html">gavl_video_frame_t</a> *frame, int stream)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a video frame from a video filter chain.  <a href="#gc7c1fa919cebe20fc133b6804628e446"></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__filter__chain.html#g8fcb9dffbb124f089d273b1d97ec1d67">bg_video_filter_chain_destroy</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a video filter chain.  <a href="#g8fcb9dffbb124f089d273b1d97ec1d67"></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__filter__chain.html#g6c04426482a7d960c69e5adab855ed33">bg_video_filter_chain_lock</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock a video filter chain.  <a href="#g6c04426482a7d960c69e5adab855ed33"></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__filter__chain.html#g9a5aa385017e1c18ba111d76f1736870">bg_video_filter_chain_unlock</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock a video filter chain.  <a href="#g9a5aa385017e1c18ba111d76f1736870"></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__filter__chain.html#ga3c49573b2cc0b5f768e3937fffb6a00">bg_video_filter_chain_reset</a> (<a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *ch)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset a video filter chain.  <a href="#ga3c49573b2cc0b5f768e3937fffb6a00"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Chains of A/V filters. <hr><h2>Typedef Documentation</h2>
<a class="anchor" name="gc6c5789a65e623aee471836c9c256c52"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_t" ref="gc6c5789a65e623aee471836c9c256c52" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct bg_audio_filter_chain_s <a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Audio filter chain. 
<p>
Opaque handle for an audio filter chain. You don't want to know, what's inside. 
</div>
</div><p>
<a class="anchor" name="gc07ef15450d30eb73d4c25c08047a61b"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_t" ref="gc07ef15450d30eb73d4c25c08047a61b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct bg_video_filter_chain_s <a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Video filter chain. 
<p>
Opaque handle for a video filter chain. You don't want to know, what's inside. 
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g39c0e1088b59d21f2d00376ca21b1d8f"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_create" ref="g39c0e1088b59d21f2d00376ca21b1d8f" args="(const bg_gavl_audio_options_t *opt, bg_plugin_registry_t *plugin_reg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a>* bg_audio_filter_chain_create           </td>
          <td>(</td>
          <td class="paramtype">const bg_gavl_audio_options_t *&nbsp;</td>
          <td class="paramname"> <em>opt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__plugin__registry.html#g7470a35f2437f3fbc9762587d3fe7142">bg_plugin_registry_t</a> *&nbsp;</td>
          <td class="paramname"> <em>plugin_reg</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 an audio filter chain. 
<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>opt</em>&nbsp;</td><td>Conversion options </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>plugin_reg</em>&nbsp;</td><td>A plugin registry</td></tr>
  </table>
</dl>
The conversion options should be valid for the whole lifetime of the filter chain. 
</div>
</div><p>
<a class="anchor" name="g74ba2dbde5ef5738f4e4222fda7939b1"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_get_parameters" ref="g74ba2dbde5ef5738f4e4222fda7939b1" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structbg__parameter__info__s.html">bg_parameter_info_t</a>* bg_audio_filter_chain_get_parameters           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return 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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A NULL terminated array of parameter descriptions</dd></dl>
Usually, there will be a parameter of type BG_PARAMETER_MULTI_CHAIN, which includes all installed filters and their respective parameters. 
</div>
</div><p>
<a class="anchor" name="gd815388df7631570dce86030998d2a4b"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_set_parameter" ref="gd815388df7631570dce86030998d2a4b" args="(void *data, const char *name, const bg_parameter_value_t *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_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>val</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 a parameter for an audio chain. 
<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>An audio converter as void* </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Value</td></tr>
  </table>
</dl>
In some cases the filter chain must be rebuilt after setting a parameter. The application should therefore call <a class="el" href="group__filter__chain.html#gf8028d9f96cdff42d43b98290b476646">bg_audio_filter_chain_need_rebuild</a> and call <a class="el" href="group__filter__chain.html#g7c846f0ecaff5d0459ac58c89e740441">bg_audio_filter_chain_init</a> if necessary. 
</div>
</div><p>
<a class="anchor" name="gf8028d9f96cdff42d43b98290b476646"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_need_rebuild" ref="gf8028d9f96cdff42d43b98290b476646" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_audio_filter_chain_need_rebuild           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if an audio filter chain needs to be rebuilt. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the chain must be rebuilt, 0 else</dd></dl>
If this returns true, you should call <a class="el" href="group__filter__chain.html#g26c87950fe2e4d72203794bf086b6bc1">bg_audio_filter_chain_rebuild</a> or <a class="el" href="group__filter__chain.html#g7c846f0ecaff5d0459ac58c89e740441">bg_audio_filter_chain_init</a>. It's usually used after <a class="el" href="group__filter__chain.html#gd815388df7631570dce86030998d2a4b">bg_audio_filter_chain_set_parameter</a>. 
</div>
</div><p>
<a class="anchor" name="g7b00cdcb2bba416fcebae7fa7401c489"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_need_restart" ref="g7b00cdcb2bba416fcebae7fa7401c489" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_audio_filter_chain_need_restart           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if an audio filter chain needs to be restarted. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the chain must be restarted, 0 else</dd></dl>
If this returns true, you should call <a class="el" href="group__filter__chain.html#g7c846f0ecaff5d0459ac58c89e740441">bg_audio_filter_chain_init</a>. It's usually used after <a class="el" href="group__filter__chain.html#gd815388df7631570dce86030998d2a4b">bg_audio_filter_chain_set_parameter</a>. 
</div>
</div><p>
<a class="anchor" name="g26c87950fe2e4d72203794bf086b6bc1"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_rebuild" ref="g26c87950fe2e4d72203794bf086b6bc1" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_rebuild           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Rebuild an audio chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g82a50c9888c67d6615828b04dce7e49c"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_connect_input" ref="g82a50c9888c67d6615828b04dce7e49c" args="(bg_audio_filter_chain_t *ch, bg_read_audio_func_t func, void *priv, int stream)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_connect_input           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__plugin.html#gf3ade316707ab6bd66d55dcf60403b3d">bg_read_audio_func_t</a>&nbsp;</td>
          <td class="paramname"> <em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>priv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>stream</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 input callback of an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>The function to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>priv</em>&nbsp;</td><td>The private handle to pass to func </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stream</em>&nbsp;</td><td>The stream argument to pass to func</td></tr>
  </table>
</dl>
This function must be called *before* bg_audio_filter_chain_init. 
</div>
</div><p>
<a class="anchor" name="g7c846f0ecaff5d0459ac58c89e740441"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_init" ref="g7c846f0ecaff5d0459ac58c89e740441" args="(bg_audio_filter_chain_t *ch, const gavl_audio_format_t *in_format, gavl_audio_format_t *out_format)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_audio_filter_chain_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__audio__format__s.html">gavl_audio_format_t</a> *&nbsp;</td>
          <td class="paramname"> <em>in_format</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//structgavl__audio__format__s.html">gavl_audio_format_t</a> *&nbsp;</td>
          <td class="paramname"> <em>out_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>
Initialize an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in_format</em>&nbsp;</td><td>Input format </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>out_format</em>&nbsp;</td><td>Returns the output format </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="gd8bae202495f153308e9eb1d987854a9"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_set_out_format" ref="gd8bae202495f153308e9eb1d987854a9" args="(bg_audio_filter_chain_t *ch, const gavl_audio_format_t *out_format)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_audio_filter_chain_set_out_format           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__audio__format__s.html">gavl_audio_format_t</a> *&nbsp;</td>
          <td class="paramname"> <em>out_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>
Set output format of an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>out_format</em>&nbsp;</td><td>Output format </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The number of conversion steps</dd></dl>
This function initializes a final audio converter at the output for delivering the desired format. 
</div>
</div><p>
<a class="anchor" name="g78f053c1ec9ddc855b97368ceac2208a"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_read" ref="g78f053c1ec9ddc855b97368ceac2208a" args="(void *priv, gavl_audio_frame_t *frame, int stream, int num_samples)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_audio_filter_chain_read           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>priv</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//structgavl__audio__frame__s.html">gavl_audio_frame_t</a> *&nbsp;</td>
          <td class="paramname"> <em>frame</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>stream</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num_samples</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a audio samples from an audio filter chain. 
<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>priv</em>&nbsp;</td><td>An audio filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frame</em>&nbsp;</td><td>An audio frame </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stream</em>&nbsp;</td><td>Stream number (must be 0) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num_samples</em>&nbsp;</td><td>Number of samples to read </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of samples read, 0 means EOF. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g241d064edd0662c6f6ce1f0d6ce95512"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_destroy" ref="g241d064edd0662c6f6ce1f0d6ce95512" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_destroy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g51257070794f00016eed879c6514f1ec"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_lock" ref="g51257070794f00016eed879c6514f1ec" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_lock           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain</td></tr>
  </table>
</dl>
In multithreaded enviroments, you must lock the chain for calls to <a class="el" href="group__filter__chain.html#gd815388df7631570dce86030998d2a4b">bg_audio_filter_chain_set_parameter</a> and <a class="el" href="group__filter__chain.html#g78f053c1ec9ddc855b97368ceac2208a">bg_audio_filter_chain_read</a>. 
</div>
</div><p>
<a class="anchor" name="gfcf5a49c76ac10346fc96770f7397650"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_unlock" ref="gfcf5a49c76ac10346fc96770f7397650" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_unlock           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unlock an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain</td></tr>
  </table>
</dl>
In multithreaded enviroments, you must lock the chain for calls to <a class="el" href="group__filter__chain.html#gd815388df7631570dce86030998d2a4b">bg_audio_filter_chain_set_parameter</a> and <a class="el" href="group__filter__chain.html#g78f053c1ec9ddc855b97368ceac2208a">bg_audio_filter_chain_read</a>. 
</div>
</div><p>
<a class="anchor" name="gc3281a7c5530acf528ebfb9f29c68a98"></a><!-- doxytag: member="filters.h::bg_audio_filter_chain_reset" ref="gc3281a7c5530acf528ebfb9f29c68a98" args="(bg_audio_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_audio_filter_chain_reset           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc6c5789a65e623aee471836c9c256c52">bg_audio_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reset an audio filter chain. 
<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>ch</em>&nbsp;</td><td>An audio filter chain</td></tr>
  </table>
</dl>
Set the internal state as if no sample has been processed since last init 
</div>
</div><p>
<a class="anchor" name="g8335aa715086ffe5fddc9a76640e9705"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_create" ref="g8335aa715086ffe5fddc9a76640e9705" args="(const bg_gavl_video_options_t *opt, bg_plugin_registry_t *plugin_reg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a>* bg_video_filter_chain_create           </td>
          <td>(</td>
          <td class="paramtype">const bg_gavl_video_options_t *&nbsp;</td>
          <td class="paramname"> <em>opt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__plugin__registry.html#g7470a35f2437f3fbc9762587d3fe7142">bg_plugin_registry_t</a> *&nbsp;</td>
          <td class="paramname"> <em>plugin_reg</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 a video filter chain. 
<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>opt</em>&nbsp;</td><td>Conversion options </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>plugin_reg</em>&nbsp;</td><td>A plugin registry</td></tr>
  </table>
</dl>
The conversion options should be valid for the whole lifetime of the filter chain. 
</div>
</div><p>
<a class="anchor" name="g7629731879074271526909d96319f77b"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_get_parameters" ref="g7629731879074271526909d96319f77b" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structbg__parameter__info__s.html">bg_parameter_info_t</a>* bg_video_filter_chain_get_parameters           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return 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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A NULL terminated array of parameter descriptions</dd></dl>
Usually, there will be a parameter of type BG_PARAMETER_MULTI_CHAIN, which includes all installed filters and their respective parameters. 
</div>
</div><p>
<a class="anchor" name="ge564dadf5ef2f41b284983b737bf68db"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_set_parameter" ref="ge564dadf5ef2f41b284983b737bf68db" args="(void *data, const char *name, const bg_parameter_value_t *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_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>val</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 a parameter for a video chain. 
<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>A video converter as void* </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Value</td></tr>
  </table>
</dl>
In some cases the filter chain must be rebuilt after setting a parameter. The application should therefore call <a class="el" href="group__filter__chain.html#gb67fd069263093f26ead8cae427a2487">bg_video_filter_chain_need_rebuild</a> and call <a class="el" href="group__filter__chain.html#ge85118a8e7733dabbfc331f09d84047e">bg_video_filter_chain_init</a> if necessary. 
</div>
</div><p>
<a class="anchor" name="gb67fd069263093f26ead8cae427a2487"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_need_rebuild" ref="gb67fd069263093f26ead8cae427a2487" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_video_filter_chain_need_rebuild           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if a video filter chain needs to be rebuilt. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the chain must be rebuilt, 0 else</dd></dl>
If this returns true, you should call <a class="el" href="group__filter__chain.html#gc7882a80aa4a2f29374999d8bd916cc5">bg_video_filter_chain_rebuild</a> or <a class="el" href="group__filter__chain.html#ge85118a8e7733dabbfc331f09d84047e">bg_video_filter_chain_init</a>. It's usually used after <a class="el" href="group__filter__chain.html#ge564dadf5ef2f41b284983b737bf68db">bg_video_filter_chain_set_parameter</a>. 
</div>
</div><p>
<a class="anchor" name="ga7b0f5f1785882f9c3f388ccb56c15b3"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_need_restart" ref="ga7b0f5f1785882f9c3f388ccb56c15b3" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_video_filter_chain_need_restart           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if a video filter chain needs to be restarted. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the chain must be restarted, 0 else</dd></dl>
If this returns true, you should call <a class="el" href="group__filter__chain.html#ge85118a8e7733dabbfc331f09d84047e">bg_video_filter_chain_init</a>. It's usually used after <a class="el" href="group__filter__chain.html#ge564dadf5ef2f41b284983b737bf68db">bg_video_filter_chain_set_parameter</a>. 
</div>
</div><p>
<a class="anchor" name="gc7882a80aa4a2f29374999d8bd916cc5"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_rebuild" ref="gc7882a80aa4a2f29374999d8bd916cc5" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_rebuild           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Rebuild a video chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="gdb3b8cb378b3049c566245a1eebeec62"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_connect_input" ref="gdb3b8cb378b3049c566245a1eebeec62" args="(bg_video_filter_chain_t *ch, bg_read_video_func_t func, void *priv, int stream)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_connect_input           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__plugin.html#gdc25c1f00af83f18062dcf72af04374d">bg_read_video_func_t</a>&nbsp;</td>
          <td class="paramname"> <em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>priv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>stream</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 input callback of a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>The function to call </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>priv</em>&nbsp;</td><td>The private handle to pass to func </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stream</em>&nbsp;</td><td>The stream argument to pass to func</td></tr>
  </table>
</dl>
This function must be called *before* bg_video_filter_chain_init. 
</div>
</div><p>
<a class="anchor" name="ge85118a8e7733dabbfc331f09d84047e"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_init" ref="ge85118a8e7733dabbfc331f09d84047e" args="(bg_video_filter_chain_t *ch, const gavl_video_format_t *in_format, gavl_video_format_t *out_format)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_video_filter_chain_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__video__format__s.html">gavl_video_format_t</a> *&nbsp;</td>
          <td class="paramname"> <em>in_format</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//structgavl__video__format__s.html">gavl_video_format_t</a> *&nbsp;</td>
          <td class="paramname"> <em>out_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>
Initialize a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in_format</em>&nbsp;</td><td>Input format </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>out_format</em>&nbsp;</td><td>Returns the output format </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="gf71adaf902033b82a61388000920f98e"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_set_out_format" ref="gf71adaf902033b82a61388000920f98e" args="(bg_video_filter_chain_t *ch, const gavl_video_format_t *out_format)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_video_filter_chain_set_out_format           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="gavl.tags:http://gmerlin.sourceforge.net/doc/gavl//" href="http://gmerlin.sourceforge.net/doc/gavl//structgavl__video__format__s.html">gavl_video_format_t</a> *&nbsp;</td>
          <td class="paramname"> <em>out_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>
Set output format of a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>out_format</em>&nbsp;</td><td>Output format</td></tr>
  </table>
</dl>
This function initializes a final video converter at the output for delivering the desired format. 
</div>
</div><p>
<a class="anchor" name="gc7c1fa919cebe20fc133b6804628e446"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_read" ref="gc7c1fa919cebe20fc133b6804628e446" args="(void *priv, gavl_video_frame_t *frame, int stream)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int bg_video_filter_chain_read           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>priv</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//structgavl__video__frame__s.html">gavl_video_frame_t</a> *&nbsp;</td>
          <td class="paramname"> <em>frame</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>stream</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a video frame from a video filter chain. 
<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>priv</em>&nbsp;</td><td>A video filter chain </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frame</em>&nbsp;</td><td>A video frame </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stream</em>&nbsp;</td><td>Stream number (must be 0) </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if a frame was read, 0 means EOF. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8fcb9dffbb124f089d273b1d97ec1d67"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_destroy" ref="g8fcb9dffbb124f089d273b1d97ec1d67" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_destroy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g6c04426482a7d960c69e5adab855ed33"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_lock" ref="g6c04426482a7d960c69e5adab855ed33" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_lock           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain</td></tr>
  </table>
</dl>
In multithreaded enviroments, you must lock the chain for calls to <a class="el" href="group__filter__chain.html#ge564dadf5ef2f41b284983b737bf68db">bg_video_filter_chain_set_parameter</a> and <a class="el" href="group__filter__chain.html#gc7c1fa919cebe20fc133b6804628e446">bg_video_filter_chain_read</a>. 
</div>
</div><p>
<a class="anchor" name="g9a5aa385017e1c18ba111d76f1736870"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_unlock" ref="g9a5aa385017e1c18ba111d76f1736870" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_unlock           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unlock a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain</td></tr>
  </table>
</dl>
In multithreaded enviroments, you must lock the chain for calls to <a class="el" href="group__filter__chain.html#ge564dadf5ef2f41b284983b737bf68db">bg_video_filter_chain_set_parameter</a> and <a class="el" href="group__filter__chain.html#gc7c1fa919cebe20fc133b6804628e446">bg_video_filter_chain_read</a>. 
</div>
</div><p>
<a class="anchor" name="ga3c49573b2cc0b5f768e3937fffb6a00"></a><!-- doxytag: member="filters.h::bg_video_filter_chain_reset" ref="ga3c49573b2cc0b5f768e3937fffb6a00" args="(bg_video_filter_chain_t *ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_video_filter_chain_reset           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__filter__chain.html#gc07ef15450d30eb73d4c25c08047a61b">bg_video_filter_chain_t</a> *&nbsp;</td>
          <td class="paramname"> <em>ch</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reset a video filter chain. 
<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>ch</em>&nbsp;</td><td>A video filter chain</td></tr>
  </table>
</dl>
Set the internal state as if no sample has been processed since last init 
</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>