summaryrefslogtreecommitdiff
path: root/gst/goom/lines.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2002-02-01 19:28:30 +0000
committerWim Taymans <wim.taymans@gmail.com>2002-02-01 19:28:30 +0000
commit4d3b1472e78ac7c12460b26914c9a294a3de573a (patch)
tree4d9b1f0a6698385b086e37381b75b2d93bf85e39 /gst/goom/lines.c
parente5faa112b67c7681f653949413799180c7382451 (diff)
Added a goom plugin (goom.sourceforge.net) to test: ./gst-launch filesrc location=/opt/data/south.mp3 ! mad ! tee sil...
Original commit message from CVS: Added a goom plugin (goom.sourceforge.net) to test: ./gst-launch filesrc location=/opt/data/south.mp3 ! mad ! tee silent=true src%d! goom ! colorspace ! xvideosink tee0.src%d! osssink
Diffstat (limited to 'gst/goom/lines.c')
-rw-r--r--gst/goom/lines.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/gst/goom/lines.c b/gst/goom/lines.c
new file mode 100644
index 000000000..fbab8b1c7
--- /dev/null
+++ b/gst/goom/lines.c
@@ -0,0 +1,90 @@
+/*
+ * lines.c
+ * iTunesXPlugIn
+ *
+ * Created by guillaum on Tue Aug 14 2001.
+ * Copyright (c) 2001 __CompanyName__. All rights reserved.
+ *
+ */
+
+#include "lines.h"
+#include <math.h>
+
+extern unsigned int resolx,resoly;
+
+inline unsigned char lighten(unsigned char value,unsigned char power)
+{
+ unsigned char i;
+ for (i=0;i < power; i++) value += (255-value)/5;
+ return value;
+}
+
+void goom_lines(gint16 data [2][512], unsigned int ID,unsigned int* p, guint32 power)
+{
+ guint32 color1;
+ guint32 color2;
+ unsigned char * color = 1 + (unsigned char *) &color1;
+
+ switch (ID)
+ {
+ case 0: // Horizontal stereo lines
+ {
+ color1 = 0x0000AA00;
+ color2 = 0x00AA0000;
+ break;
+ }
+
+ case 1: // Stereo circles
+ {
+ color1 = 0x00AA33DD;
+ color2 = 0x00AA33DD;
+ break;
+ }
+ }
+ *color = lighten(*color,power);
+ color++;
+ * color = lighten(*color,power);
+ color++;
+ * color = lighten(*color,power);
+ color = 1 + (unsigned char *) &color2;
+ * color = lighten(*color,power);
+ color++;
+ * color = lighten(*color,power);
+ color++;
+ * color = lighten(*color,power);
+
+ switch (ID)
+ {
+ case 0: // Horizontal stereo lines
+ {
+ unsigned int i;
+ for (i=0;i<512;i++)
+ {
+ guint32 plot ;
+ plot = i * resolx / 512 + (resoly / 4 + data[0][i] / 1600) * resolx;
+ p[plot] = color1;
+ p[plot+1] = color1;
+ plot = i * resolx / 512 + (resoly * 3 / 4 - data[1][i] / 1600) * resolx;
+ p[plot] = color2;
+ p[plot+1] = color2;
+ }
+ break;
+ }
+
+ case 1: // Stereo circles
+ {
+ float z;
+ unsigned int monX = resolx/2;
+ float monY = resoly/4;
+ float monY2 = resoly/2;
+ for (z=0;z<6.2832f; z+=1.0f/monY)
+ {
+ // float offset1 = 128+data[1][(unsigned int)(z*81.33f)])/200000;
+ p[ monX + (unsigned int)( (monY + ((float)resoly) * (128+data[1][(unsigned int)(z*81.33f)])/200000) * cos (z) + resolx * (unsigned int)( monY2 + (monY + ((float)resoly)*(128+data[1][(unsigned int)(z*81.33f)])/400000) * sin (z)))] = color1;
+ p[ monX + (unsigned int)((monY - ((float)resoly) * (128+data[0][(unsigned int)(z*81.33f)])/200000) * cos (z) + resolx * (unsigned int)( monY2 + (monY - ((float)resoly)*(128+data[0][(unsigned int)(z*81.33f)])/400000) * sin (z)))] = color2;
+ }
+ break;
+ }
+ }
+}
+