[Banshee-devel-list] [PATCH] Helix backend Equalizer
- From: "Ivan N. Zlatev" <contact i-nz net>
- To: banshee-devel-list gnome org
- Subject: [Banshee-devel-list] [PATCH] Helix backend Equalizer
- Date: Sun, 23 Jul 2006 01:11:05 +0300
Hey,
Here are 2 patches to enable the equalizer in the Helix media engine
backend. One for the helix-dbus-server and one for the media engine
itself.
Please review.
Cheers,
--
Ivan N. Zlatev
Web: http://www.i-nZ.net
GPG Key: http://files.i-nZ.net/i-nZ.asc
"It's all some kind of whacked out conspiracy."
Index: src/Banshee.MediaEngine/Helix/HelixRemotePlayer.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.MediaEngine/Helix/HelixRemotePlayer.cs,v
retrieving revision 1.6
diff -u -r1.6 HelixRemotePlayer.cs
--- src/Banshee.MediaEngine/Helix/HelixRemotePlayer.cs 20 Apr 2006 18:05:14 -0000 1.6
+++ src/Banshee.MediaEngine/Helix/HelixRemotePlayer.cs 22 Jul 2006 22:02:44 -0000
@@ -167,6 +167,9 @@
[Method] public abstract void Shutdown();
[Method] public abstract void Ping();
[Method] public abstract bool GetIsLive();
+ [Method] public abstract bool GetIsEqualizerEnabled();
+ [Method] public abstract void SetEqualizerEnabled(bool enabled);
+ [Method] public abstract void SetEqualizerGain(int frequencyId, int value);
}
public enum ContentState {
Index: src/Banshee.MediaEngine/Helix/HelixRemotePlayerEngine.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.MediaEngine/Helix/HelixRemotePlayerEngine.cs,v
retrieving revision 1.6
diff -u -r1.6 HelixRemotePlayerEngine.cs
--- src/Banshee.MediaEngine/Helix/HelixRemotePlayerEngine.cs 20 Apr 2006 18:05:14 -0000 1.6
+++ src/Banshee.MediaEngine/Helix/HelixRemotePlayerEngine.cs 22 Jul 2006 22:02:44 -0000
@@ -3,6 +3,7 @@
*
* Copyright (C) 2006 Novell, Inc
* Written by Aaron Bockover <aaron abock org>
+ * Ivan N. Zlatev <contact i-nZ.net>
****************************************************************************/
/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
@@ -36,7 +37,7 @@
namespace Banshee.MediaEngine.Helix
{
- public class HelixRemotePlayerEngine : PlayerEngine
+ public class HelixRemotePlayerEngine : PlayerEngine, IEqualizer
{
private RemotePlayer player;
private uint timeout_id;
@@ -191,6 +192,72 @@
private static string [] decoder_capabilities = { "m4a", "mp3", "ram", "ra", "rm", "aac", "mp4" };
public override IEnumerable ExplicitDecoderCapabilities {
get { return decoder_capabilities; }
+ }
+
+ // IEqualizer implementation
+ //
+
+ // Helix range (out): -144..144
+ // Plugin range (in): -100 .. 100
+ // Helix = Plugin * 1.44 = Plugin * 144/100
+ //
+ public void SetEqualizerGain (uint frequency, int value)
+ {
+ if (value < -100 || value > 100) {
+ throw new ArgumentOutOfRangeException ("value");
+ }
+
+ if (player.GetIsEqualizerEnabled () == false) {
+ player.SetEqualizerEnabled (true);
+ }
+
+ int frequencyId = -1;
+
+ switch (frequency) {
+ case 31:
+ frequencyId = 0;
+ break;
+ case 62:
+ frequencyId = 1;
+ break;
+ case 125:
+ frequencyId = 2;
+ break;
+ case 250:
+ frequencyId = 3;
+ break;
+ case 500:
+ frequencyId = 4;
+ break;
+ case 1000:
+ frequencyId = 5;
+ break;
+ case 2000:
+ frequencyId = 6;
+ break;
+ case 4000:
+ frequencyId = 7;
+ break;
+ case 8000:
+ frequencyId = 8;
+ break;
+ case 16000:
+ frequencyId = 9;
+ break;
+ }
+
+ if (frequencyId != -1) {
+ player.SetEqualizerGain (frequencyId, (value * 144 / 100));
+ }
+ }
+
+ public uint[] EqualizerFrequencies {
+ get { return new uint[] { 31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 16000 }; }
+ }
+
+ public int AmplifierLevel {
+ get { return 0; }
+ set { }
}
}
}
Index: src/helix-dbus-server.cc
===================================================================
--- src/helix-dbus-server.cc (revision 184)
+++ src/helix-dbus-server.cc (working copy)
@@ -3,6 +3,7 @@
*
* Copyright (C) 2006 Novell, Inc
* Written by Aaron Bockover <aaron abock org>
+ * Ivan N. Zlatev <contact i-nZ.net>
****************************************************************************/
/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
@@ -86,6 +87,9 @@
METHOD_HANDLER_DEFINE(helix_dbus_server_handle_get_position);
METHOD_HANDLER_DEFINE(helix_dbus_server_handle_set_position);
METHOD_HANDLER_DEFINE(helix_dbus_server_handle_get_is_live);
+METHOD_HANDLER_DEFINE(helix_dbus_server_handle_get_is_eq_enabled);
+METHOD_HANDLER_DEFINE(helix_dbus_server_handle_set_eq_enabled);
+METHOD_HANDLER_DEFINE(helix_dbus_server_handle_set_eq_gain);
static HelixDbusMethodVTable method_handler_vtable [] = {
{ "Ping", DBUS_TYPE_INVALID, helix_dbus_server_handle_ping },
@@ -102,6 +106,9 @@
{ "GetPosition", DBUS_TYPE_UINT32, helix_dbus_server_handle_get_position },
{ "SetPosition", DBUS_TYPE_BOOLEAN, helix_dbus_server_handle_set_position },
{ "GetIsLive", DBUS_TYPE_BOOLEAN, helix_dbus_server_handle_get_is_live },
+ { "GetIsEqualizerEnabled", DBUS_TYPE_BOOLEAN, helix_dbus_server_handle_get_is_eq_enabled },
+ { "SetEqualizerEnabled", DBUS_TYPE_INVALID, helix_dbus_server_handle_set_eq_enabled },
+ { "SetEqualizerGain", DBUS_TYPE_INVALID, helix_dbus_server_handle_set_eq_gain },
{ NULL, 0, NULL }
};
@@ -405,7 +412,37 @@
*return_value = (gpointer)ClientPlayerIsLive(PLAYER_TOKEN(server->player));
}
+static void
+helix_dbus_server_handle_get_is_eq_enabled(HelixDbusServer *server, DBusMessage *message,
+ void **return_value)
+{
+ *return_value = (gpointer)ClientPlayerIsEQEnabled(PLAYER_TOKEN(server->player));
+}
+static void
+helix_dbus_server_handle_set_eq_enabled(HelixDbusServer *server, DBusMessage *message,
+ void **return_value)
+{
+ gboolean enabled;
+
+ if(dbus_message_get_args(message, NULL, DBUS_TYPE_BOOLEAN, &enabled, DBUS_TYPE_INVALID)) {
+ ClientPlayerEnableEQ(PLAYER_TOKEN(server->player), enabled);
+ }
+}
+
+static void
+helix_dbus_server_handle_set_eq_gain(HelixDbusServer *server, DBusMessage *message,
+ void **return_value)
+{
+ gint frequencyId;
+ gint value;
+
+ if(dbus_message_get_args(message, NULL, DBUS_TYPE_INT32, &frequencyId, DBUS_TYPE_INT32, &value , DBUS_TYPE_INVALID)) {
+ ClientPlayerSetEQGain(PLAYER_TOKEN(server->player), frequencyId, value);
+ }
+}
+
+
// public methods
HelixDbusServer *
[
Date Prev][Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]