mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 13:41:48 +00:00
4d3b1472e7
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
90 lines
2.6 KiB
C
90 lines
2.6 KiB
C
/*
|
|
* 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;
|
|
}
|
|
}
|
|
}
|
|
|