Michael Rickmann schrieb:
[email protected] 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 [email protected] 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 [email protected] 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
};
};
_______________________________________________
Ekiga-devel-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/ekiga-devel-list