summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer_v1.0/include/audio.hch
diff options
context:
space:
mode:
Diffstat (limited to 'Graphic_Equalizer_v1.0/include/audio.hch')
-rw-r--r--Graphic_Equalizer_v1.0/include/audio.hch114
1 files changed, 114 insertions, 0 deletions
diff --git a/Graphic_Equalizer_v1.0/include/audio.hch b/Graphic_Equalizer_v1.0/include/audio.hch
new file mode 100644
index 0000000..051e8fb
--- /dev/null
+++ b/Graphic_Equalizer_v1.0/include/audio.hch
@@ -0,0 +1,114 @@
+/*! \file audio.hch
+ *
+ * \section generic Graphic Equalizer API
+ *
+ * \section project Project information.
+ * Project Graphic Equalizer\n
+ * \author O.M. Schinagl
+ * \date 20041021
+ * \version 0.1
+ *
+ * \section copyright Copyright
+ * Copyright ©2004 Koninklijke Philips Electronics N.V. All rights reserved
+ *
+ * \section history Change history
+ * 20041021: O.M. Schinagl\n Initial version
+ *
+ ********************************************************************/
+
+#ifndef _AUDIO_HCH
+#define _AUDIO_HCH 1
+
+/*
+ * Type definition of the shared memory to be used in various processes
+ */
+typedef struct {
+ mpram {
+ ram unsigned 7 write[256];
+ rom unsigned 7 read[256];
+ } fft_info with { block = "BlockRAM"};
+ mpram {
+ ram unsigned 6 write[256];
+ rom unsigned 6 read[256];
+ } ifft_info with { block = "BlockRAM"};
+ unsigned 4 *equalizer_levels_ptr;
+ unsigned 1 display_log;
+ unsigned 1 saturated;
+ unsigned 1 play;
+} audiodata_t;
+
+
+
+
+/*
+ * States used to indicate wether audio data is sampled.
+ */
+#define AUDIO_NOT_READY 0
+#define AUDIO_READY 1
+
+
+
+/*
+ * Line in or Mic in aliases for audio_init.
+ */
+#define LINE_IN RC200AudioInLineIn
+#define MIC_IN RC200AudioInMicrophone
+
+
+
+/*
+ * Sample Rate Aliases for audio_init.
+ */
+#define SR_8000 RC200AudioSampleRate8000
+#define SR_11025 RC200AudioSampleRate11025
+#define SR_16000 RC200AudioSampleRate16000
+#define SR_22050 RC200AudioSampleRate22050
+#define SR_44100 RC200AudioSampleRate44100
+#define SR_48000 RC200AudioSampleRate48000
+
+
+
+/*
+ * Convert microseconds to something our code understands.
+ */
+#define AUDIOINITDELAY ((PAL_ACTUAL_CLOCK_RATE *AUDIOINIT_MICROSECONDS) /1000000)
+
+
+
+/*
+ * Initialize the Audio sub-system. Input_source chooses between line in or mic
+ * in. The sample_rate is set to supplied rate. Defines for these are mentioned
+ * above.
+ */
+macro proc audio_init(input_source, sample_rate, AUDIOIN, AUDIOOUT);
+
+
+
+/*
+ * Main audiodriver loop. This procedure never returns! It handles audio io and
+ * updates the shared memory. It needs Audio I/O handlers passed.
+ */
+macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT);
+
+/*
+ * FFT loop, waits until 64 samples are read from the audio input
+ * before switching the pointers needed for double and quadruple buffering, after that
+ * sequentially calling the perform_fft, equalize_audio and perform_ifft functions.
+ */
+macro proc run_fft(audiodata);
+
+/*
+ * Sampling loop, fills the audio input and output arrays and uses FFT_Sync
+ * to notify the FFT when 64 samples are read from the audio input.
+ */
+macro proc sample_audio(audiodata, AUDIOOIN);
+
+/*
+ * Audio output loop, writes the modified audio samples to the audio output.
+ */
+macro proc output_audio(AUDIOOUT);
+
+#else
+#error "ERROR file audio.hch multiple times included"
+#endif /* --- _AUDIO_HCH --- */
+