summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2005-01-11 14:20:00 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2005-01-11 14:20:00 (GMT)
commit976a1554a629f7183732f25ba33a77c8628ce04a (patch)
tree3f4ef29d9d581ae6ad748f51d5da9feb1eb4d405 /Graphic_Equalizer
parent0fd04472608bee2507bef478ab8105b1438fe068 (diff)
downloadTASS-976a1554a629f7183732f25ba33a77c8628ce04a.zip
TASS-976a1554a629f7183732f25ba33a77c8628ce04a.tar.gz
TASS-976a1554a629f7183732f25ba33a77c8628ce04a.tar.bz2
modified doxygen comments, added automatic input gain control
Diffstat (limited to 'Graphic_Equalizer')
-rw-r--r--Graphic_Equalizer/src/audio.hcc92
1 files changed, 57 insertions, 35 deletions
diff --git a/Graphic_Equalizer/src/audio.hcc b/Graphic_Equalizer/src/audio.hcc
index b461812..2a65700 100644
--- a/Graphic_Equalizer/src/audio.hcc
+++ b/Graphic_Equalizer/src/audio.hcc
@@ -46,6 +46,7 @@ ram signed 16 audio_buffer_out[128] with { block = "BlockRAM"};
ram unsigned 4 EQ_info[128] with { block = "BlockRAM"};
//EQ settings received from the display
+chan 1 event_notification;
#if HARDWARE_MULTIPLY
signed 18 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
@@ -94,17 +95,17 @@ macro proc audio_init(input_source, sample_rate, AUDIOIN, AUDIOOUT) {
#if !USE_RUNFFT
-/*! @fn macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT);
+/*! /fn macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT);
*
- * @brief Main audiodriver. This function never returns! It copies the audio
+ * /brief Main audiodriver. This function never returns! It copies the audio
* input directly to the audio output
*
- * @param *audiodata pointer to audio information structure.
- * @param AUDIOIN Audio Input Handler
- * @param AUDIOOUT Audio Output Handler
+ * /param *audiodata pointer to audio information structure.
+ * /param AUDIOIN Audio Input Handler
+ * /param AUDIOOUT Audio Output Handler
*
- * @return Never Returns.
- * @retval void
+ * /return Never Returns.
+ * /retval void
*/
macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT) {
/*
@@ -123,20 +124,20 @@ macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT) {
} /* --- audio_main() --- */
#else
-/*! @fn macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT);
+/*! /fn macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT);
*
- * @brief Main audiodriver. This function never returns! It calls the
+ * /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 audiodata pointer to audio information structure.
- * @param AUDIOIN Audio Input Handler
- * @param AUDIOOUT Audio Output Handler
+ * /param audiodata pointer to audio information structure.
+ * /param AUDIOIN Audio Input Handler
+ * /param AUDIOOUT Audio Output Handler
*
- * @return Never Returns.
- * @retval void
+ * /return Never Returns.
+ * /retval void
*/
macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT)
{
@@ -157,24 +158,24 @@ macro proc audio_main(audiodata, AUDIOIN, AUDIOOUT)
FFT_Sync=0;
par
{
- runfft(audiodata);
- sample_audio(AUDIOOIN);
+ run_fft(audiodata);
+ sample_audio(audiodata, AUDIOOIN);
output_audio(AUDIOOOUT);
}//end par
} /* --- audio_main() --- */
#endif
-/*! @fn macro proc run_fft(audiodata);
+/*! /fn macro proc run_fft(audiodata);
*
- * @brief FFT loop, waits until 64 samples are read from the audio input
+ * /brief 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.
*
- * @param audiodata pointer to audio information structure.
+ * /param audiodata pointer to audio information structure.
*
- * @return Never Returns.
- * @retval void
+ * /return Never Returns.
+ * /retval void
*/
macro proc run_fft(audiodata)
{
@@ -216,20 +217,23 @@ macro proc run_fft(audiodata)
}
} /* --- run_fft() --- */
-/*! @fn macro proc sample_audio(ADUIOIN);
+/*! /fn macro proc sample_audio(ADUIOIN);
*
- * @brief Sampling loop, fills the audio input and output arrays and uses FFT_Sync
+ * /brief 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.
*
- * @param audiodata pointer to audio information structure.
+ * /param audiodata pointer to audio information structure.
*
- * @return Never Returns.
- * @retval void
+ * /return Never Returns.
+ * /retval void
*/
-macro proc sample_audio(AUDIOOIN)
+macro proc sample_audio(audiodata, AUDIOOIN)
{
macro expr IW = PalAudioInGetMaxDataWidthCT();
- signed LeftNew, RightNew;
+ signed IW LeftNew, RightNew;
+
+ unsigned 8 not_saturated;
+ unsigned 2 saturation;
for(sample_count=0;;)//store the samples in the inputbuffer
{
@@ -245,7 +249,24 @@ macro proc sample_audio(AUDIOOIN)
#else
audioptr_in1[sample_count] = (LeftNew\\2);//drop 2 LSB's
#endif
- sample_count++;
+ if (LeftNew > 130000) {
+ saturation++;
+ if (!saturation) {
+ audiodata.saturated = TRUE;
+ event_notification ! TRUE;
+ } else {
+ audiodata.saturated = FALSE;
+ }
+ } else {
+ not_saturated++;
+ if (!not_saturated) {
+ audiodata.saturated = FALSE;
+ saturation = 0;
+ event_notification ! TRUE;
+ }
+ }
+
+ sample_count++;
if (!sample_count)
{
FFT_Sync = 1;
@@ -264,18 +285,19 @@ macro proc sample_audio(AUDIOOIN)
}
}/* --- sample_audio() --- */
-/*! @fn macro proc output_audio(ADUIOOUT);
+/*! /fn macro proc output_audio(ADUIOOUT);
*
- * @brief Sampling loop, fills the audio input and output arrays and uses FFT_Sync
+ * /brief 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.
*
- * @param audiodata pointer to audio information structure.
+ * /param audiodata pointer to audio information structure.
*
- * @return Never Returns.
- * @retval void
+ * /return Never Returns.
+ * /retval void
*/
-macro proc output_audio(AUDIOOUT)
+macro proc output_audio(AUDIOOUT)
{
+ macro expr OW = PalAudioOutGetMaxDataWidthCT();
/*
* Audio output loop, writes the modified audio samples to the audio output.
*/