msvolume.h 3.1 KB
Newer Older
aymeric's avatar
aymeric committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006  Simon MORLAT (simon.morlat@linphone.org)

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program 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 General Public License
along with this program; if not, write to the Free Software
17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
aymeric's avatar
aymeric committed
18 19 20 21 22
*/

#ifndef msvolume_h
#define msvolume_h

Simon Morlat's avatar
Simon Morlat committed
23
#include <mediastreamer2/msfilter.h>
aymeric's avatar
aymeric committed
24

25 26 27 28 29 30 31 32 33
/**
 * The Volume MSFilter can do:
 * 	- measurements of the input signal power, returned in dbm0 or linear scale
 * 	- apply a gain to the input signal and output this amplified signal to its output.
 * By default gain is 1, in which case the filter does not modify the signal (and even does not
 * copy the buffers, just post them on its output queue.
**/


aymeric's avatar
aymeric committed
34 35
/*returns a volume meter in db0 (max=0 db0)*/
#define MS_VOLUME_GET		MS_FILTER_METHOD(MS_VOLUME_ID,0,float)
36 37 38 39
/*returns a volume in linear scale between 0 and 1 */
#define MS_VOLUME_GET_LINEAR		MS_FILTER_METHOD(MS_VOLUME_ID,1,float)
/* set a gain */
#define MS_VOLUME_SET_GAIN		MS_FILTER_METHOD(MS_VOLUME_ID,2,float)
aymeric's avatar
aymeric committed
40

smorlat's avatar
smorlat committed
41 42
#define MS_VOLUME_SET_PEER		MS_FILTER_METHOD(MS_VOLUME_ID,4, MSFilter )

smorlat's avatar
smorlat committed
43 44 45 46
#define MS_VOLUME_SET_EA_THRESHOLD	MS_FILTER_METHOD(MS_VOLUME_ID,5,float)

#define MS_VOLUME_SET_EA_SPEED		MS_FILTER_METHOD(MS_VOLUME_ID,6,float)

smorlat's avatar
smorlat committed
47 48
#define MS_VOLUME_SET_EA_FORCE		MS_FILTER_METHOD(MS_VOLUME_ID,7,float)

49 50
#define MS_VOLUME_ENABLE_AGC		MS_FILTER_METHOD(MS_VOLUME_ID,8,int)

51 52
#define MS_VOLUME_ENABLE_NOISE_GATE	MS_FILTER_METHOD(MS_VOLUME_ID,9,int)

smorlat's avatar
smorlat committed
53 54
#define MS_VOLUME_SET_NOISE_GATE_THRESHOLD	MS_FILTER_METHOD(MS_VOLUME_ID,10,float)

55 56
#define MS_VOLUME_SET_EA_SUSTAIN	MS_FILTER_METHOD(MS_VOLUME_ID,11,int)

57
#define MS_VOLUME_SET_NOISE_GATE_FLOORGAIN MS_FILTER_METHOD(MS_VOLUME_ID,12,float)
58

jehan's avatar
jehan committed
59 60 61
/* set a gain in db */
#define MS_VOLUME_SET_DB_GAIN		MS_FILTER_METHOD(MS_VOLUME_ID,13,float)

jehan's avatar
jehan committed
62 63 64
/* get a linear gain */
#define MS_VOLUME_GET_GAIN		MS_FILTER_METHOD(MS_VOLUME_ID,14,float)

65 66 67
/* get the gain in db*/
#define MS_VOLUME_GET_GAIN_DB		MS_FILTER_METHOD(MS_VOLUME_ID,15,float)

Simon Morlat's avatar
Simon Morlat committed
68
#define MS_VOLUME_REMOVE_DC	MS_FILTER_METHOD(MS_VOLUME_ID,16,int)
69

70 71
#define MS_VOLUME_SET_EA_TRANSMIT_THRESHOLD	MS_FILTER_METHOD(MS_VOLUME_ID,17,float)

72 73 74 75 76 77 78 79 80
/**
 * Obtain the minimum volume, in db, over the last X seconds period completed (X=30 seconds by default)
**/
#define MS_VOLUME_GET_MIN	MS_FILTER_METHOD(MS_VOLUME_ID,18,float)

/**
 * Obtain the maximum volume, in db, over the last X seconds period completed (X=1 second by default)
**/
#define MS_VOLUME_GET_MAX	MS_FILTER_METHOD(MS_VOLUME_ID,19,float)
81

Simon Morlat's avatar
Simon Morlat committed
82
#define MS_VOLUME_DB_LOWEST		(-120)	/*arbitrary value returned when linear volume is 0*/
83

aymeric's avatar
aymeric committed
84 85 86
extern MSFilterDesc ms_volume_desc;

#endif