Wed 02 Jul 2008 07:45:34 PM UTC, comment #5:
Sascha,
I don't remeber needed diff options :-) - it is simpler to show both whole methods. I'm on Gentoo/Linux.
Andrew Gaydenko
===========================
/* return current volume [0-100] */
static float player_get_volume(player_t* player){
yauap_priv_t* priv = player->yauap_priv;
gdouble volume = 0.0;
/* get current volume */
if(priv->volume)
g_object_get( G_OBJECT(priv->volume), "volume", &volume, NULL );
//!! return volume * 25.0;
return volume * 100.0;
}
/* set new volume [0-100] */
static int player_set_volume(player_t* player,float value){
yauap_priv_t* priv = player->yauap_priv;
gdouble volume = value;
priv->cur_volume = value;
if(!priv->volume)
return TRUE;
/* change range from 0 - 100 to 0 - 4 */
//!! volume *= 0.04;
volume *= 0.01;
/* ajust values */
if(volume < 0.0)
volume = 0.0;
//!! else if(volume > 4.0)
//!! volume = 4.0;
else if(volume > 1.0)
volume = 1.0;
printf("\nsetting volume %f\n",value);
g_object_set(G_OBJECT(priv->volume), "volume", volume, NULL);
return TRUE;
}
|