Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > cd2667db9dd0e54dd9cc3719d6459ef1 > files > 37

libalsaplayer0-devel-0.99.76-5mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>AlsaPlayer: input_plugin.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.9.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">alsaplayer</a></div>
<h1>input_plugin.h File Reference</h1><code>#include &lt;pthread.h&gt;</code><br>

<p>
<a href="input__plugin_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__input__object.html">_input_object</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__stream__info.html">_stream_info</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__input__plugin.html">_input_plugin</a></td></tr>

<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a0">P_SEEK</a>&nbsp;&nbsp;&nbsp;1</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a1">P_PERFECTSEEK</a>&nbsp;&nbsp;&nbsp;2</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a2">P_REENTRANT</a>&nbsp;&nbsp;&nbsp;4</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a3">P_FILEBASED</a>&nbsp;&nbsp;&nbsp;8</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a4">P_STREAMBASED</a>&nbsp;&nbsp;&nbsp;16</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a5">P_BUFFERING</a>&nbsp;&nbsp;&nbsp;32</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a6">INPUT_PLUGIN_BASE_VERSION</a>&nbsp;&nbsp;&nbsp;0x1000</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a7">INPUT_PLUGIN_VERSION</a>&nbsp;&nbsp;&nbsp;(INPUT_PLUGIN_BASE_VERSION + 16)</td></tr>

<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__input__object.html">_input_object</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a8">input_object</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__stream__info.html">_stream_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a9">stream_info</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a10">input_version_type</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a11">input_flags_type</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a12">input_init_type</a> )(void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a13">input_shutdown_type</a> )(void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a14">input_plugin_handle_type</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef float(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a15">input_can_handle_type</a> )(const char *path)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a16">input_open_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj, const char *path)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a17">input_close_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a18">input_play_frame_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj, char *buffer)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a19">input_frame_seek_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj, int frame)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a20">input_frame_size_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a21">input_nr_frames_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef long(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a22">input_frame_to_sec_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj, int frame)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a23">input_sample_rate_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a24">input_channels_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a25">input_stream_info_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj, <a class="el" href="struct__stream__info.html">stream_info</a> *info)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a26">input_nr_tracks_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a27">input_track_seek_type</a> )(<a class="el" href="struct__input__object.html">input_object</a> *obj, int track)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__input__plugin.html">_input_plugin</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a28">input_plugin</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__input__plugin.html">input_plugin</a> *(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="input__plugin_8h.html#a29">input_plugin_info_type</a> )(void)</td></tr>

</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="a6" doxytag="input_plugin.h::INPUT_PLUGIN_BASE_VERSION"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define INPUT_PLUGIN_BASE_VERSION&nbsp;&nbsp;&nbsp;0x1000          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
The base version number of the scope plugin. Set at 0x1000.     </td>
  </tr>
</table>
<a class="anchor" name="a7" doxytag="input_plugin.h::INPUT_PLUGIN_VERSION"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define INPUT_PLUGIN_VERSION&nbsp;&nbsp;&nbsp;(INPUT_PLUGIN_BASE_VERSION + 16)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
The version of the input plugin API. This should be incremented whenever structural changes are made to the API. This value should only be changed by the maintainers.     </td>
  </tr>
</table>
<a class="anchor" name="a5" doxytag="input_plugin.h::P_BUFFERING"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define P_BUFFERING&nbsp;&nbsp;&nbsp;32          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set minimal buffer     </td>
  </tr>
</table>
<a class="anchor" name="a3" doxytag="input_plugin.h::P_FILEBASED"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define P_FILEBASED&nbsp;&nbsp;&nbsp;8          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set this flag if the stream is file based (local disk file)     </td>
  </tr>
</table>
<a class="anchor" name="a1" doxytag="input_plugin.h::P_PERFECTSEEK"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define P_PERFECTSEEK&nbsp;&nbsp;&nbsp;2          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set this flag if your plugin is able to do sample accurate seeking in the stream. This is required for reverse speed playback.     </td>
  </tr>
</table>
<a class="anchor" name="a2" doxytag="input_plugin.h::P_REENTRANT"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define P_REENTRANT&nbsp;&nbsp;&nbsp;4          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set this flag if your plugin is reentrant.     </td>
  </tr>
</table>
<a class="anchor" name="a0" doxytag="input_plugin.h::P_SEEK"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define P_SEEK&nbsp;&nbsp;&nbsp;1          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set this flag if your plugin is able to seek in the stream     </td>
  </tr>
</table>
<a class="anchor" name="a4" doxytag="input_plugin.h::P_STREAMBASED"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">#define P_STREAMBASED&nbsp;&nbsp;&nbsp;16          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set this if the stream is a real stream e.g. HTTP or UDP based     </td>
  </tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="a15" doxytag="input_plugin.h::input_can_handle_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef float(* <a class="el" href="input__plugin_8h.html#a15">input_can_handle_type</a>)(const char *path)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>path</em>&nbsp;</td><td>Path to stream</td></tr>
  </table>
</dl>
Returns a rating between 0.0 and 1.0 for how well this plugin can handle the given path 1.0 = Excellent 0.0 = Huh?     </td>
  </tr>
</table>
<a class="anchor" name="a24" doxytag="input_plugin.h::input_channels_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a24">input_channels_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns number of channels in the stream     </td>
  </tr>
</table>
<a class="anchor" name="a17" doxytag="input_plugin.h::input_close_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef void(* <a class="el" href="input__plugin_8h.html#a17">input_close_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Close stream     </td>
  </tr>
</table>
<a class="anchor" name="a11" doxytag="input_plugin.h::input_flags_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int <a class="el" href="input__plugin_8h.html#a11">input_flags_type</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Capability flags for this plugin     </td>
  </tr>
</table>
<a class="anchor" name="a19" doxytag="input_plugin.h::input_frame_seek_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a19">input_frame_seek_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj, int frame)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frame</em>&nbsp;</td><td>Seek to a specific frame number </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a20" doxytag="input_plugin.h::input_frame_size_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a20">input_frame_size_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns the frame size in bytes     </td>
  </tr>
</table>
<a class="anchor" name="a22" doxytag="input_plugin.h::input_frame_to_sec_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef long(* <a class="el" href="input__plugin_8h.html#a22">input_frame_to_sec_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj,int frame)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frame</em>&nbsp;</td><td>frame number</td></tr>
  </table>
</dl>
Returns the offset from the start time in centiseconds (100th of a second) for the frame given.     </td>
  </tr>
</table>
<a class="anchor" name="a12" doxytag="input_plugin.h::input_init_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a12">input_init_type</a>)(void)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Init plugin     </td>
  </tr>
</table>
<a class="anchor" name="a21" doxytag="input_plugin.h::input_nr_frames_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a21">input_nr_frames_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns the total number of frames in the stream     </td>
  </tr>
</table>
<a class="anchor" name="a26" doxytag="input_plugin.h::input_nr_tracks_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a26">input_nr_tracks_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Return number of tracks. Optional     </td>
  </tr>
</table>
<a class="anchor" name="a8" doxytag="input_plugin.h::input_object"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__input__object.html">_input_object</a>  <a class="el" href="struct__input__object.html">input_object</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This is a structure that keeps frequently used parameters of an input instance. It also contains a pointer to any local_data that might be allocated by the plugin itself.     </td>
  </tr>
</table>
<a class="anchor" name="a16" doxytag="input_plugin.h::input_open_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a16">input_open_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj, const char *path)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>path of stream to open</td></tr>
  </table>
</dl>
Open stream     </td>
  </tr>
</table>
<a class="anchor" name="a18" doxytag="input_plugin.h::input_play_frame_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a18">input_play_frame_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj, char *buffer)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>buffer where we should write the frame to</td></tr>
  </table>
</dl>
Play/decode a single frame. This function should write exactly one frame to the buffer. If there is not enough PCM data to fill the frame it should be padded with zeros (silence).     </td>
  </tr>
</table>
<a class="anchor" name="a28" doxytag="input_plugin.h::input_plugin"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__input__plugin.html">_input_plugin</a>  <a class="el" href="struct__input__plugin.html">input_plugin</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a14" doxytag="input_plugin.h::input_plugin_handle_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef void* <a class="el" href="input__plugin_8h.html#a14">input_plugin_handle_type</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Handle for plugin. Filled in by the host     </td>
  </tr>
</table>
<a class="anchor" name="a29" doxytag="input_plugin.h::input_plugin_info_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef <a class="el" href="struct__input__plugin.html">input_plugin</a>*(* <a class="el" href="input__plugin_8h.html#a29">input_plugin_info_type</a>)(void)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Every input plugin should have an input_plugin_info() function that returns a pointer to an input_plugin structure that is set up with pointers to your implementations. If your plugin is compiled using C++ make sure you 'extern "C"' the input_plugin_info() function or else the HOST will not be able to load the plugin.     </td>
  </tr>
</table>
<a class="anchor" name="a23" doxytag="input_plugin.h::input_sample_rate_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a23">input_sample_rate_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns the sample rate of the stream     </td>
  </tr>
</table>
<a class="anchor" name="a13" doxytag="input_plugin.h::input_shutdown_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef void(* <a class="el" href="input__plugin_8h.html#a13">input_shutdown_type</a>)(void)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Prepare the plugin for removal     </td>
  </tr>
</table>
<a class="anchor" name="a25" doxytag="input_plugin.h::input_stream_info_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a25">input_stream_info_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj, <a class="el" href="struct__stream__info.html">stream_info</a> *info)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>pointer to stream_info structure</td></tr>
  </table>
</dl>
Return stream info of the current stream. You should not allocate space for the stream_info structure. The HOST will take care of that.     </td>
  </tr>
</table>
<a class="anchor" name="a27" doxytag="input_plugin.h::input_track_seek_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int(* <a class="el" href="input__plugin_8h.html#a27">input_track_seek_type</a>)(<a class="el" href="struct__input__object.html">input_object</a> *obj, int track)          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a10" doxytag="input_plugin.h::input_version_type"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef int <a class="el" href="input__plugin_8h.html#a10">input_version_type</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
input plugin binary version. Must be set to INPUT_PLUGIN_VERSION     </td>
  </tr>
</table>
<a class="anchor" name="a9" doxytag="input_plugin.h::stream_info"></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef struct <a class="el" href="struct__stream__info.html">_stream_info</a>  <a class="el" href="struct__stream__info.html">stream_info</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This structure is used to pass information about a stream/song from the plugin to the host.     </td>
  </tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Thu Mar 31 10:58:47 2005 for AlsaPlayer by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
</body>
</html>