--- gst-plugins-good-0.10.7/sys/sunaudio/gstsunaudiomixertrack.c-orig	2008-03-26 19:38:22.309884000 -0500
+++ gst-plugins-good-0.10.7/sys/sunaudio/gstsunaudiomixertrack.c	2008-03-26 19:38:28.338252000 -0500
@@ -89,7 +89,7 @@ gst_sunaudiomixer_track_new (GstSunAudio
   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;
--- gst-plugins-good-0.10.7/sys/sunaudio/gstsunaudiomixerctrl.c-orig	2008-03-26 19:38:41.497345000 -0500
+++ gst-plugins-good-0.10.7/sys/sunaudio/gstsunaudiomixerctrl.c	2008-03-26 19:43:00.240182000 -0500
@@ -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,16 @@ gst_sunaudiomixer_ctrl_get_volume (GstSu
 
   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);
+          (int) audioinfo.monitor_gain;
       balance = audioinfo.record.balance;
       break;
   }
@@ -272,15 +270,15 @@ gst_sunaudiomixer_ctrl_set_volume (GstSu
   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);
