<!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 Source File</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</h1><a href="input__plugin_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* input_plugin.h - Use this to write input plugins</span> 00002 <span class="comment"> * Copyright (C) 1999-2002 Andy Lo A Foe <andy@alsaplayer.org></span> 00003 <span class="comment"> *</span> 00004 <span class="comment"> * This program is free software; you can redistribute it and/or modify</span> 00005 <span class="comment"> * it under the terms of the GNU General Public License as published by</span> 00006 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span> 00007 <span class="comment"> * (at your option) any later version.</span> 00008 <span class="comment"> *</span> 00009 <span class="comment"> * This program is distributed in the hope that it will be useful,</span> 00010 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span> 00011 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span> 00012 <span class="comment"> * GNU General Public License for more details.</span> 00013 <span class="comment"> *</span> 00014 <span class="comment"> * You should have received a copy of the GNU General Public License</span> 00015 <span class="comment"> * along with this program; if not, write to the Free Software</span> 00016 <span class="comment"> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span> 00017 <span class="comment"> *</span> 00018 <span class="comment"> *</span> 00019 <span class="comment"> * $Id: input_plugin.h,v 1.15 2003/05/16 19:50:34 adnans Exp $</span> 00020 <span class="comment"> * </span> 00021 <span class="comment"> */</span> 00022 00023 <span class="preprocessor">#ifndef __input_plugin_h__</span> 00024 <span class="preprocessor"></span><span class="preprocessor">#define __input_plugin_h__</span> 00025 <span class="preprocessor"></span> 00026 <span class="preprocessor">#include <pthread.h></span> 00027 <a name="l00031"></a><a class="code" href="input__plugin_8h.html#a0">00031</a> <span class="preprocessor">#define P_SEEK 1</span> 00032 <span class="preprocessor"></span> <a name="l00036"></a><a class="code" href="input__plugin_8h.html#a1">00036</a> <span class="preprocessor">#define P_PERFECTSEEK 2</span> 00037 <span class="preprocessor"></span> <a name="l00041"></a><a class="code" href="input__plugin_8h.html#a2">00041</a> <span class="preprocessor">#define P_REENTRANT 4</span> 00042 <span class="preprocessor"></span> <a name="l00046"></a><a class="code" href="input__plugin_8h.html#a3">00046</a> <span class="preprocessor">#define P_FILEBASED 8</span> 00047 <span class="preprocessor"></span> <a name="l00051"></a><a class="code" href="input__plugin_8h.html#a4">00051</a> <span class="preprocessor">#define P_STREAMBASED 16</span> 00052 <span class="preprocessor"></span> <a name="l00056"></a><a class="code" href="input__plugin_8h.html#a5">00056</a> <span class="preprocessor">#define P_BUFFERING 32</span> 00057 <span class="preprocessor"></span> 00058 <span class="comment">/*</span> 00059 <span class="comment"> * Format of version number is 0x1000 + version</span> 00060 <span class="comment"> * So 0x1001 is *binary* format version 1</span> 00061 <span class="comment"> * THE VERSION NUMBER IS *NOT* A USER SERVICABLE PART!</span> 00062 <span class="comment"> */</span> 00063 <a name="l00067"></a><a class="code" href="input__plugin_8h.html#a6">00067</a> <span class="preprocessor">#define INPUT_PLUGIN_BASE_VERSION 0x1000</span> 00068 <span class="preprocessor"></span> <a name="l00074"></a><a class="code" href="input__plugin_8h.html#a7">00074</a> <span class="preprocessor">#define INPUT_PLUGIN_VERSION (INPUT_PLUGIN_BASE_VERSION + 16)</span> 00075 <span class="preprocessor"></span> <a name="l00081"></a><a class="code" href="struct__input__object.html">00081</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__input__object.html">_input_object</a> 00082 { <a name="l00087"></a><a class="code" href="struct__input__object.html#o0">00087</a> <span class="keywordtype">int</span> <a class="code" href="struct__input__object.html#o0">ready</a>; <a name="l00092"></a><a class="code" href="struct__input__object.html#o1">00092</a> <span class="keywordtype">int</span> <a class="code" href="struct__input__object.html#o1">flags</a>; <a name="l00097"></a><a class="code" href="struct__input__object.html#o2">00097</a> <span class="keywordtype">int</span> <a class="code" href="struct__input__object.html#o2">nr_frames</a>; <a name="l00102"></a><a class="code" href="struct__input__object.html#o3">00102</a> <span class="keywordtype">int</span> <a class="code" href="struct__input__object.html#o3">nr_tracks</a>; <a name="l00107"></a><a class="code" href="struct__input__object.html#o4">00107</a> <span class="keywordtype">int</span> <a class="code" href="struct__input__object.html#o4">nr_channels</a>; <a name="l00112"></a><a class="code" href="struct__input__object.html#o5">00112</a> <span class="keywordtype">int</span> <a class="code" href="struct__input__object.html#o5">frame_size</a>; <a name="l00116"></a><a class="code" href="struct__input__object.html#o6">00116</a> <span class="keywordtype">void</span> *<a class="code" href="struct__input__object.html#o6">local_data</a>; <a name="l00121"></a><a class="code" href="struct__input__object.html#o7">00121</a> pthread_mutex_t <a class="code" href="struct__input__object.html#o7">object_mutex</a>; 00122 } <a class="code" href="struct__input__object.html">input_object</a>; 00123 00124 <a name="l00129"></a><a class="code" href="struct__stream__info.html">00129</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__stream__info.html">_stream_info</a> 00130 { <a name="l00135"></a><a class="code" href="struct__stream__info.html#o0">00135</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o0">stream_type</a>[128]; <a name="l00139"></a><a class="code" href="struct__stream__info.html#o1">00139</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o1">artist</a>[128]; <a name="l00143"></a><a class="code" href="struct__stream__info.html#o2">00143</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o2">title</a>[128]; <a name="l00147"></a><a class="code" href="struct__stream__info.html#o3">00147</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o3">album</a>[128]; <a name="l00151"></a><a class="code" href="struct__stream__info.html#o4">00151</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o4">genre</a>[128]; <a name="l00155"></a><a class="code" href="struct__stream__info.html#o5">00155</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o5">year</a>[10]; <a name="l00159"></a><a class="code" href="struct__stream__info.html#o6">00159</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o6">track</a>[10]; <a name="l00163"></a><a class="code" href="struct__stream__info.html#o7">00163</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o7">comment</a>[128]; <a name="l00169"></a><a class="code" href="struct__stream__info.html#o8">00169</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o8">status</a>[32]; <a name="l00173"></a><a class="code" href="struct__stream__info.html#o9">00173</a> <span class="keywordtype">char</span> <a class="code" href="struct__stream__info.html#o9">path</a>[1024]; <a name="l00177"></a><a class="code" href="struct__stream__info.html#o10">00177</a> <span class="keywordtype">int</span> <a class="code" href="struct__stream__info.html#o10">channels</a>; <a name="l00181"></a><a class="code" href="struct__stream__info.html#o11">00181</a> <span class="keywordtype">int</span> <a class="code" href="struct__stream__info.html#o11">tracks</a>; <a name="l00185"></a><a class="code" href="struct__stream__info.html#o12">00185</a> <span class="keywordtype">int</span> <a class="code" href="struct__stream__info.html#o12">current_track</a>; <a name="l00189"></a><a class="code" href="struct__stream__info.html#o13">00189</a> <span class="keywordtype">int</span> <a class="code" href="struct__stream__info.html#o13">sample_rate</a>; <a name="l00193"></a><a class="code" href="struct__stream__info.html#o14">00193</a> <span class="keywordtype">int</span> <a class="code" href="struct__stream__info.html#o14">bitrate</a>; 00194 } <a class="code" href="struct__stream__info.html">stream_info</a>; 00195 <a name="l00199"></a><a class="code" href="input__plugin_8h.html#a10">00199</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="input__plugin_8h.html#a10">input_version_type</a>; 00200 <a name="l00204"></a><a class="code" href="input__plugin_8h.html#a11">00204</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="input__plugin_8h.html#a11">input_flags_type</a>; 00205 <a name="l00209"></a><a class="code" href="input__plugin_8h.html#a12">00209</a> <span class="keyword">typedef</span> int(*input_init_type)(<span class="keywordtype">void</span>); 00210 <a name="l00214"></a><a class="code" href="input__plugin_8h.html#a13">00214</a> <span class="keyword">typedef</span> void(*input_shutdown_type)(<span class="keywordtype">void</span>); 00215 <a name="l00219"></a><a class="code" href="input__plugin_8h.html#a14">00219</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* <a class="code" href="input__plugin_8h.html#a14">input_plugin_handle_type</a>; 00220 <a name="l00229"></a><a class="code" href="input__plugin_8h.html#a15">00229</a> <span class="keyword">typedef</span> float(*input_can_handle_type)(<span class="keyword">const</span> <span class="keywordtype">char</span> *path); 00230 <a name="l00236"></a><a class="code" href="input__plugin_8h.html#a16">00236</a> <span class="keyword">typedef</span> int(*input_open_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj, <span class="keyword">const</span> <span class="keywordtype">char</span> *path); 00237 <a name="l00242"></a><a class="code" href="input__plugin_8h.html#a17">00242</a> <span class="keyword">typedef</span> void(*input_close_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj); 00243 <a name="l00252"></a><a class="code" href="input__plugin_8h.html#a18">00252</a> <span class="keyword">typedef</span> int(*input_play_frame_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj, <span class="keywordtype">char</span> *buffer); 00253 <a name="l00260"></a><a class="code" href="input__plugin_8h.html#a19">00260</a> <span class="keyword">typedef</span> int(*input_frame_seek_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj, <span class="keywordtype">int</span> frame); 00261 <a name="l00267"></a><a class="code" href="input__plugin_8h.html#a20">00267</a> <span class="keyword">typedef</span> int(*input_frame_size_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj); 00268 <a name="l00273"></a><a class="code" href="input__plugin_8h.html#a21">00273</a> <span class="keyword">typedef</span> int(*input_nr_frames_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj); 00274 <a name="l00282"></a><a class="code" href="input__plugin_8h.html#a22">00282</a> <span class="keyword">typedef</span> long(*input_frame_to_sec_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj ,<span class="keywordtype">int</span> frame); 00283 <a name="l00289"></a><a class="code" href="input__plugin_8h.html#a23">00289</a> <span class="keyword">typedef</span> int(*input_sample_rate_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj); 00290 <a name="l00296"></a><a class="code" href="input__plugin_8h.html#a24">00296</a> <span class="keyword">typedef</span> int(*input_channels_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj); 00297 <a name="l00305"></a><a class="code" href="input__plugin_8h.html#a25">00305</a> <span class="keyword">typedef</span> int(*input_stream_info_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj,<a class="code" href="struct__stream__info.html">stream_info</a> *info); 00306 <a name="l00311"></a><a class="code" href="input__plugin_8h.html#a26">00311</a> <span class="keyword">typedef</span> int(*input_nr_tracks_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj); 00312 00313 <span class="comment">/* @param obj input object</span> 00314 <span class="comment"> * @param track track to seek to</span> 00315 <span class="comment"> * </span> 00316 <span class="comment"> * Seek to a track. Optional</span> 00317 <span class="comment"> */</span> <a name="l00318"></a><a class="code" href="input__plugin_8h.html#a27">00318</a> <span class="keyword">typedef</span> int(*input_track_seek_type)(<a class="code" href="struct__input__object.html">input_object</a> *obj, <span class="keywordtype">int</span> track); 00319 00320 <a name="l00321"></a><a class="code" href="struct__input__plugin.html">00321</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__input__plugin.html">_input_plugin</a> 00322 { <a name="l00326"></a><a class="code" href="struct__input__plugin.html#o0">00326</a> <a class="code" href="input__plugin_8h.html#a10">input_version_type</a> <a class="code" href="struct__input__plugin.html#o0">version</a>; <a name="l00330"></a><a class="code" href="struct__input__plugin.html#o1">00330</a> <a class="code" href="input__plugin_8h.html#a11">input_flags_type</a> <a class="code" href="struct__input__plugin.html#o1">flags</a>; <a name="l00334"></a><a class="code" href="struct__input__plugin.html#o2">00334</a> <span class="keywordtype">char</span> *<a class="code" href="struct__input__plugin.html#o2">name</a>; <a name="l00339"></a><a class="code" href="struct__input__plugin.html#o3">00339</a> <span class="keywordtype">char</span> *<a class="code" href="struct__input__plugin.html#o3">author</a>; <a name="l00343"></a><a class="code" href="struct__input__plugin.html#o4">00343</a> <span class="keywordtype">void</span> *<a class="code" href="struct__input__plugin.html#o4">handle</a>; <a name="l00344"></a><a class="code" href="struct__input__plugin.html#o5">00344</a> <a class="code" href="input__plugin_8h.html#a12">input_init_type</a> <a class="code" href="struct__input__plugin.html#o5">init</a>; <a name="l00345"></a><a class="code" href="struct__input__plugin.html#o6">00345</a> <a class="code" href="input__plugin_8h.html#a13">input_shutdown_type</a> <a class="code" href="struct__input__plugin.html#o6">shutdown</a>; <a name="l00346"></a><a class="code" href="struct__input__plugin.html#o7">00346</a> <a class="code" href="input__plugin_8h.html#a14">input_plugin_handle_type</a> <a class="code" href="struct__input__plugin.html#o7">plugin_handle</a>; <a name="l00347"></a><a class="code" href="struct__input__plugin.html#o8">00347</a> <a class="code" href="input__plugin_8h.html#a15">input_can_handle_type</a> <a class="code" href="struct__input__plugin.html#o8">can_handle</a>; <a name="l00348"></a><a class="code" href="struct__input__plugin.html#o9">00348</a> <a class="code" href="input__plugin_8h.html#a16">input_open_type</a> <a class="code" href="struct__input__plugin.html#o9">open</a>; <a name="l00349"></a><a class="code" href="struct__input__plugin.html#o10">00349</a> <a class="code" href="input__plugin_8h.html#a17">input_close_type</a> <a class="code" href="struct__input__plugin.html#o10">close</a>; <a name="l00350"></a><a class="code" href="struct__input__plugin.html#o11">00350</a> <a class="code" href="input__plugin_8h.html#a18">input_play_frame_type</a> <a class="code" href="struct__input__plugin.html#o11">play_frame</a>; <a name="l00351"></a><a class="code" href="struct__input__plugin.html#o12">00351</a> <a class="code" href="input__plugin_8h.html#a19">input_frame_seek_type</a> <a class="code" href="struct__input__plugin.html#o12">frame_seek</a>; <a name="l00352"></a><a class="code" href="struct__input__plugin.html#o13">00352</a> <a class="code" href="input__plugin_8h.html#a20">input_frame_size_type</a> <a class="code" href="struct__input__plugin.html#o13">frame_size</a>; <a name="l00353"></a><a class="code" href="struct__input__plugin.html#o14">00353</a> <a class="code" href="input__plugin_8h.html#a21">input_nr_frames_type</a> <a class="code" href="struct__input__plugin.html#o14">nr_frames</a>; <a name="l00354"></a><a class="code" href="struct__input__plugin.html#o15">00354</a> <a class="code" href="input__plugin_8h.html#a22">input_frame_to_sec_type</a> <a class="code" href="struct__input__plugin.html#o15">frame_to_sec</a>; <a name="l00355"></a><a class="code" href="struct__input__plugin.html#o16">00355</a> <a class="code" href="input__plugin_8h.html#a23">input_sample_rate_type</a> <a class="code" href="struct__input__plugin.html#o16">sample_rate</a>; <a name="l00356"></a><a class="code" href="struct__input__plugin.html#o17">00356</a> <a class="code" href="input__plugin_8h.html#a24">input_channels_type</a> <a class="code" href="struct__input__plugin.html#o17">channels</a>; <a name="l00357"></a><a class="code" href="struct__input__plugin.html#o18">00357</a> <a class="code" href="input__plugin_8h.html#a25">input_stream_info_type</a> <a class="code" href="struct__stream__info.html">stream_info</a>; <a name="l00358"></a><a class="code" href="struct__input__plugin.html#o19">00358</a> <a class="code" href="input__plugin_8h.html#a26">input_nr_tracks_type</a> <a class="code" href="struct__input__plugin.html#o19">nr_tracks</a>; <a name="l00359"></a><a class="code" href="struct__input__plugin.html#o20">00359</a> <a class="code" href="input__plugin_8h.html#a27">input_track_seek_type</a> <a class="code" href="struct__input__plugin.html#o20">track_seek</a>; 00360 } <a class="code" href="struct__input__plugin.html">input_plugin</a>; 00361 <a name="l00369"></a><a class="code" href="input__plugin_8h.html#a29">00369</a> <span class="keyword">typedef</span> <a class="code" href="struct__input__plugin.html">input_plugin</a>*(*input_plugin_info_type)(<span class="keywordtype">void</span>); 00370 00371 <span class="preprocessor">#endif</span> </pre></div><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>