// Change volume variables from the given decibel. Quantize value according to // our ranges. static float change_volume_decibel(struct action_event *event, float raw_decibel) { int volume_level = volume_decibel_to_level(raw_decibel); // Since we quantize it to the level, lets calculate the // actual level. float decibel = volume_level_to_decibel(volume_level); char volume[10]; snprintf(volume, sizeof(volume), "%d", volume_level); char db_volume[10]; snprintf(db_volume, sizeof(db_volume), "%d", (int) (256 * decibel)); fprintf(stderr, "Setting volume-db to %.2fdb == #%d\n", decibel, volume_level); change_volume_and_notify(event, volume, db_volume); return decibel; }
// Change volume variables from the given decibel. Quantize value according to // our ranges. static float change_volume_decibel(float raw_decibel) { int volume_level = volume_decibel_to_level(raw_decibel); // Since we quantize it to the level, lets calculate the // actual level. float decibel = volume_level_to_decibel(volume_level); char volume[10]; snprintf(volume, sizeof(volume), "%d", volume_level); char db_volume[10]; snprintf(db_volume, sizeof(db_volume), "%d", (int) (256 * decibel)); Log_info("control", "Setting volume-db to %.2fdb == #%d", decibel, volume_level); change_volume(volume, db_volume); return decibel; }
static int set_volume(struct action_event *event) { const char *volume = upnp_get_string(event, "DesiredVolume"); service_lock(); int volume_level = atoi(volume); // range 0..100 if (volume_level < volume_range.min) volume_level = volume_range.min; if (volume_level > volume_range.max) volume_level = volume_range.max; const float decibel = volume_level_to_decibel(volume_level); char db_volume[10]; snprintf(db_volume, sizeof(db_volume), "%d", (int) (256 * decibel)); const double fraction = exp(decibel / 20 * log(10)); fprintf(stderr, "Setting volume to #%d = %.2fdb (%.4f)\n", volume_level, decibel, fraction); change_volume_and_notify(event, volume, db_volume); output_set_volume(fraction); set_mute_toggle(volume_level == 0); service_unlock(); return 0; }
static int set_volume(struct action_event *event) { const char *volume = upnp_get_string(event, "DesiredVolume"); service_lock(); int volume_level = atoi(volume); // range 0..100 if (volume_level < volume_range.min) volume_level = volume_range.min; if (volume_level > volume_range.max) volume_level = volume_range.max; const float decibel = volume_level_to_decibel(volume_level); char db_volume[10]; snprintf(db_volume, sizeof(db_volume), "%d", (int) (256 * decibel)); Log_info("control", "Setting %d volume-db to %d" , volume_level,(int)decibel); const double fraction = exp(decibel / 20 * log(10)); change_volume(volume, db_volume); output_set_volume(fraction, volume_level); set_mute_toggle(volume_level == 0); service_unlock(); return 0; }