From: Guenter B. <gu...@us...> - 2003-03-08 20:25:54
|
Update of /cvsroot/xine/xine-lib/src/xine-engine In directory sc8-pr-cvs1:/tmp/cvs-serv9296/src/xine-engine Modified Files: audio_out.c audio_out.h xine_interface.c Log Message: implement XINE_PARAM_AUDIO_AMP_LEVEL so xine's volume can be set independantly from other applications Index: audio_out.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/audio_out.c,v retrieving revision 1.111 retrieving revision 1.112 diff -u -r1.111 -r1.112 --- audio_out.c 8 Mar 2003 17:24:22 -0000 1.111 +++ audio_out.c 8 Mar 2003 20:25:52 -0000 1.112 @@ -181,6 +181,7 @@ int do_compress; double compression_factor; /* current compression */ double compression_factor_max; /* user limit on compression */ + double amp_factor; } aos_t; @@ -388,7 +389,7 @@ return 0; } -static void audio_filter_compress (aos_t *this, int16_t *mem, int num_frames) { +static void audio_filter_amp_compress (aos_t *this, int16_t *mem, int num_frames) { int i, maxs; double f_max; @@ -432,7 +433,7 @@ /* 0.98 to avoid overflow */ - mem[i] = mem[i] * 0.98 * this->compression_factor; + mem[i] = mem[i] * 0.98 * this->compression_factor * this->amp_factor; } } @@ -445,7 +446,7 @@ */ if ( this->do_compress && (this->input.bits == 16)) - audio_filter_compress (this, buf->mem, buf->num_frames); + audio_filter_amp_compress (this, buf->mem, buf->num_frames); /* * resample and output audio data @@ -1343,6 +1344,10 @@ ret = this->compression_factor_max*100; break; + case AO_PROP_AMP: + ret = this->amp_factor*100; + break; + case AO_PROP_DISCARD_BUFFERS: ret = this->discard_buffers; break; @@ -1367,11 +1372,23 @@ case AO_PROP_COMPRESSOR: this->compression_factor_max = (double) value / 100.0; - this->do_compress = (this->compression_factor_max >1.0); + + this->do_compress = (this->compression_factor_max >1.0) + || (this->amp_factor != 1.0); ret = this->compression_factor_max*100; break; + case AO_PROP_AMP: + + this->amp_factor = (double) value / 100.0; + + this->do_compress = (this->compression_factor_max >1.0) + || (this->amp_factor != 1.0); + + ret = this->amp_factor*100; + break; + case AO_PROP_DISCARD_BUFFERS: /* recursive discard buffers setting */ if(value) @@ -1543,6 +1560,7 @@ this->compression_factor = 1.0; this->compression_factor_max = 4.0; + this->amp_factor = 1.0; this->do_compress = 0; /* Index: audio_out.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/audio_out.h,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- audio_out.h 7 Feb 2003 17:28:10 -0000 1.52 +++ audio_out.h 8 Mar 2003 20:25:52 -0000 1.53 @@ -294,6 +294,7 @@ #define AO_PROP_COMPRESSOR 3 #define AO_PROP_DISCARD_BUFFERS 4 #define AO_PROP_PAUSED 5 +#define AO_PROP_AMP 6 /* amplifier */ /* audio device control ops */ #define AO_CTRL_PLAY_PAUSE 0 Index: xine_interface.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/xine_interface.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- xine_interface.c 8 Mar 2003 17:22:16 -0000 1.44 +++ xine_interface.c 8 Mar 2003 20:25:52 -0000 1.45 @@ -369,6 +369,11 @@ stream->audio_out->set_property (stream->audio_out, AO_PROP_COMPRESSOR, value); break; + case XINE_PARAM_AUDIO_AMP_LEVEL: + if (stream->audio_out) + stream->audio_out->set_property (stream->audio_out, AO_PROP_AMP, value); + break; + case XINE_PARAM_VERBOSITY: stream->xine->verbosity = value; @@ -437,6 +442,11 @@ if (!stream->audio_out) return -1; return stream->audio_out->get_property (stream->audio_out, AO_PROP_COMPRESSOR); + + case XINE_PARAM_AUDIO_AMP_LEVEL: + if (!stream->audio_out) + return -1; + return stream->audio_out->get_property (stream->audio_out, AO_PROP_AMP); case XINE_PARAM_VERBOSITY: return stream->xine->verbosity; |