<!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 Page</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div> <h1>input_plugin.h File Reference</h1><code>#include <pthread.h></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 </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 </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 </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 </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a0">P_SEEK</a> 1</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a1">P_PERFECTSEEK</a> 2</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a2">P_REENTRANT</a> 4</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a3">P_FILEBASED</a> 8</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a4">P_STREAMBASED</a> 16</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a5">P_BUFFERING</a> 32</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a6">INPUT_PLUGIN_BASE_VERSION</a> 0x1000</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="input__plugin_8h.html#a7">INPUT_PLUGIN_VERSION</a> (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> </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> </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 </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 </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(* </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(* </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 * </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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(* </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> </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> *(* </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 0x1000 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 (INPUT_PLUGIN_BASE_VERSION + 16) </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 32 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 8 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 2 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 4 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 1 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 16 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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> </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> </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> </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> </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> </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> </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> </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> </td><td>input object </td></tr> <tr><td valign=top><em>frame</em> </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> </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> </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> </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> </td><td>input object </td></tr> <tr><td valign=top><em>frame</em> </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> </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> </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> </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> </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> </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> </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> </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> </td><td>input object </td></tr> <tr><td valign=top><em>path</em> </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> </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> </td><td>input object </td></tr> <tr><td valign=top><em>buffer</em> </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> </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> </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> </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> </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> </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> </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> </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> </td><td>input object </td></tr> <tr><td valign=top><em>info</em> </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> </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> </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> </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>