Sophie

Sophie

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

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: Fifos</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>Fifos</h1>Thread save fifo buffers for A/V data.  
<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 bg_fifo_s&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opaque fifo handle.  <a href="#g7524aee1c9f572f8955a8de1d59f6c37"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__fifo.html#gg4a6659e7cfd5c8abb62d2768f0bc651be973fd335ae5aa1341d9c7a39b054430">BG_FIFO_PLAYING</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__fifo.html#gg4a6659e7cfd5c8abb62d2768f0bc651b50e2ca3971ba09207c3d9e62a9c92865">BG_FIFO_STOPPED</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__fifo.html#gg4a6659e7cfd5c8abb62d2768f0bc651b62ade539871193f8c5c72ba42372f145">BG_FIFO_PAUSED</a>
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Operation states a fifo can have.  <a href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">More...</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__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__fifo.html#g44ad04053681c287a8046c5fad1b2034">bg_fifo_create</a> (int num_frames, void *(*create_func)(void *), void *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a fifo.  <a href="#g44ad04053681c287a8046c5fad1b2034"></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__fifo.html#g49d1b8093ca5871fc8827cf6a4f41b5b">bg_fifo_destroy</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, void(*destroy_func)(void *, void *), void *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a fifo.  <a href="#g49d1b8093ca5871fc8827cf6a4f41b5b"></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__fifo.html#g0c80b748b347c1526b3430892b2c8bd8">bg_fifo_lock_read</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, <a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *state)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock a fifo for reading.  <a href="#g0c80b748b347c1526b3430892b2c8bd8"></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__fifo.html#gbf6d549197d585b6cf3795b54a5442f4">bg_fifo_try_lock_read</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, <a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *state)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock a fifo for reading (nonblocking).  <a href="#gbf6d549197d585b6cf3795b54a5442f4"></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__fifo.html#g4adc8b7366380d102f53dbb7ed0f5ec7">bg_fifo_unlock_read</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock a fifo for reading.  <a href="#g4adc8b7366380d102f53dbb7ed0f5ec7"></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__fifo.html#g8bc922175903c4f5639907757fe3b86b">bg_fifo_lock_write</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, <a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *state)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock a fifo for writing.  <a href="#g8bc922175903c4f5639907757fe3b86b"></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__fifo.html#g7b457c5ba2c123e76855c93093ad1ebe">bg_fifo_try_lock_write</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, <a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *state)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock a fifo for writing (nonblocking).  <a href="#g7b457c5ba2c123e76855c93093ad1ebe"></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__fifo.html#gb2b45e2e530aa2debbf1419a3523a7bb">bg_fifo_unlock_write</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, int eof)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock a fifo for writing.  <a href="#gb2b45e2e530aa2debbf1419a3523a7bb"></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__fifo.html#g3febeed2f989cf1251b5fb27945fe086">bg_fifo_set_state</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f, <a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> state)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the state of a fifo.  <a href="#g3febeed2f989cf1251b5fb27945fe086"></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__fifo.html#g374ccba423c9c802e4ff278823b39a86">bg_fifo_clear</a> (<a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *f)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a fifo.  <a href="#g374ccba423c9c802e4ff278823b39a86"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Thread save fifo buffers for A/V data. 
<p>
Fifos are used in multithreaded realtime applications to transfer A/V frames from the source to the destination. They have a fixed number of frames.<p>
They also allow save suspension and termination of threads through the state values returned by the bg_fifo_lock_* functions. <hr><h2>Typedef Documentation</h2>
<a class="anchor" name="g7524aee1c9f572f8955a8de1d59f6c37"></a><!-- doxytag: member="fifo.h::bg_fifo_t" ref="g7524aee1c9f572f8955a8de1d59f6c37" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct bg_fifo_s <a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Opaque fifo handle. 
<p>
You don't want to know what's inside 
</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="g4a6659e7cfd5c8abb62d2768f0bc651b"></a><!-- doxytag: member="fifo.h::bg_fifo_state_t" ref="g4a6659e7cfd5c8abb62d2768f0bc651b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Operation states a fifo can have. 
<p>
<dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg4a6659e7cfd5c8abb62d2768f0bc651be973fd335ae5aa1341d9c7a39b054430"></a><!-- doxytag: member="BG_FIFO_PLAYING" ref="gg4a6659e7cfd5c8abb62d2768f0bc651be973fd335ae5aa1341d9c7a39b054430" args="" -->BG_FIFO_PLAYING</em>&nbsp;</td><td>
Normal operation. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg4a6659e7cfd5c8abb62d2768f0bc651b50e2ca3971ba09207c3d9e62a9c92865"></a><!-- doxytag: member="BG_FIFO_STOPPED" ref="gg4a6659e7cfd5c8abb62d2768f0bc651b50e2ca3971ba09207c3d9e62a9c92865" args="" -->BG_FIFO_STOPPED</em>&nbsp;</td><td>
Playback is stopped, threads should be terminated. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg4a6659e7cfd5c8abb62d2768f0bc651b62ade539871193f8c5c72ba42372f145"></a><!-- doxytag: member="BG_FIFO_PAUSED" ref="gg4a6659e7cfd5c8abb62d2768f0bc651b62ade539871193f8c5c72ba42372f145" args="" -->BG_FIFO_PAUSED</em>&nbsp;</td><td>
Playback is paused, threads should wait until playback is resumed. </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g44ad04053681c287a8046c5fad1b2034"></a><!-- doxytag: member="fifo.h::bg_fifo_create" ref="g44ad04053681c287a8046c5fad1b2034" args="(int num_frames, void *(*create_func)(void *), void *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a>* bg_fifo_create           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num_frames</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *)&nbsp;</td>
          <td class="paramname"> <em>create_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</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 fifo. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>num_frames</em>&nbsp;</td><td>Number of frames </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>create_func</em>&nbsp;</td><td>Function to be called for each created frame </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Argument for create_func </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated fifo </dd></dl>

</div>
</div><p>
<a class="anchor" name="g49d1b8093ca5871fc8827cf6a4f41b5b"></a><!-- doxytag: member="fifo.h::bg_fifo_destroy" ref="g49d1b8093ca5871fc8827cf6a4f41b5b" args="(bg_fifo_t *f, void(*destroy_func)(void *, void *), void *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_fifo_destroy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *, void *)&nbsp;</td>
          <td class="paramname"> <em>destroy_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy a fifo. 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>destroy_func</em>&nbsp;</td><td>Function to be called for each frame to destroy it </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Argument for destroy_func </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g0c80b748b347c1526b3430892b2c8bd8"></a><!-- doxytag: member="fifo.h::bg_fifo_lock_read" ref="g0c80b748b347c1526b3430892b2c8bd8" args="(bg_fifo_t *f, bg_fifo_state_t *state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* bg_fifo_lock_read           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *&nbsp;</td>
          <td class="paramname"> <em>state</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock a fifo for reading. 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>state</em>&nbsp;</td><td>If non NULL, returns the state of the fifo </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A frame or NULL</dd></dl>
This function blocks until a new frame is available 
</div>
</div><p>
<a class="anchor" name="gbf6d549197d585b6cf3795b54a5442f4"></a><!-- doxytag: member="fifo.h::bg_fifo_try_lock_read" ref="gbf6d549197d585b6cf3795b54a5442f4" args="(bg_fifo_t *f, bg_fifo_state_t *state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* bg_fifo_try_lock_read           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *&nbsp;</td>
          <td class="paramname"> <em>state</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock a fifo for reading (nonblocking). 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>state</em>&nbsp;</td><td>If non NULL, returns the state of the fifo </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A frame or NULL </dd></dl>

</div>
</div><p>
<a class="anchor" name="g4adc8b7366380d102f53dbb7ed0f5ec7"></a><!-- doxytag: member="fifo.h::bg_fifo_unlock_read" ref="g4adc8b7366380d102f53dbb7ed0f5ec7" args="(bg_fifo_t *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_fifo_unlock_read           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unlock a fifo for reading. 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g8bc922175903c4f5639907757fe3b86b"></a><!-- doxytag: member="fifo.h::bg_fifo_lock_write" ref="g8bc922175903c4f5639907757fe3b86b" args="(bg_fifo_t *f, bg_fifo_state_t *state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* bg_fifo_lock_write           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *&nbsp;</td>
          <td class="paramname"> <em>state</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock a fifo for writing. 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>state</em>&nbsp;</td><td>If non NULL, returns the state of the fifo </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A frame or NULL</dd></dl>
This function blocks until a new frame is available 
</div>
</div><p>
<a class="anchor" name="g7b457c5ba2c123e76855c93093ad1ebe"></a><!-- doxytag: member="fifo.h::bg_fifo_try_lock_write" ref="g7b457c5ba2c123e76855c93093ad1ebe" args="(bg_fifo_t *f, bg_fifo_state_t *state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* bg_fifo_try_lock_write           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a> *&nbsp;</td>
          <td class="paramname"> <em>state</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Lock a fifo for writing (nonblocking). 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>state</em>&nbsp;</td><td>If non NULL, returns the state of the fifo </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A frame or NULL </dd></dl>

</div>
</div><p>
<a class="anchor" name="gb2b45e2e530aa2debbf1419a3523a7bb"></a><!-- doxytag: member="fifo.h::bg_fifo_unlock_write" ref="gb2b45e2e530aa2debbf1419a3523a7bb" args="(bg_fifo_t *f, int eof)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_fifo_unlock_write           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>eof</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unlock a fifo for writing. 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>eof</em>&nbsp;</td><td>Set to 1 if EOF (also means, the last frame is invalid) </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g3febeed2f989cf1251b5fb27945fe086"></a><!-- doxytag: member="fifo.h::bg_fifo_set_state" ref="g3febeed2f989cf1251b5fb27945fe086" args="(bg_fifo_t *f, bg_fifo_state_t state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_fifo_set_state           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g4a6659e7cfd5c8abb62d2768f0bc651b">bg_fifo_state_t</a>&nbsp;</td>
          <td class="paramname"> <em>state</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the state of a fifo. 
<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>f</em>&nbsp;</td><td>A fifo </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>state</em>&nbsp;</td><td>The new state </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g374ccba423c9c802e4ff278823b39a86"></a><!-- doxytag: member="fifo.h::bg_fifo_clear" ref="g374ccba423c9c802e4ff278823b39a86" args="(bg_fifo_t *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_fifo_clear           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__fifo.html#g7524aee1c9f572f8955a8de1d59f6c37">bg_fifo_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clear a fifo. 
<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>f</em>&nbsp;</td><td>A fifo</td></tr>
  </table>
</dl>
This flushes the fifo but keeps all buffers. It should only be called, if there are no other threads accessing the fifo 
</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>