/*! \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 --- */