<!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 Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data 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 </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"> </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 </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"> </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> * </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"> </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> * </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"> </td><td class="mdescRight">Return parameters. <a href="#g74ba2dbde5ef5738f4e4222fda7939b1"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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> * </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"> </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> * </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"> </td><td class="mdescRight">Return parameters. <a href="#g7629731879074271526909d96319f77b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 * </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> * </td> <td class="paramname"> <em>plugin_reg</em></td><td> </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> </td><td>Conversion options </td></tr> <tr><td valign="top"></td><td valign="top"><em>plugin_reg</em> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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 * </td> <td class="paramname"> <em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </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> * </td> <td class="paramname"> <em>val</em></td><td> </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> </td><td>An audio converter as void* </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name </td></tr> <tr><td valign="top"></td><td valign="top"><em>val</em> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </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> </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>priv</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>stream</em></td><td> </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> </td><td>An audio filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>The function to call </td></tr> <tr><td valign="top"></td><td valign="top"><em>priv</em> </td><td>The private handle to pass to func </td></tr> <tr><td valign="top"></td><td valign="top"><em>stream</em> </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> * </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> * </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> * </td> <td class="paramname"> <em>out_format</em></td><td> </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> </td><td>An audio filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>in_format</em> </td><td>Input format </td></tr> <tr><td valign="top"></td><td valign="top"><em>out_format</em> </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> * </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> * </td> <td class="paramname"> <em>out_format</em></td><td> </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> </td><td>An audio filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>out_format</em> </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 * </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> * </td> <td class="paramname"> <em>frame</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>stream</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>num_samples</em></td><td> </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> </td><td>An audio filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>frame</em> </td><td>An audio frame </td></tr> <tr><td valign="top"></td><td valign="top"><em>stream</em> </td><td>Stream number (must be 0) </td></tr> <tr><td valign="top"></td><td valign="top"><em>num_samples</em> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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 * </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> * </td> <td class="paramname"> <em>plugin_reg</em></td><td> </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> </td><td>Conversion options </td></tr> <tr><td valign="top"></td><td valign="top"><em>plugin_reg</em> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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 * </td> <td class="paramname"> <em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </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> * </td> <td class="paramname"> <em>val</em></td><td> </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> </td><td>A video converter as void* </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name </td></tr> <tr><td valign="top"></td><td valign="top"><em>val</em> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </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> </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>priv</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>stream</em></td><td> </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> </td><td>A video filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>The function to call </td></tr> <tr><td valign="top"></td><td valign="top"><em>priv</em> </td><td>The private handle to pass to func </td></tr> <tr><td valign="top"></td><td valign="top"><em>stream</em> </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> * </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> * </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> * </td> <td class="paramname"> <em>out_format</em></td><td> </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> </td><td>A video filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>in_format</em> </td><td>Input format </td></tr> <tr><td valign="top"></td><td valign="top"><em>out_format</em> </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> * </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> * </td> <td class="paramname"> <em>out_format</em></td><td> </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> </td><td>A video filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>out_format</em> </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 * </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> * </td> <td class="paramname"> <em>frame</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>stream</em></td><td> </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> </td><td>A video filter chain </td></tr> <tr><td valign="top"></td><td valign="top"><em>frame</em> </td><td>A video frame </td></tr> <tr><td valign="top"></td><td valign="top"><em>stream</em> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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> * </td> <td class="paramname"> <em>ch</em> </td> <td> ) </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> </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 <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>