gstreamer/gst/audiovisualizers
Stefan Kost 008fa0770b basevisualizer: add more shader variants and simplify code
Use macros to simplyfy the shading code. Those will ease to add support for
other colorspaces in the future. Add more variants for the shading (left,right,
horiz-in, vert-out, vert-in).
2011-08-12 22:39:53 +02:00
..
gstbaseaudiovisualizer.c basevisualizer: add more shader variants and simplify code 2011-08-12 22:39:53 +02:00
gstbaseaudiovisualizer.h basevisualizer: add more shader variants and simplify code 2011-08-12 22:39:53 +02:00
gstspacescope.c audiovisualizers: remove some not needed boilerplate 2011-06-06 15:25:14 +03:00
gstspacescope.h audiovisualizers: add a spacescope element 2011-06-06 15:25:14 +03:00
gstspectrascope.c spectrascope: make a copy of the audiodata before downmixing and windowing 2011-08-12 16:57:49 +02:00
gstspectrascope.h audiovisualizers: rename baseclass from basescope to baseaudiovisualizer 2011-06-06 15:25:14 +03:00
gstsynaescope.c synaescope: tweak the algorithm 2011-06-06 15:25:14 +03:00
gstsynaescope.h audiovisualizers: rename baseclass from basescope to baseaudiovisualizer 2011-06-06 15:25:14 +03:00
gstwavescope.c audiovisualizers: remove some not needed boilerplate 2011-06-06 15:25:14 +03:00
gstwavescope.h audiovisualizers: rename baseclass from basescope to baseaudiovisualizer 2011-06-06 15:25:14 +03:00
Makefile.am audiovisualizers: add a spacescope element 2011-06-06 15:25:14 +03:00
plugin.c audiovisualizers: add a spacescope element 2011-06-06 15:25:14 +03:00
README audiovisualizers: add a README with comments and plans 2011-06-06 15:25:14 +03:00

A basclass for audiovisualizers. Takes care of re-fitting the audio-rate to
video-rate. It receives audio-data at the sampling-rate. It needs to render
video-frames at frame-rate. The rendering needs n audio samples (depends on
subclass). The baseclass takes care of that.

= Feedback =
* put 'Audio' to klass as well ?

= API =

* should we add some basic drawing helpers to the baseclass
  draw_point (x,y,color);
  draw_hline (x1,x2,y,color);
  draw_vline (x,y1,y2,color);
  draw_rect (x1,x2,y1,y2,color);
  draw_box (x1,x2,y1,y2,color); // filled
  - would be nice if we could use cairo
* shading effects
  - would be nice to use a generic 3x3 matrix operation, we don't run inplace
    anyway
  - this way we could also blur the background

= Elements to port =
gst-plugin-ugly/gst/synaestesia -> synaescope
gst-plugin-good/gst/monoscope -> blend into what we have in wavescope

= Elements to add =
spectrascope - done
spacescope - stereo wavescope
- left->x, right->y - done
- polar mapping

= TODO =
- element maker template
- test for baseclass

= Test it =

GST_DEBUG="*:2,*scope*:4"

GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-inspect scopes

GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-launch audiotestsrc ! audioconvert ! wavescope ! colorspace ! ximagesink
GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-launch filesrc location=/home/ensonic/Musik/xotox-hypnocat.mp3 ! decodebin2 ! audioconvert ! wavescope ! colorspace ! ximagesink
GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-launch filesrc location=/home/ensonic/Musik/xotox-hypnocat.mp3 ! decodebin2 ! audioconvert ! spectrascope ! colorspace ! ximagesink

GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-launch filesrc location=/home/ensonic/Musik/Gridlock/Trace/04\ Uh4.17.mp3 ! decodebin2 ! audioconvert ! spectrascope ! colorspace ! ximagesink
GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-launch filesrc location=/home/ensonic/Musik/Gridlock/Trace/04\ Uh4.17.mp3 ! decodebin2 ! audioconvert ! spectrascope shader=fade-and-move-up shade-amount=0x00040302 ! colorspace ! ximagesink

GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-launch filesrc location=/home/ensonic/Musik/Gridlock/Trace/04\ Uh4.17.mp3 ! decodebin2 ! tee name=t ! queue ! audioconvert ! synaesthesia ! ximagesink t. ! queue ! synaescope shade-amount=0x00040404 ! colorspace ! ximagesink