2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef foopulsesinkinputhfoo 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define foopulsesinkinputhfoo 
 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/***
 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-19 21:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  This  file  is  part  of  PulseAudio . 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-02-13 15:35:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  Copyright  2004 - 2006  Lennart  Poettering 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  Copyright  2006  Pierre  Ossman  < ossman @ cendio . se >  for  Cendio  AB 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-19 21:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  PulseAudio  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 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 20:23:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  by  the  Free  Software  Foundation ;  either  version  2.1  of  the  License , 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-19 21:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  PulseAudio  is  distributed  in  the  hope  that  it  will  be  useful ,  but 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-16 19:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .  See  the  GNU 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-14 14:58:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  You  should  have  received  a  copy  of  the  GNU  Lesser  General  Public  License 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-19 21:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  along  with  PulseAudio ;  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-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  <inttypes.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  struct  pa_sink_input  pa_sink_input ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-06-19 21:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <pulse/sample.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <pulsecore/hook-list.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-19 21:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <pulsecore/memblockq.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <pulsecore/resampler.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <pulsecore/module.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <pulsecore/client.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <pulsecore/sink.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <pulsecore/core.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_sink_input_state  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_INIT ,          /*< The stream is not active yet, because pa_sink_put() has not been called yet */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-28 23:27:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_DRAINED ,       /*< The stream stopped playing because there was no data to play */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_RUNNING ,       /*< The stream is alive and kicking */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-28 23:27:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_CORKED ,        /*< The stream was corked on user request */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_UNLINKED       /*< The stream is dead */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_sink_input_state_t ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-14 20:53:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  inline  pa_bool_t  PA_SINK_INPUT_IS_LINKED ( pa_sink_input_state_t  x )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  x  = =  PA_SINK_INPUT_DRAINED  | |  x  = =  PA_SINK_INPUT_RUNNING  | |  x  = =  PA_SINK_INPUT_CORKED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  enum  pa_sink_input_flags  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_VARIABLE_RATE  =  1 , 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_DONT_MOVE  =  2 , 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-21 01:30:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_START_CORKED  =  4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_NO_REMAP  =  8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_NO_REMIX  =  16 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_FIX_FORMAT  =  32 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_FIX_RATE  =  64 , 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-26 19:32:04 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_FIX_CHANNELS  =  128 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND  =  256 , 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-03 02:23:46 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_FAIL_ON_SUSPEND  =  512 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_sink_input_flags_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-03 23:35:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								struct  pa_sink_input  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_msgobject  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    uint32_t  index ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_core  * core ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Please note that this state should only be read with
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  pa_sink_input_get_state ( ) .  That  function  will  transparently 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  merge  the  thread_info . drained  value  in .  */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sink_input_state_t  state ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sink_input_flags_t  flags ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    char  * driver ;                        /* may be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_proplist  * proplist ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_module  * module ;                   /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_client  * client ;                   /* may be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-23 22:38:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sink  * sink ;  /* NULL while we are being moved */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-13 21:56:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* A sink input may be connected to multiple source outputs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  directly ,  so  that  they  don ' t  get  mixed  data  of  the  entire 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  source .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_idxset  * direct_outputs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sample_spec  sample_spec ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_channel_map  channel_map ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-29 15:06:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sink_input  * sync_prev ,  * sync_next ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 22:50:24 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* Also see http://pulseaudio.org/wiki/InternalVolumes */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-08 03:49:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_cvolume  virtual_volume ;   /* The volume clients are informed about */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_cvolume  volume_factor ;    /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    double  relative_volume [ PA_CHANNELS_MAX ] ;  /* The calculated volume relative to the sink volume as linear factors. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_cvolume  soft_volume ;      /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as relative_volume * volume_factor  */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 23:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_bool_t  muted : 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* if TRUE then the source we are connected to and/or the volume
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  set  is  worth  remembering ,  i . e .  was  explicitly  chosen  by  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  user  and  not  automatically .  module - stream - restore  looks  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  this . */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_bool_t  save_sink : 1 ,  save_volume : 1 ,  save_muted : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 00:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_resample_method_t  requested_resample_method ,  actual_resample_method ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* Returns the chunk of audio data and drops it from the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  queue .  Returns  - 1  on  failure .  Called  from  IO  thread  context .  If 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  data  needs  to  be  generated  from  scratch  then  please  in  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  specified  length  request_nbytes .  This  is  an  optimization 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  only .  If  less  data  is  available ,  it ' s  fine  to  return  a  smaller 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  block .  If  more  data  is  already  ready ,  it  is  better  to  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  the  full  block .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    int  ( * pop )  ( pa_sink_input  * i ,  size_t  request_nbytes ,  pa_memchunk  * chunk ) ;  /* may NOT be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Rewind the queue by the specified number of bytes. Called just
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  before  peek ( )  if  it  is  called  at  all .  Only  called  if  the  sink 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  input  driver  ever  plans  to  call 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  pa_sink_input_request_rewind ( ) .  Called  from  IO  context .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * process_rewind )  ( pa_sink_input  * i ,  size_t  nbytes ) ;      /* may NOT be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Called whenever the maximum rewindable size of the sink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  changes .  Called  from  IO  context .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * update_max_rewind )  ( pa_sink_input  * i ,  size_t  nbytes ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-01 12:35:44 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* Called whenever the maximum request size of the sink
 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     *  changes .  Called  from  IO  context .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * update_max_request )  ( pa_sink_input  * i ,  size_t  nbytes ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Called whenever the configured latency of the sink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  changes .  Called  from  IO  context .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * update_sink_requested_latency )  ( pa_sink_input  * i ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Called whenver the latency range of the sink changes. Called
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  from  IO  context .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * update_sink_latency_range )  ( pa_sink_input  * i ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL this function is called when the input is first
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  connected  to  a  sink  or  when  the  rtpoll / asyncmsgq  fields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  change .  You  usually  don ' t  need  to  implement  this  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  unless  you  rewrite  a  sink  that  is  piggy - backed  onto 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  another .  Called  from  IO  thread  context  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * attach )  ( pa_sink_input  * i ) ;            /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* If non-NULL this function is called when the output is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  disconnected  from  its  sink .  Called  from  IO  thread  context  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * detach )  ( pa_sink_input  * i ) ;            /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-01 03:04:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL called whenever the sink this input is attached
 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     *  to  suspends  or  resumes .  Called  from  main  context  */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-21 01:30:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void  ( * suspend )  ( pa_sink_input  * i ,  pa_bool_t  b ) ;    /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-07 00:46:20 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL called whenever the sink this input is attached
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  to  suspends  or  resumes .  Called  from  IO  context  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * suspend_within_thread )  ( pa_sink_input  * i ,  pa_bool_t  b ) ;    /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-01 03:04:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL called whenever the sink input is moved to a new
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  sink .  Called  from  main  context  after  the  sink  input  has  been 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  detached  from  the  old  sink  and  before  it  has  been  attached  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  the  new  sink .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * moving )  ( pa_sink_input  * i ,  pa_sink  * dest ) ;    /* may be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Supposed to unlink and destroy this stream. Called from main
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  context .  */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    void  ( * kill )  ( pa_sink_input  * i ) ;              /* may NOT be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /* Return the current latency (i.e. length of bufferd audio) of
 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    this  stream .  Called  from  main  context .  This  is  added  to  what  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_GET_LATENCY  message  sent  to  the  IO  thread 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    returns  */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-11 23:31:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_usec_t  ( * get_latency )  ( pa_sink_input  * i ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-14 20:30:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-10-21 18:24:45 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL this function is called from thread context if the
 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     *  state  changes .  The  old  state  is  found  in  thread_info . state .   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * state_change )  ( pa_sink_input  * i ,  pa_sink_input_state_t  state ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-03 00:19:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-10-21 18:24:45 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL this function is called before this sink input is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  move  to  a  sink  and  if  it  returns  FALSE  the  move  will  not 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  be  allowed  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_bool_t  ( * may_move_to )  ( pa_sink_input  * i ,  pa_sink  * s ) ;  /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-12 03:18:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /* If non-NULL this function is used to dispatch asynchronous
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  control  events .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  ( * send_event ) ( pa_sink_input  * i ,  const  char  * event ,  pa_proplist *  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_sink_input_state_t  state ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_atomic_t  drained ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-29 15:06:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 04:39:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        pa_cvolume  soft_volume ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_bool_t  muted : 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_bool_t  attached : 1 ;  /* True only between ->attach() and ->detach() calls */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        /* 0: rewrite nothing, (size_t) -1: rewrite everything, otherwise how many bytes to rewrite */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_bool_t  rewrite_flush : 1 ,  dont_rewind_render : 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        size_t  rewrite_nbytes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        uint64_t  underrun_for ,  playing_for ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_sample_spec  sample_spec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_resampler  * resampler ;                      /* may be NULL */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        /* We maintain a history of resampled audio data here. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_memblockq  * render_memblockq ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        pa_sink_input  * sync_prev ,  * sync_next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        /* The requested latency for the sink */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_usec_t  requested_sink_latency ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-13 21:56:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_hashmap  * direct_outputs ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  thread_info ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  * userdata ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PA_DECLARE_CLASS ( pa_sink_input ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PA_SINK_INPUT(o) pa_sink_input_cast(o) 
 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-29 15:06:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								enum  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 04:39:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE , 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_GET_LATENCY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_SET_RATE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_SET_STATE , 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_GET_REQUESTED_LATENCY , 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    PA_SINK_INPUT_MESSAGE_MAX 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-12 03:18:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  struct  pa_sink_input_send_event_hook_data  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_sink_input  * sink_input ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const  char  * event ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_proplist  * data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  pa_sink_input_send_event_hook_data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  struct  pa_sink_input_new_data  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_proplist  * proplist ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const  char  * driver ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_module  * module ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_client  * client ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sink  * sink ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-04 13:43:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-18 17:46:57 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_resample_method_t  resample_method ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_sink_input  * sync_base ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_sample_spec  sample_spec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_channel_map  channel_map ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-07 01:37:38 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-05 01:22:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_cvolume  volume ,  volume_factor ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-18 17:46:57 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_bool_t  muted : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-18 17:46:57 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_bool_t  sample_spec_is_set : 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_bool_t  channel_map_is_set : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 04:39:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-05 01:22:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_bool_t  volume_is_set : 1 ,  volume_factor_is_set : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-18 17:46:57 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_bool_t  muted_is_set : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 04:39:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-04 18:34:08 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    pa_bool_t  volume_is_absolute : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 23:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_bool_t  save_sink : 1 ,  save_volume : 1 ,  save_muted : 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  pa_sink_input_new_data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_sink_input_new_data *  pa_sink_input_new_data_init ( pa_sink_input_new_data  * data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_new_data_set_sample_spec ( pa_sink_input_new_data  * data ,  const  pa_sample_spec  * spec ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_new_data_set_channel_map ( pa_sink_input_new_data  * data ,  const  pa_channel_map  * map ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-04 18:34:08 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_new_data_set_volume ( pa_sink_input_new_data  * data ,  const  pa_cvolume  * volume ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-05 01:22:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_new_data_apply_volume_factor ( pa_sink_input_new_data  * data ,  const  pa_cvolume  * volume_factor ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_new_data_set_muted ( pa_sink_input_new_data  * data ,  pa_bool_t  mute ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_new_data_done ( pa_sink_input_new_data  * data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* To be called by the implementing module only */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 16:19:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-03 03:14:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								int  pa_sink_input_new ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_sink_input  * * i , 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-13 19:55:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        pa_core  * core , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_sink_input_new_data  * data , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        pa_sink_input_flags_t  flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_put ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_unlink ( pa_sink_input *  i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-14 20:30:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_set_name ( pa_sink_input  * i ,  const  char  * name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-14 20:53:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_usec_t  pa_sink_input_set_requested_latency ( pa_sink_input  * i ,  pa_usec_t  usec ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* Request that the specified number of bytes already written out to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								the  hw  device  is  rewritten ,  if  possible .   Please  note  that  this  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								only  a  kind  request .  The  sink  driver  may  not  be  able  to  fulfill  it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fully  - -  or  at  all .  If  the  request  for  a  rewrite  was  successful ,  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sink  driver  will  call  - > rewind ( )  and  pass  the  number  of  bytes  that 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								could  be  rewound  in  the  HW  device .  This  functionality  is  required  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								implementing  the  " zero latency "  write - through  functionality .  */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-15 00:40:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_request_rewind ( pa_sink_input  * i ,  size_t  nbytes ,  pa_bool_t  rewrite ,  pa_bool_t  flush ,  pa_bool_t  dont_rewind_render ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_cork ( pa_sink_input  * i ,  pa_bool_t  b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  pa_sink_input_set_rate ( pa_sink_input  * i ,  uint32_t  rate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* Callable by everyone from main thread*/ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* External code may request disconnection with this function */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-11 01:17:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_kill ( pa_sink_input * i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-15 00:29:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_usec_t  pa_sink_input_get_latency ( pa_sink_input  * i ,  pa_usec_t  * sink_latency ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 22:50:24 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_set_volume ( pa_sink_input  * i ,  const  pa_cvolume  * volume ,  pa_bool_t  save ,  pa_bool_t  absolute ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_cvolume  * pa_sink_input_get_volume ( pa_sink_input  * i ,  pa_cvolume  * volume ,  pa_bool_t  absolute ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-20 13:50:26 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_cvolume  * pa_sink_input_get_relative_volume ( pa_sink_input  * i ,  pa_cvolume  * v ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 22:50:24 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 23:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_set_mute ( pa_sink_input  * i ,  pa_bool_t  mute ,  pa_bool_t  save ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_bool_t  pa_sink_input_get_mute ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 22:50:24 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-05 04:07:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_update_proplist ( pa_sink_input  * i ,  pa_update_mode_t  mode ,  pa_proplist  * p ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-15 13:15:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_resample_method_t  pa_sink_input_get_resample_method ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-20 16:23:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-12 03:18:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_send_event ( pa_sink_input  * i ,  const  char  * name ,  pa_proplist  * data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 23:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								int  pa_sink_input_move_to ( pa_sink_input  * i ,  pa_sink  * dest ,  pa_bool_t  save ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-23 22:38:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_bool_t  pa_sink_input_may_move ( pa_sink_input  * i ) ;  /* may this sink input move at all? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_bool_t  pa_sink_input_may_move_to ( pa_sink_input  * i ,  pa_sink  * dest ) ;  /* may this sink input move to this sink? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* The same as pa_sink_input_move_to() but in two seperate steps,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  first  the  detaching  from  the  old  sink ,  then  the  attaching  to  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  new  sink  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  pa_sink_input_start_move ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-27 23:35:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								int  pa_sink_input_finish_move ( pa_sink_input  * i ,  pa_sink  * dest ,  pa_bool_t  save ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-29 15:06:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_sink_input_state_t  pa_sink_input_get_state ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_usec_t  pa_sink_input_get_requested_latency ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* To be used exclusively by the sink driver IO thread */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-03 03:14:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_peek ( pa_sink_input  * i ,  size_t  length ,  pa_memchunk  * chunk ,  pa_cvolume  * volume ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_drop ( pa_sink_input  * i ,  size_t  length ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_process_rewind ( pa_sink_input  * i ,  size_t  nbytes  /* in the sink's sample spec */ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_update_max_rewind ( pa_sink_input  * i ,  size_t  nbytes   /* in the sink's sample spec */ ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-20 22:32:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								void  pa_sink_input_update_max_request ( pa_sink_input  * i ,  size_t  nbytes   /* in the sink's sample spec */ ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_set_state_within_thread ( pa_sink_input  * i ,  pa_sink_input_state_t  state ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								int  pa_sink_input_process_msg ( pa_msgobject  * o ,  int  code ,  void  * userdata ,  int64_t  offset ,  pa_memchunk  * chunk ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-15 23:34:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								pa_usec_t  pa_sink_input_set_requested_latency_within_thread ( pa_sink_input  * i ,  pa_usec_t  usec ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_bool_t  pa_sink_input_safe_to_remove ( pa_sink_input  * i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_memchunk *  pa_sink_input_get_silence ( pa_sink_input  * i ,  pa_memchunk  * ret ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-28 19:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-08 03:49:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* To be used by sink.c only */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  pa_sink_input_set_relative_volume ( pa_sink_input  * i ,  const  pa_cvolume  * v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-08 23:54:24 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# endif