Sophie

Sophie

distrib > Mandriva > 10.0 > i586 > media > contrib > by-pkgid > ee4a7182a6d70d64df9a11c9b8f8200f > files > 35

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 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.3 -->
<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="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>
<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__input__plugin.html">_input_plugin</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 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 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
      </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 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)
      </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 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
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set minimal buffer     </td>
  </tr>
</table>
<a 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
      </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 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
      </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 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
      </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 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
      </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 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
      </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 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)
      </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><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 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)
      </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><em>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns number of channels in the stream     </td>
  </tr>
</table>
<a 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)
      </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><em>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Close stream     </td>
  </tr>
</table>
<a 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>
      </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 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)
      </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><em>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign=top><em>frame</em>&nbsp;</td><td>Seek to a specific frame number </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a 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)
      </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><em>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns the frame size in bytes     </td>
  </tr>
</table>
<a 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)
      </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><em>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><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 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)
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Init plugin     </td>
  </tr>
</table>
<a 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)
      </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><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 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)
      </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><em>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Return number of tracks. Optional     </td>
  </tr>
</table>
<a 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>
      </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 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)
      </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><em>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><td valign=top><em>path</em>&nbsp;</td><td>path of stream to open</td></tr>
  </table>
</dl>
Open stream     </td>
  </tr>
</table>
<a 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)
      </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><em>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><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 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>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a 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>
      </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 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)
      </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 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)
      </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><em>obj</em>&nbsp;</td><td>input object</td></tr>
  </table>
</dl>
Returns the sample rate of the stream     </td>
  </tr>
</table>
<a 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)
      </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 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)
      </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><em>obj</em>&nbsp;</td><td>input object </td></tr>
    <tr><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 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)
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a 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>
      </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 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>
      </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 Tue Dec 9 10:09:56 2003 for AlsaPlayer by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
</a>1.3.3 </small></address>
</body>
</html>