summaryrefslogtreecommitdiff
path: root/src/libaudcore/visualizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libaudcore/visualizer.h')
-rw-r--r--src/libaudcore/visualizer.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/libaudcore/visualizer.h b/src/libaudcore/visualizer.h
new file mode 100644
index 0000000..d99eaff
--- /dev/null
+++ b/src/libaudcore/visualizer.h
@@ -0,0 +1,49 @@
+/*
+ * visualizer.h
+ * Copyright 2014 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef LIBAUDCORE_VISUALIZER_H
+#define LIBAUDCORE_VISUALIZER_H
+
+class Visualizer
+{
+public:
+ enum {
+ MonoPCM = (1 << 0),
+ MultiPCM = (1 << 1),
+ Freq = (1 << 2)
+ };
+
+ const int type_mask;
+ constexpr Visualizer (int type_mask) :
+ type_mask (type_mask) {}
+
+ /* reset internal state and clear display */
+ virtual void clear () = 0;
+
+ /* 512 frames of a single-channel PCM signal */
+ virtual void render_mono_pcm (const float * pcm) {}
+
+ /* 512 frames of an interleaved multi-channel PCM signal */
+ virtual void render_multi_pcm (const float * pcm, int channels) {}
+
+ /* intensity of frequencies 1/512, 2/512, ..., 256/512 of sample rate */
+ virtual void render_freq (const float * freq) {}
+};
+
+#endif /* LIBAUDCORE_VISUALIZER_H */