summaryrefslogtreecommitdiff
path: root/tests/test5/compute.c
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2012-06-01 20:21:08 +0000
committerLudovic Pouzenc <ludovic@pouzenc.fr>2012-06-01 20:21:08 +0000
commit70958d6e6d40802c0f6ac0ed55bf704fbe2c9fc3 (patch)
treecb73f0e4552b23eb988a8c3b12d442933f69113b /tests/test5/compute.c
parentf84862993fca45ffb3190d8e3ca0ae73ad4f2942 (diff)
download2012-violon-leds-70958d6e6d40802c0f6ac0ed55bf704fbe2c9fc3.tar.gz
2012-violon-leds-70958d6e6d40802c0f6ac0ed55bf704fbe2c9fc3.tar.bz2
2012-violon-leds-70958d6e6d40802c0f6ac0ed55bf704fbe2c9fc3.zip
Ecriture du test5 : intégration de PulseAudio dans le code du test4.
Le squelette est là, l'initialisation du contexte pulse audio aussi. Reste : ouvrir les flux, écrire le callback pulse qui récupère le niveau sonore (avec timing si possible) et qui appelle le callback applicatif du test5.c git-svn-id: file:///var/svn/2012-violon-leds/trunk@9 6be1fa4d-33ac-4c33-becc-79fcb3794bb6
Diffstat (limited to 'tests/test5/compute.c')
-rw-r--r--tests/test5/compute.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/test5/compute.c b/tests/test5/compute.c
new file mode 100644
index 0000000..11a7f81
--- /dev/null
+++ b/tests/test5/compute.c
@@ -0,0 +1,42 @@
+#include "compute.h"
+
+void audio2hsv_1(gint audio_level, gint *light_h, gint *light_s, gint *light_v) {
+ // Dummy code
+ *light_h=-audio_level;
+ *light_s=audio_level;
+ *light_v=65535;
+}
+
+
+void hsv2rgb(gint h, gint s, gint v, gint *r, gint *g, gint *b) {
+ /*
+ * Purpose:
+ * Convert HSV values to RGB values
+ * All values are in the range [0..65535]
+ */
+ float F, M, N, K;
+ int I;
+
+ if ( s == 0 ) {
+ /*
+ * Achromatic case, set level of grey
+ */
+ *r = v;
+ *g = v;
+ *b = v;
+ } else {
+ I = (int) h/(65535/6); /* should be in the range 0..5 */
+ F = h - I; /* fractional part */
+
+ M = v * (1 - s);
+ N = v * (1 - s * F);
+ K = v * (1 - s * (1 - F));
+
+ if (I == 0) { *r = v; *g = K; *b = M; }
+ if (I == 1) { *r = N; *g = v; *b = M; }
+ if (I == 2) { *r = M; *g = v; *b = K; }
+ if (I == 3) { *r = M; *g = N; *b = v; }
+ if (I == 4) { *r = K; *g = M; *b = v; }
+ if (I == 5) { *r = v; *g = M; *b = N; }
+ }
+}