[MPlayer-cvslog] CVS: main cfg-mplayer.h, 1.230, 1.231 mixer.c, 1.18, 1.19 mixer.h, 1.6, 1.7
Reimar Döffinger CVS
syncmail at mplayerhq.hu
Sun Nov 14 12:28:00 CET 2004
CVS change done by Reimar Döffinger CVS
Update of /cvsroot/mplayer/main
In directory mail:/var2/tmp/cvs-serv20916
Modified Files:
cfg-mplayer.h mixer.c mixer.h
Log Message:
allow forcing of software volume control and setting maximum amplification.
Index: cfg-mplayer.h
===================================================================
RCS file: /cvsroot/mplayer/main/cfg-mplayer.h,v
retrieving revision 1.230
retrieving revision 1.231
diff -u -r1.230 -r1.231
--- cfg-mplayer.h 28 Oct 2004 23:25:17 -0000 1.230
+++ cfg-mplayer.h 14 Nov 2004 11:27:57 -0000 1.231
@@ -174,6 +174,9 @@
{"dsp", "Use -ao oss:dsp_path.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
{"mixer", &mixer_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
{"mixer-channel", &mixer_channel, CONF_TYPE_STRING, 0, 0, 0, NULL},
+ {"softvol", &soft_vol, CONF_TYPE_FLAG, 0, 0, 1, NULL},
+ {"nosoftvol", &soft_vol, CONF_TYPE_FLAG, 0, 1, 0, NULL},
+ {"softvol-max", &soft_vol_max, CONF_TYPE_FLOAT, CONF_RANGE, 10, 10000, NULL},
{"volstep", &volstep, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
{"master", "Option -master has been removed, use -aop list=volume instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
// override audio buffer size (used only by -ao oss, anyway obsolete...)
Index: mixer.c
===================================================================
RCS file: /cvsroot/mplayer/main/mixer.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- mixer.c 28 Jul 2004 12:17:48 -0000 1.18
+++ mixer.c 14 Nov 2004 11:27:57 -0000 1.19
@@ -15,13 +15,16 @@
char * mixer_device=NULL;
char * mixer_channel=NULL;
+int soft_vol = 0;
+float soft_vol_max = 110.0;
void mixer_getvolume(mixer_t *mixer, float *l, float *r)
{
ao_control_vol_t vol;
*l=0; *r=0;
if(mixer->audio_out){
- if(CONTROL_OK != mixer->audio_out->control(AOCONTROL_GET_VOLUME,&vol)) {
+ if(soft_vol ||
+ CONTROL_OK != mixer->audio_out->control(AOCONTROL_GET_VOLUME,&vol)) {
if (!mixer->afilter)
return;
else {
@@ -31,8 +34,8 @@
db_vals[0] = db_vals[1] = 1.0;
else
af_from_dB (2, db_vals, db_vals, 20.0, -200.0, 60.0);
- vol.left = db_vals[0] * 90.0;
- vol.right = db_vals[1] * 90.0;
+ vol.left = (db_vals[0] / (soft_vol_max / 100.0)) * 100.0;
+ vol.right = (db_vals[1] / (soft_vol_max / 100.0)) * 100.0;
}
}
*r=vol.right;
@@ -45,19 +48,18 @@
ao_control_vol_t vol;
vol.right=r; vol.left=l;
if(mixer->audio_out){
- if(CONTROL_OK != mixer->audio_out->control(AOCONTROL_SET_VOLUME,&vol)) {
+ if(soft_vol ||
+ CONTROL_OK != mixer->audio_out->control(AOCONTROL_SET_VOLUME,&vol)) {
if (!mixer->afilter)
return;
else {
// af_volume uses values in dB
float db_vals[AF_NCH];
int i;
- // a volume of 90% will give 0 dB (no change)
- // like this, amplification is possible as well
- db_vals[0] = l / 90.0;
- db_vals[1] = r / 90.0;
+ db_vals[0] = (l / 100.0) * (soft_vol_max / 100.0);
+ db_vals[1] = (r / 100.0) * (soft_vol_max / 100.0);
for (i = 2; i < AF_NCH; i++) {
- db_vals[i] = (l + r) / 180.0;
+ db_vals[i] = ((l + r) / 100.0) * (soft_vol_max / 100.0) / 2.0;
}
af_to_dB (AF_NCH, db_vals, db_vals, 20.0);
if (!af_control_any_rev(mixer->afilter,
Index: mixer.h
===================================================================
RCS file: /cvsroot/mplayer/main/mixer.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- mixer.h 26 Jun 2004 09:14:20 -0000 1.6
+++ mixer.h 14 Nov 2004 11:27:57 -0000 1.7
@@ -6,6 +6,8 @@
extern char * mixer_device;
extern char * mixer_channel;
+extern int soft_vol;
+extern float soft_vol_max;
typedef struct mixer_s {
ao_functions_t *audio_out;
More information about the MPlayer-cvslog
mailing list