2004-07-16 18:58:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef foopolyplibdefhfoo 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define foopolyplibdefhfoo 
 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-23 23:17:30 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* $Id$ */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/***
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  This  file  is  part  of  polypaudio . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  polypaudio  is  free  software ;  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-14 14:58:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  it  under  the  terms  of  the  GNU  Lesser  General  Public  License  as 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  published  by  the  Free  Software  Foundation ;  either  version  2.1  of  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  polypaudio  is  distributed  in  the  hope  that  it  will  be  useful ,  but 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .  See  the  GNU 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-14 14:58:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  Lesser  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-14 14:58:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  You  should  have  received  a  copy  of  the  GNU  Lesser  General  Public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  License  along  with  polypaudio ;  if  not ,  write  to  the  Free  Software 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  Foundation ,  Inc . ,  59  Temple  Place ,  Suite  330 ,  Boston ,  MA  02111 - 1307 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  USA . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* * */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-23 23:17:30 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  <inttypes.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 15:47:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <sys/time.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <time.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-12-12 22:58:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <polyp/cdecl.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <polyp/sample.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-14 20:25:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** \file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Global  definitions  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-14 20:25:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								PA_C_DECL_BEGIN 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-11 15:11:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** The state of a connection context */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_context_state  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_UNCONNECTED ,     /**< The context hasn't been connected yet */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_CONNECTING ,      /**< A connection is being established */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_AUTHORIZING ,     /**< The client is authorizing itself to the daemon */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_SETTING_NAME ,    /**< The client is passing its application name to the daemon */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_READY ,           /**< The connection is established, the context is ready to execute operations */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_FAILED ,          /**< The connection failed or was disconnected */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_CONTEXT_TERMINATED       /**< The connection was terminated cleanly */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_context_state_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-23 23:17:30 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** The state of a stream */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_stream_state  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_STREAM_DISCONNECTED ,  /**< The stream is not yet connected to any sink or source */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_CREATING ,      /**< The stream is being created */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_READY ,         /**< The stream is established, you may pass audio data to it now */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_FAILED ,        /**< An error occured that made the stream invalid */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-19 23:14:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_STREAM_TERMINATED     /**< The stream has been terminated cleanly */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_stream_state_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-14 20:25:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** The state of an operation */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_operation_state  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_OPERATION_RUNNING ,       /**< The operation is still running */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_OPERATION_DONE ,          /**< The operation has been completed */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-19 23:14:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_OPERATION_CANCELED       /**< The operation has been canceled */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_operation_state_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** An invalid index */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-14 20:25:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define PA_INVALID_INDEX ((uint32_t) -1) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** The direction of a pa_stream object */  
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_stream_direction  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_STREAM_NODIRECTION ,    /**< Invalid direction */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_PLAYBACK ,       /**< Playback stream */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_RECORD ,         /**< Record stream */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_UPLOAD          /**< Sample upload stream */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_stream_direction_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-26 17:02:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Some special flags for stream connections. \since 0.6 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_stream_flags  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-27 00:10:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_STREAM_START_CORKED  =  1 ,        /**< Create the stream corked, requiring an explicit pa_stream_cork() call to uncork it. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_STREAM_INTERPOLATE_LATENCY  =  2  /**< Interpolate the latency for
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  this  stream .  When  enabled , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  you  can  use 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  pa_stream_interpolated_xxx ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  for  synchronization .  Using 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  these  functions  instead  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  pa_stream_get_latency ( )  has 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  the  advantage  of  not 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  requiring  a  whole  roundtrip 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  for  responses .  Consider  using 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  this  option  when  frequently 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  requesting  latency 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  information .  This  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  especially  useful  on  long  latency 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       *  network  connections .  */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_stream_flags_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-26 17:02:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Playback and record buffer metrics */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  struct  pa_buffer_attr  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    uint32_t  maxlength ;       /**< Maximum length of the buffer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    uint32_t  tlength ;         /**< Playback only: target length of the buffer. The server tries to assure that at least tlength bytes are always available in the buffer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    uint32_t  prebuf ;          /**< Playback only: pre-buffering. The server does not start with playback before at least prebug bytes are available in the buffer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    uint32_t  minreq ;          /**< Playback only: minimum request. The server does not request less than minreq bytes from the client, instead waints until the buffer is free enough to request more bytes at once */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    uint32_t  fragsize ;        /**< Recording only: fragment size. The server sends data in blocks of fragsize bytes size. Large values deminish interactivity with other operations on the connection context but decrease control overhead. */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_buffer_attr ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Error values as used by pa_context_errno(). Use pa_strerror() to convert these values to human readable strings */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								enum  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_OK ,                      /**< No error */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_ACCESS ,                  /**< Access failure */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_COMMAND ,                 /**< Unknown command */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_INVALID ,                 /**< Invalid argument */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_EXIST ,                   /**< Entity exists */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_NOENTITY ,                /**< No such entity */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_CONNECTIONREFUSED ,       /**< Connection refused */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_PROTOCOL ,                /**< Protocol error */  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_TIMEOUT ,                 /**< Timeout */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_AUTHKEY ,                 /**< No authorization key */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_INTERNAL ,                /**< Internal error */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_CONNECTIONTERMINATED ,    /**< Connection terminated */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_KILLED ,                  /**< Entity killed */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_ERROR_INVALIDSERVER ,           /**< Invalid server */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-15 19:16:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_ERROR_INITFAILED ,              /**< Module initialization failed */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_ERROR_MAX                      /**< Not really an error but the first invalid error code */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Subscription event mask, as used by pa_context_subscribe() */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_subscription_mask  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_NULL  =  0 ,                /**< No events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_SINK  =  1 ,                /**< Sink events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_SOURCE  =  2 ,              /**< Source events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_SINK_INPUT  =  4 ,          /**< Sink input events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT  =  8 ,       /**< Source output events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_MODULE  =  16 ,             /**< Module events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_CLIENT  =  32 ,             /**< Client events */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-06 21:55:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_SAMPLE_CACHE  =  64 ,       /**< Sample cache events */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-16 22:07:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_SERVER  =  128 ,            /**< Other global server changes. \since 0.4 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_MASK_AUTOLOAD  =  256           /**< Autoload table events. \since 0.5 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_subscription_mask_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Subscription event types, as used by pa_context_subscribe() */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_subscription_event_type  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_SINK  =  0 ,            /**< Event type: Sink */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_SOURCE  =  1 ,          /**< Event type: Source */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_SINK_INPUT  =  2 ,      /**< Event type: Sink input */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT  =  3 ,   /**< Event type: Source output */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_MODULE  =  4 ,          /**< Event type: Module */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_CLIENT  =  5 ,          /**< Event type: Client */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE  =  6 ,    /**< Event type: Sample cache item */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-06 21:55:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_SERVER  =  7 ,          /**< Event type: Global server change, only occuring with PA_SUBSCRIPTION_EVENT_CHANGE. \since 0.4  */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-16 22:07:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_AUTOLOAD  =  8 ,        /**< Event type: Autoload table changes. \since 0.5 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_FACILITY_MASK  =  15 ,  /**< A mask to extract the event type from an event value */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_NEW  =  0 ,             /**< A new object was created */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_CHANGE  =  16 ,         /**< A property of the object was modified */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_REMOVE  =  32 ,         /**< An object was removed */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-19 23:14:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SUBSCRIPTION_EVENT_TYPE_MASK  =  16 + 32    /**< A mask to extract the event operation from an event value */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_subscription_event_type_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-17 17:17:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Return one if an event type t matches an event mask bitfield */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK)))) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-16 00:05:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** A structure for latency info. See pa_stream_get_latency(). The
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  total  output  latency  a  sample  that  is  written  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  pa_stream_write ( )  takes  to  be  played  may  be  estimated  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  sink_usec + buffer_usec + transport_usec .  The  output  buffer  to  which 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-27 16:24:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  buffer_usec  relates  may  be  manipulated  freely  ( with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  pa_stream_write ( ) ' s  delta  argument ,  pa_stream_flush ( )  and  friends ) , 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-16 00:05:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  the  buffers  sink_usec / source_usec  relates  to  is  a  first - in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  first - out  buffer  which  cannot  be  flushed  or  manipulated  in  any 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  way .  The  total  input  latency  a  sample  that  is  recorded  takes  to  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  delivered  to  the  application  is : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  source_usec + buffer_usec + transport_usec - sink_usec .  ( Take  care  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  sign  issues ! )  When  connected  to  a  monitor  source  sink_usec  contains 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  the  latency  of  the  owning  sink . */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  struct  pa_latency_info  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-16 00:05:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_usec_t  buffer_usec ;     /**< Time in usecs the current buffer takes to play. For both playback and record streams. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_usec_t  sink_usec ;       /**< Time in usecs a sample takes to be played on the sink. For playback streams and record streams connected to a monitor source. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_usec_t  source_usec ;     /**< Time in usecs a sample takes from being recorded to being delivered to the application. Only for record streams. \since 0.5*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_usec_t  transport_usec ;  /**< Estimated time in usecs a sample takes to be transferred to/from the daemon. For both playback and record streams. \since 0.5 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int  playing ;               /**< Non-zero when the stream is currently playing. Only for playback streams. */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-17 23:11:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    uint32_t  queue_length ;     /**< Queue size in bytes. For both playback and record streams. */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-13 23:28:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    int  synchronized_clocks ;   /**< Non-zero if the local and the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  remote  machine  have  synchronized 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  clocks .  If  synchronized  clocks  are 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  detected  transport_usec  becomes  much 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  more  reliable .  However ,  the  code  that 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  detects  synchronized  clocks  is  very 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  limited  und  unreliable  itself .  \ since 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               *  0.5  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    struct  timeval  timestamp ;  /**< The time when this latency info was current */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-27 00:10:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    uint64_t  counter ;          /**< The byte counter current when the latency info was requested. \since 0.6 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_latency_info ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-27 01:29:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-15 13:03:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** A structure for the spawn api. This may be used to integrate auto
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  spawned  daemons  into  your  application .  For  more  information  see 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  pa_context_connect ( ) .  When  spawning  a  new  child  process  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  waitpid ( )  is  used  on  the  child ' s  PID .  The  spawn  routine  will  not 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  block  or  ignore  SIGCHLD  signals ,  since  this  cannot  be  done  in  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  thread  compatible  way .  You  might  have  to  do  this  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  prefork / postfork .  \ since  0.4  */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  struct  pa_spawn_api  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-15 13:03:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void  ( * prefork ) ( void ) ;      /**< Is called just before the fork in the parent process. May be NULL. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * postfork ) ( void ) ;     /**< Is called immediately after the fork in the parent process. May be NULL.*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * atfork ) ( void ) ;       /**< Is called immediately after the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                *  fork  in  the  child  process .  May  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                *  NULL .  It  is  not  safe  to  close  all 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                *  file  descriptors  in  this  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                *  unconditionally ,  since  a  UNIX  socket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                *  ( created  using  socketpair ( ) )  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                *  passed  to  the  new  process .  */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_spawn_api ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-15 13:03:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-08-14 20:25:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								PA_C_DECL_END 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-06 23:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-23 23:17:30 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# endif