summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer/src/audiodriver.hcc
diff options
context:
space:
mode:
Diffstat (limited to 'Graphic_Equalizer/src/audiodriver.hcc')
-rw-r--r--Graphic_Equalizer/src/audiodriver.hcc107
1 files changed, 107 insertions, 0 deletions
diff --git a/Graphic_Equalizer/src/audiodriver.hcc b/Graphic_Equalizer/src/audiodriver.hcc
new file mode 100644
index 0000000..c7d1adf
--- /dev/null
+++ b/Graphic_Equalizer/src/audiodriver.hcc
@@ -0,0 +1,107 @@
+/*! \file header_templace.hcc
+ *
+ * \section generic Message build up information and more
+ *
+ * \section project Project information.
+ * Project Graphic Equalizer\n
+ * \author
+ * \date 20041011
+ * \version 0.1
+ *
+ * \section copyright Copyright
+ * Copyright ©2004 Koninklijke Philips Electronics N.V. All rights reserved
+ *
+ * \section history Change history
+ * 20041011: \n Initial version
+ *
+ ********************************************************************/
+
+/******** System Includes *************/
+#include <stdlib.hch>
+
+#include "pal_master.hch"
+
+/******** Application Includes ********/
+#include "audio.hch"
+#include "audio_shared.hch"
+
+
+
+/*! \fn void audio_init(unsigned 4 gain_level,
+ * unsigned 1 input_source,
+ * unsigned 3 sample_rate)
+ *
+ * \brief Set some inital values to the audio hardware.
+ *
+ * \param unsigned 4 gain_level Set the input amplifier to this
+ * amplification level.
+ * \param unsigned 1 input_source Choose between microphone input
+ * or linein input
+ * \param unsigned 3 sample_rate Set the sample rate between 8000
+ * and 48000
+ *
+ * \return void
+ * \retval void
+ *
+ */
+void audio_init(unsigned 4 gain_level,
+ unsigned 1 input_source,
+ unsigned 3 sample_rate) {
+ /*
+ * We simply call the appropiate handlers and pass values along. We
+ * Don't set the mute on input gain. We have volume control to do this.
+ * Input and Output sampling rates are equal. We dont' need different
+ * rates.
+ */
+ RC200AudioInSetGain(FALSE, gain_level, gain_level);
+ RC200AudioInSetInput(input_source);
+ PalAudioInSetSampleRate(AudioIn, sample_rate);
+ PalAudioOutSetSampleRate(AudioOut, sample_rate);
+} /* --- audio_init() --- */
+
+
+
+/*! \fn void audio_main(void);
+ * \brief Main audiodriver. This function never returns! It calls the
+ * audiohandlers and stores samples into a global array. Once 64
+ * Samples are collected it raises a signal AUDIO_READY to let
+ * other processes know it's ready. We use quadruple buffering for
+ * audio input and double buffering for audio output.
+ *
+ * \param void
+ *
+ * \return Never Returns.
+ * \retval void
+ */
+void audio_main(void) {
+ /*
+ * Setup audio pointers.
+ */
+ macro expr AudioIn = PalAudioInCT(0);
+ macro expr AudioOut = PalAudioOutCT(0);
+
+ /*
+ * Determin the data width for the current platform.
+ */
+ macro expr IW = PalAudioInGetMaxDataWidthCT();
+ macro expr OW = PalAudioOutGetMaxDataWidthCT();
+
+ signed IW sample_left_in, sample_right_in;
+ signed OW sample_left_out, sample_right_out;
+
+ for (;;) {
+ PalAudioRead(AudioIn, &sample_left_in, &sample_right_in);
+
+/* par {
+ sample_add(sample_left_in);
+ sample_get(&sample_left_out);
+ sample_right_out = sample_right_in;
+ }
+ if (rotate_samples()) {
+ / *
+ * 64 Samples have been processed, calculate.
+ * /
+ }
+*/ PalAudioWrite(AudioOut, (signed OW)(sample_left_in @ 0), (signed OW)(sample_right_in @ 0));
+ }
+} /* --- audio_main() --- */