diff options
Diffstat (limited to 'src/common/includes/Audio/audio.h')
-rw-r--r-- | src/common/includes/Audio/audio.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/common/includes/Audio/audio.h b/src/common/includes/Audio/audio.h new file mode 100644 index 0000000..006f82e --- /dev/null +++ b/src/common/includes/Audio/audio.h @@ -0,0 +1,50 @@ +#ifndef __AUDIO_H__ +#define __AUDIO_H__ + +#include <stdint.h> +#include <stdbool.h> + +typedef void AudioCallbackFunction(void *context,int buffer); + +#define Audio8000HzSettings 256,5,12,1,8000 +#define Audio16000HzSettings 213,2,13,0,16000 +#define Audio32000HzSettings 213,2,6,1,32000 +#define Audio48000HzSettings 258,3,3,1,48000 +#define Audio96000HzSettings 344,2,3,1,96000 +#define Audio22050HzSettings 429,4,9,1,22050 +#define Audio44100HzSettings 271,2,6,0,44100 +#define AudioVGAHSyncSettings 419,2,13,0,31475 // 31475.3606. Actual VGA timer is 31472.4616. + +#define AUDIO_BUF_LEN 4096 + + +// Initialize and power up audio hardware. Use the above defines for the parameters. +// Can probably only be called once. +void audio_initialize(int plln,int pllr,int i2sdiv,int i2sodd, int rate); + +// Power up and down the audio hardware. +void audio_on(); +void audio_off(); + +// Set audio volume in steps of 0.5 dB. 0xff is +12 dB. +void audio_set_volume(int volume); + +// Output one audio sample directly to the hardware without using DMA. +void audio_output_sample(int16_t sample); +void audio_output_sample_without_blocking(int16_t sample); + +// Start and stop audio playback using DMA. +// Callback is optional, and called whenever a new buffer is needed. +void audio_play_with_callback(AudioCallbackFunction *callback,void *context); +void audio_stop(); + +// Provide a new buffer to the audio DMA. Output is double buffered, so +// at least two buffers must be maintained by the program. It is not allowed +// to overwrite the previously provided buffer until after the next callback +// invocation. +// Buffers must reside in DMA1-accessible memory, that is, the 128k RAM bank, +// or flash. +void audio_provide_buffer(void *samples,int numsamples); +bool audio_provide_buffer_without_blocking(void *samples,int numsamples); + +#endif |