Re: [Ekiga-devel-list] Windows XP: "wave" volume goes to zero when calling
- From: Michael Rickmann <mrickma gwdg de>
- To: Ekiga development mailing list <ekiga-devel-list gnome org>
- Subject: Re: [Ekiga-devel-list] Windows XP: "wave" volume goes to zero when calling
- Date: Sat, 15 Aug 2009 20:25:07 +0200
Michael Rickmann schrieb:
my kabelfunk de schrieb:
Hi,
I've installed Ekiga 3.2.5 on Windows XP and as far as I see it works
fine, but... :-)
I used the call back service 530 ekiga net for my test.
When the incoming coming window pops up the volume for WAVE in the
audio mixer goes to maximum.
After clicking anwer ("abnehmen") the volume of WAVE goes to zero and I
hear nothing.
Doing a 500 ekiga net echo test has the same effect: After the
connection is established the volume is zero.
This happens on a reals XP machine as well as in VirtualBox.
regards
Dominik
PS:
I know there is a small speaker button in ekiga where I can raise the
"wave" volume, too.
But the default seems to be zero, is only configurable during a call and
doesn't save the value between restarts.
Yes, it is a real nuisance. I think that Ptlib does not have control
over the volume settings of the Windows Multimedia interface when
opening the device, but Ekiga just relies on it. Attached patch fixes
that. This does not yet allow Win32 Ekiga to restore output volume from
the last run. I work on that using an extra config key.
The zero setting of the volume slider is a third different shortcoming.
Regards
Michael
Hi Dominik,
I think I fixed all the audio-output volume settings issues for Win32
with attached two patches. ekiga_1outvolume.diff keeps the output volume
across calls, ekiga_2outvolume.diff across Ekiga sessions - the latter
is more intrusive as it introduces a new config key into the database
which for Win32 is in ekiga.conf. I am just uploading new files to my
directory. Could you try
http://wwwuser.gwdg.de/~mrickma/ekiga/ekiga-setup-3.2.pre6-release.exe.
I have tested it under XP-SP2 and 7RC. Could you tell me if it fixes the
audio for you. For audio input use the general Windows sliders, its a
thing I don't see any pattern yet.
Regards
Michael
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp ekiga/lib/engine/audiooutput/audiooutput-core.cpp
--- ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp 2009-08-15 18:44:04.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-core.cpp 2009-08-15 18:44:57.000000000 +0200
@@ -364,6 +364,14 @@
AudioOutputSettings settings,
AudioOutputManager *manager)
{
+#ifdef WIN32
+ /* with the next frame the current volume will be updated
+ to the desired one without further notice, signal it in advance */
+ if (ps == primary) {
+ current_primary_volume = settings.volume;
+ settings.volume = desired_primary_volume;
+ }
+#endif
device_opened.emit (*manager, ps, device, settings);
}
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp ekiga/lib/engine/audiooutput/audiooutput-core.cpp
--- ekiga.orig/lib/engine/audiooutput/audiooutput-core.cpp 2009-08-15 08:35:36.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-core.cpp 2009-08-15 08:36:08.000000000 +0200
@@ -260,6 +260,9 @@
void AudioOutputCore::stop()
{
+#ifdef WIN32
+ audiooutput_core_conf_bridge->save_volume (primary, current_primary_volume);
+#endif
yield = true;
PWaitAndSignal m_pri(core_mutex[primary]);
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-gmconf-bridge.cpp ekiga/lib/engine/audiooutput/audiooutput-gmconf-bridge.cpp
--- ekiga.orig/lib/engine/audiooutput/audiooutput-gmconf-bridge.cpp 2009-08-15 08:34:53.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-gmconf-bridge.cpp 2009-08-15 08:36:16.000000000 +0200
@@ -52,6 +52,9 @@
property_changed.connect (sigc::mem_fun (this, &AudioOutputCoreConfBridge::on_property_changed));
keys.push_back (AUDIO_DEVICES_KEY "output_device");
+#ifdef WIN32
+ keys.push_back (AUDIO_DEVICES_KEY "output_volume");
+#endif
keys.push_back (SOUND_EVENTS_KEY "output_device");
keys.push_back (SOUND_EVENTS_KEY "busy_tone_sound");
keys.push_back (SOUND_EVENTS_KEY "incoming_call_sound");
@@ -102,6 +105,18 @@
audioinput_core.set_device (primary, device);
}
+#ifdef WIN32
+ if (key == AUDIO_DEVICES_KEY "output_volume") {
+ PTRACE(4, "AudioOutputCoreConfBridge\tUpdating volume for primary");
+
+ gint volume = gm_conf_entry_get_int (entry);
+ if ((volume < 0) || (volume > 100))
+ volume = 0;
+
+ audioinput_core.set_volume (primary, volume);
+ }
+#endif
+
if (key == SOUND_EVENTS_KEY "output_device") {
PTRACE(4, "AudioOutputCoreConfBridge\tUpdating device");
@@ -214,3 +229,13 @@
}
}
+#ifdef WIN32
+void AudioOutputCoreConfBridge::save_volume (AudioOutputPS ps, int volume)
+{
+ AudioOutputCore & audioinput_core = (AudioOutputCore &) service;
+
+ if (ps == primary)
+ gm_conf_set_int (AUDIO_DEVICES_KEY "output_volume", volume);
+}
+#endif
+
diff -ur ekiga.orig/lib/engine/audiooutput/audiooutput-gmconf-bridge.h ekiga/lib/engine/audiooutput/audiooutput-gmconf-bridge.h
--- ekiga.orig/lib/engine/audiooutput/audiooutput-gmconf-bridge.h 2009-08-15 08:34:53.000000000 +0200
+++ ekiga/lib/engine/audiooutput/audiooutput-gmconf-bridge.h 2009-08-15 08:36:25.000000000 +0200
@@ -38,6 +38,9 @@
#define __AUDIOOUTPUT_GMCONF_BRIDGE_H__
#include "services.h"
+#ifdef WIN32
+#include "audiooutput-info.h"
+#endif
#include "gmconf-bridge.h"
namespace Ekiga
@@ -50,6 +53,9 @@
AudioOutputCoreConfBridge (Ekiga::Service & service);
void on_property_changed (std::string key, GmConfEntry *value);
+#ifdef WIN32
+ void save_volume (AudioOutputPS ps, int volume);
+#endif
};
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]