From faf9f7cd7aa2e712879c97d64cefd103052b4963 Mon Sep 17 00:00:00 2001 From: Antoine Cellerier Date: Tue, 6 Dec 2005 18:49:11 +0000 Subject: [PATCH] new rpn function : volume_set --- modules/control/http/rpn.c | 40 +++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/modules/control/http/rpn.c b/modules/control/http/rpn.c index 4f8067fee0..675aa658ad 100644 --- a/modules/control/http/rpn.c +++ b/modules/control/http/rpn.c @@ -2,7 +2,7 @@ * rpn.c : RPN evaluator for the HTTP Interface ***************************************************************************** * Copyright (C) 2001-2005 the VideoLAN team - * $Id: http.c 12225 2005-08-18 10:01:30Z massiot $ + * $Id$ * * Authors: Gildas Bazin * Laurent Aimar @@ -907,6 +907,44 @@ void E_(EvaluateRPN)( intf_thread_t *p_intf, mvar_t *vars, msg_Dbg( p_intf, "requested to move playlist item %d to %d", i_pos, i_newpos); } + else if( !strcmp( s, "volume_set" ) ) + { + char *psz_vol = E_(SSPop)( st ); + int i_value; + audio_volume_t i_volume; + aout_VolumeGet( p_intf, &i_volume ); + if( psz_vol[0] == '+' ) + { + i_value = atoi( psz_vol ); + if( (i_volume + i_value) > AOUT_VOLUME_MAX ) + aout_VolumeSet( p_intf, AOUT_VOLUME_MAX ); + else + aout_VolumeSet( p_intf, i_volume + i_value ); + } + else if( psz_vol[0] == '-' ) + { + i_value = atoi( psz_vol ); + if( (i_volume + i_value) < AOUT_VOLUME_MIN ) + aout_VolumeSet( p_intf, AOUT_VOLUME_MIN ); + else + aout_VolumeSet( p_intf, i_volume + i_value ); + } + else if( strstr( psz_vol, "%") != NULL ) + { + i_value = atoi( psz_vol ); + if( i_value < 0 ) i_value = 0; + if( i_value > 400 ) i_value = 400; + aout_VolumeSet( p_intf, (i_value * (AOUT_VOLUME_MAX - AOUT_VOLUME_MIN))/400+AOUT_VOLUME_MIN); + } + else + { + i_value = atoi( psz_vol ); + if( i_value > AOUT_VOLUME_MAX ) i_value = AOUT_VOLUME_MAX; + if( i_value < AOUT_VOLUME_MIN ) i_value = AOUT_VOLUME_MIN; + aout_VolumeSet( p_intf, i_value ); + } + aout_VolumeGet( p_intf, &i_volume ); + } else { E_(SSPush)( st, s ); -- 2.20.1