sys/sunaudio/: Fix up the mixer tracks to use a volume range of 0-255, which is what...
authorBrian Cameron <brian.cameron@sun.com>
Thu, 27 Mar 2008 09:36:58 +0000 (09:36 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Thu, 27 Mar 2008 09:36:58 +0000 (09:36 +0000)
Original commit message from CVS:
Patch by: Brian Cameron <brian.cameron at sun dot com>
* sys/sunaudio/gstsunaudiomixerctrl.c:
(gst_sunaudiomixer_ctrl_get_volume),
(gst_sunaudiomixer_ctrl_set_volume):
* sys/sunaudio/gstsunaudiomixertrack.c: (gst_sunaudiomixer_track_new):
Fix up the mixer tracks to use a volume range of 0-255, which is what
the sun audio API uses. This simplifies the code and avoids rounding
errors. Fixes #524593.

ChangeLog
sys/sunaudio/gstsunaudiomixerctrl.c
sys/sunaudio/gstsunaudiomixertrack.c

index d4e2d38..f29cf13 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-03-27  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Brian Cameron <brian.cameron at sun dot com>
+
+       * sys/sunaudio/gstsunaudiomixerctrl.c:
+         (gst_sunaudiomixer_ctrl_get_volume),
+         (gst_sunaudiomixer_ctrl_set_volume):
+       * sys/sunaudio/gstsunaudiomixertrack.c: (gst_sunaudiomixer_track_new):
+         Fix up the mixer tracks to use a volume range of 0-255, which is what
+         the sun audio API uses. This simplifies the code and avoids rounding
+         errors. Fixes #524593.
+
 2008-03-26  Edgard Lima  <edgard.lima@indt.org.br>
 
        * sys/v4l2/gstv4l2object.c:
index 4a6244b..1299f53 100644 (file)
@@ -39,8 +39,6 @@
 GST_DEBUG_CATEGORY_EXTERN (sunaudio_debug);
 #define GST_CAT_DEFAULT sunaudio_debug
 
-#define SCALE_FACTOR 2.55       /* 255/100 */
-
 static gboolean
 gst_sunaudiomixer_ctrl_open (GstSunAudioMixerCtrl * mixer)
 {
@@ -187,16 +185,15 @@ gst_sunaudiomixer_ctrl_get_volume (GstSunAudioMixerCtrl * mixer,
 
   switch (sunaudiotrack->track_num) {
     case GST_SUNAUDIO_TRACK_OUTPUT:
-      gain = (int) ((float) audioinfo.play.gain / (float) SCALE_FACTOR + 0.5);
+      gain = (int) audioinfo.play.gain;
       balance = audioinfo.play.balance;
       break;
     case GST_SUNAUDIO_TRACK_LINE_IN:
-      gain = (int) ((float) audioinfo.record.gain / (float) SCALE_FACTOR + 0.5);
+      gain = (int) audioinfo.record.gain;
       balance = audioinfo.record.balance;
       break;
     case GST_SUNAUDIO_TRACK_MONITOR:
-      gain =
-          (int) ((float) audioinfo.monitor_gain / (float) SCALE_FACTOR + 0.5);
+      gain = (int) audioinfo.monitor_gain;
       balance = audioinfo.record.balance;
       break;
   }
@@ -272,15 +269,15 @@ gst_sunaudiomixer_ctrl_set_volume (GstSunAudioMixerCtrl * mixer,
   r_real_gain = volumes[1];
 
   if (l_real_gain == r_real_gain) {
-    gain = (int) ((float) l_real_gain * (float) SCALE_FACTOR + 0.5);
+    gain = l_real_gain;
     balance = AUDIO_MID_BALANCE;
   } else if (l_real_gain < r_real_gain) {
-    gain = (int) ((float) r_real_gain * (float) SCALE_FACTOR + 0.5);
+    gain = r_real_gain;
     ratio = (float) l_real_gain / (float) r_real_gain;
     balance =
         AUDIO_RIGHT_BALANCE - (int) (ratio * (float) AUDIO_MID_BALANCE + 0.5);
   } else {
-    gain = (int) ((float) l_real_gain * (float) SCALE_FACTOR + 0.5);
+    gain = l_real_gain;
     ratio = (float) r_real_gain / (float) l_real_gain;
     balance =
         AUDIO_LEFT_BALANCE + (int) (ratio * (float) AUDIO_MID_BALANCE + 0.5);
index e108695..082073e 100644 (file)
@@ -89,7 +89,7 @@ gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num,
   track->num_channels = max_chans;
   track->flags = flags;
   track->min_volume = 0;
-  track->max_volume = 100;
+  track->max_volume = 255;
   sunaudiotrack->track_num = track_num;
   sunaudiotrack->gain = (0 & 0xff);
   sunaudiotrack->balance = AUDIO_MID_BALANCE;