2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# ifndef foovolumehfoo 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define foovolumehfoo 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* $Id$ */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/***
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  This  file  is  part  of  polypaudio . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  polypaudio  is  free  software ;  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  it  under  the  terms  of  the  GNU  Lesser  General  Public  License  as  published 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  by  the  Free  Software  Foundation ;  either  version  2  of  the  License , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  You  should  have  received  a  copy  of  the  GNU  Lesser  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  along  with  polypaudio ;  if  not ,  write  to  the  Free  Software 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  Foundation ,  Inc . ,  59  Temple  Place ,  Suite  330 ,  Boston ,  MA  02111 - 1307 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  USA . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* * */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <inttypes.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <polyp/cdecl.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <polyp/sample.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-09 19:31:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** \page volume Volume control
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ section  overv_sec  Overview 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Sinks ,  sources ,  sink  inputs  and  samples  can  all  have  their  own  volumes . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  To  deal  with  these ,  The  Polypaudio  libray  contains  a  number  of  functions 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  that  ease  handling . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  basic  volume  type  in  Polypaudio  is  the  \ ref  pa_volume_t  type .  Most  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  the  time ,  applications  will  use  the  aggregated  pa_cvolume  structure  that 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  can  store  the  volume  of  all  channels  at  once . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Volumes  commonly  span  between  muted  ( 0 % ) ,  and  normal  ( 100 % ) .  It  is  possible 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  to  set  volumes  to  higher  than  100 % ,  but  clipping  might  occur . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ section  calc_sec  Calculations 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  volumes  in  Polypaudio  are  logarithmic  in  nature  and  applications 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  shouldn ' t  perform  calculations  with  them  directly .  Instead ,  they  should 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  be  converted  to  and  from  either  dB  or  a  linear  scale : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  dB  -  pa_sw_volume_from_dB ( )  /  pa_sw_volume_to_dB ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  Linear  -  pa_sw_volume_from_linear ( )  /  pa_sw_volume_to_linear ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  For  simple  multiplication ,  pa_sw_volume_multiply ( )  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  pa_sw_cvolume_multiply ( )  can  be  used . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-13 00:56:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  Calculations  can  only  be  reliably  performed  on  software  volumes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  as  it  is  commonly  unknown  what  scale  hardware  volumes  relate  to . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  functions  described  above  are  only  valid  when  used  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  software  volumes .  Hence  it  is  usually  a  better  idea  to  treat  all 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  volume  values  as  opaque  with  a  range  from  PA_VOLUME_MUTE  ( 0 % )  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  PA_VOLUME_NORM  ( 100 % )  and  to  refrain  from  any  calculations  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  them . 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-09 19:31:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ section  conv_sec  Convenience  functions 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  To  handle  the  pa_cvolume  structure ,  the  Polypaudio  library  provides  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  number  of  convenienc  functions : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_valid ( )  -  Tests  if  a  pa_cvolume  structure  is  valid . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_equal ( )  -  Tests  if  two  pa_cvolume  structures  are  identical . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_channels_equal_to ( )  -  Tests  if  all  channels  of  a  pa_cvolume 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *                              structure  have  a  given  volume . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_is_muted ( )  -  Tests  if  all  channels  of  a  pa_cvolume 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *                              structure  are  muted . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_is_norm ( )  -  Tests  if  all  channels  of  a  pa_cvolume  structure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *                             are  at  a  normal  volume . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_set ( )  -  Set  all  channels  of  a  pa_cvolume  structure  to  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *                         certain  volume . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_reset ( )  -  Set  all  channels  of  a  pa_cvolume  structure  to  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *                           normal  volume . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_mute ( )  -  Set  all  channels  of  a  pa_cvolume  structure  to  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *                          muted  volume . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_avg ( )  -  Return  the  average  volume  of  all  channels . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  \ li  pa_cvolume_snprint ( )  -  Pretty  print  a  pa_cvolume  structure . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								/** \file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Constants  and  routines  for  volume  handling  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PA_C_DECL_BEGIN 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Volume specification:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *   PA_VOLUME_MUTED :  silence ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  <  PA_VOLUME_NORM :  decreased  volume ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    PA_VOLUME_NORM :  normal  volume ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  >  PA_VOLUME_NORM :  increased  volume  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  uint32_t  pa_volume_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Normal volume (100%) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PA_VOLUME_NORM (0x10000) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Muted volume (0%) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PA_VOLUME_MUTED (0) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** A structure encapsulating a per-channel volume */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct  pa_cvolume  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    uint8_t  channels ;                      /**< Number of channels */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    pa_volume_t  values [ PA_CHANNELS_MAX ] ;   /**< Per-channel volume  */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}  pa_cvolume ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Return non-zero when *a == *b */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  pa_cvolume_equal ( const  pa_cvolume  * a ,  const  pa_cvolume  * b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Set the volume of all channels to PA_VOLUME_NORM */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define pa_cvolume_reset(a, n) pa_cvolume_set((a), (n), PA_VOLUME_NORM) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Set the volume of all channels to PA_VOLUME_MUTED */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define pa_cvolume_mute(a, n) pa_cvolume_set((a), (n), PA_VOLUME_MUTED) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Set the volume of all channels to the specified parameter */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_cvolume *  pa_cvolume_set ( pa_cvolume  * a ,  unsigned  channels ,  pa_volume_t  v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Maximum length of the strings returned by pa_cvolume_snprint() */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# define PA_CVOLUME_SNPRINT_MAX 64 
 
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Pretty print a volume structure */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								char  * pa_cvolume_snprint ( char  * s ,  size_t  l ,  const  pa_cvolume  * c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Return the average volume of all channels */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								pa_volume_t  pa_cvolume_avg ( const  pa_cvolume  * a ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Return TRUE when the passed cvolume structure is valid, FALSE otherwise */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  pa_cvolume_valid ( const  pa_cvolume  * v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Return non-zero if the volume of all channels is equal to the specified value */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  pa_cvolume_channels_equal_to ( const  pa_cvolume  * a ,  pa_volume_t  v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Return 1 if the specified volume has all channels muted */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# define pa_cvolume_is_muted(a) pa_cvolume_channels_equal_to((a), PA_VOLUME_MUTED) 
 
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** Return 1 if the specified volume has all channels on normal level */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# define pa_cvolume_is_norm(a) pa_cvolume_channels_equal_to((a), PA_VOLUME_NORM) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Multiply two volumes specifications, return the result. This uses PA_VOLUME_NORM as neutral element of multiplication. This is only valid for software volumes! */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								pa_volume_t  pa_sw_volume_multiply ( pa_volume_t  a ,  pa_volume_t  b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Multiply to per-channel volumes and return the result in *dest. This is only valid for software volumes! */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								pa_cvolume  * pa_sw_cvolume_multiply ( pa_cvolume  * dest ,  const  pa_cvolume  * a ,  const  pa_cvolume  * b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Convert a decibel value to a volume. This is only valid for software volumes! \since 0.4 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								pa_volume_t  pa_sw_volume_from_dB ( double  f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Convert a volume to a decibel value. This is only valid for software volumes! \since 0.4 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								double  pa_sw_volume_to_dB ( pa_volume_t  v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Convert a linear factor to a volume. This is only valid for software volumes! \since 0.8 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								pa_volume_t  pa_sw_volume_from_linear ( double  v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-02-20 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** Convert a volume to a linear factor. This is only valid for software volumes! \since 0.8 */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-27 16:25:31 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								double  pa_sw_volume_to_linear ( pa_volume_t  v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef INFINITY 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PA_DECIBEL_MININFTY (-INFINITY) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** This value is used as minus infinity when using pa_volume_{to,from}_dB(). \since 0.4 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define PA_DECIBEL_MININFTY (-200) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PA_C_DECL_END 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif