Sophie

Sophie

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

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 Source File</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</h1><a href="input__plugin_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">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 &lt;andy@alsaplayer.org&gt;</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 &lt;pthread.h&gt;</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> ready;
<a name="l00092"></a><a class="code" href="struct__input__object.html#o1">00092</a>         <span class="keywordtype">int</span> flags;
<a name="l00097"></a><a class="code" href="struct__input__object.html#o2">00097</a>         <span class="keywordtype">int</span> nr_frames;
<a name="l00102"></a><a class="code" href="struct__input__object.html#o3">00102</a>         <span class="keywordtype">int</span> nr_tracks;
<a name="l00107"></a><a class="code" href="struct__input__object.html#o4">00107</a>         <span class="keywordtype">int</span> nr_channels;
<a name="l00112"></a><a class="code" href="struct__input__object.html#o5">00112</a>         <span class="keywordtype">int</span> frame_size;
<a name="l00116"></a><a class="code" href="struct__input__object.html#o6">00116</a>         <span class="keywordtype">void</span> *local_data;
<a name="l00121"></a><a class="code" href="struct__input__object.html#o7">00121</a>         pthread_mutex_t object_mutex;
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>    stream_type[128];
<a name="l00139"></a><a class="code" href="struct__stream__info.html#o1">00139</a>         <span class="keywordtype">char</span>    artist[128];
<a name="l00143"></a><a class="code" href="struct__stream__info.html#o2">00143</a>         <span class="keywordtype">char</span>    title[128];
<a name="l00147"></a><a class="code" href="struct__stream__info.html#o3">00147</a>         <span class="keywordtype">char</span>    album[128];
<a name="l00151"></a><a class="code" href="struct__stream__info.html#o4">00151</a>         <span class="keywordtype">char</span>    genre[128];
<a name="l00155"></a><a class="code" href="struct__stream__info.html#o5">00155</a>         <span class="keywordtype">char</span>    year[10];
<a name="l00159"></a><a class="code" href="struct__stream__info.html#o6">00159</a>         <span class="keywordtype">char</span>    track[10];
<a name="l00163"></a><a class="code" href="struct__stream__info.html#o7">00163</a>         <span class="keywordtype">char</span>    comment[128];
<a name="l00169"></a><a class="code" href="struct__stream__info.html#o8">00169</a>         <span class="keywordtype">char</span>    status[32];
<a name="l00173"></a><a class="code" href="struct__stream__info.html#o9">00173</a>         <span class="keywordtype">char</span>    path[1024];
<a name="l00177"></a><a class="code" href="struct__stream__info.html#o10">00177</a>         <span class="keywordtype">int</span>     channels;
<a name="l00181"></a><a class="code" href="struct__stream__info.html#o11">00181</a>         <span class="keywordtype">int</span>     tracks;
<a name="l00185"></a><a class="code" href="struct__stream__info.html#o12">00185</a>         <span class="keywordtype">int</span>     current_track;
<a name="l00189"></a><a class="code" href="struct__stream__info.html#o13">00189</a>         <span class="keywordtype">int</span>     sample_rate;
<a name="l00193"></a><a class="code" href="struct__stream__info.html#o14">00193</a>         <span class="keywordtype">int</span>     bitrate;
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> input_version_type;
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> input_flags_type;
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)(void);
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)(void);
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>* input_plugin_handle_type;
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> version;
<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>        flags;
<a name="l00334"></a><a class="code" href="struct__input__plugin.html#o2">00334</a>         <span class="keywordtype">char</span> *name;
<a name="l00339"></a><a class="code" href="struct__input__plugin.html#o3">00339</a>         <span class="keywordtype">char</span> *author;
<a name="l00343"></a><a class="code" href="struct__input__plugin.html#o4">00343</a>         <span class="keywordtype">void</span> *handle;
<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> init;
<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> shutdown;
<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> plugin_handle;
<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> can_handle;
<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> open;
<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> close;
<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> play_frame;
<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> frame_seek;
<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> frame_size;
<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> nr_frames;
<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> frame_to_sec;
<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> sample_rate;
<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> channels;
<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> nr_tracks;
<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> track_seek;
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)(void);
00370 
00371 <span class="preprocessor">#endif</span>
</pre></div><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>