diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2002-02-01 19:28:30 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2002-02-01 19:28:30 +0000 |
commit | 4d3b1472e78ac7c12460b26914c9a294a3de573a (patch) | |
tree | 4d9b1f0a6698385b086e37381b75b2d93bf85e39 /gst/goom/lines.c | |
parent | e5faa112b67c7681f653949413799180c7382451 (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.c | 90 |
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; + } + } +} + |