sys/sunaudio/gstsunaudio.c: Solve #152805.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 1 Oct 2004 11:44:22 +0000 (11:44 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 1 Oct 2004 11:44:22 +0000 (11:44 +0000)
Original commit message from CVS:
Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
* sys/sunaudio/gstsunaudio.c: (gst_sunaudiosink_setparams):
Solve #152805.
* sys/sunaudio/gstsunmixer.c: (gst_sunaudiomixer_set_mute):
Solve 152806.

ChangeLog
sys/sunaudio/gstsunaudio.c
sys/sunaudio/gstsunmixer.c

index f75ec54..ddabe57 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-10-01  Balamurali Viswanathan  <balamurali.viswanathan@wipro.com>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/sunaudio/gstsunaudio.c: (gst_sunaudiosink_setparams):
+         Solve #152805.
+       * sys/sunaudio/gstsunmixer.c: (gst_sunaudiomixer_set_mute):
+         Solve 152806.
+
 2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
 
        * gst-libs/gst/riff/riff-media.c:
index 057ec2b..42c8bc8 100644 (file)
@@ -276,6 +276,19 @@ gst_sunaudiosink_setparams (GstSunAudioSink * sunaudiosink)
 {
   audio_info_t ainfo;
   int ret;
+  int ports;
+
+  ret = ioctl (sunaudiosink->fd, AUDIO_GETINFO, &ainfo);
+  if (ret == -1) {
+    GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
+            strerror (errno)));
+    return FALSE;
+  }
+
+  ports = ainfo.play.port;
+  if (!(ports & AUDIO_SPEAKER) && (ainfo.play.avail_ports & AUDIO_SPEAKER)) {
+    ports = ports | AUDIO_SPEAKER;
+  }
 
   AUDIO_INITINFO (&ainfo);
 
@@ -283,7 +296,7 @@ gst_sunaudiosink_setparams (GstSunAudioSink * sunaudiosink)
   ainfo.play.channels = sunaudiosink->channels;
   ainfo.play.precision = sunaudiosink->width;
   ainfo.play.encoding = AUDIO_ENCODING_LINEAR;
-  ainfo.play.port = AUDIO_SPEAKER;
+  ainfo.play.port = ports;
   ainfo.play.buffer_size = sunaudiosink->buffer_size;
   ainfo.output_muted = 0;
 
index f79b772..6f0db25 100644 (file)
@@ -130,8 +130,7 @@ fill_labels (void)
   {
     gchar *given, *wanted;
   }
-  cases[] =
-  {
+  cases[] = {
     {
     "Vol  ", N_("Volume")}
     , {
@@ -279,13 +278,10 @@ gst_sunaudiomixer_set_mute (GstMixer * mixer,
     return;
 
   AUDIO_INITINFO (&audioinfo);
-  ioctl (sunaudio->mixer_fd, AUDIO_GETINFO, &audioinfo);
 
   if (mute) {
-    audioinfo.play.port = audioinfo.play.avail_ports;
     audioinfo.output_muted = 1;
   } else {
-    audioinfo.play.port = 0;
     audioinfo.output_muted = 0;
   }