audiofile support + improved sample rate support + results of a -Wall -Werr
[terminatorX.git] / src / tX_audiofile.h
index 516feccfd912536ab36140dde9efbc74beae7988..637714ae040869adcf41a6b624debab5e3f18e32 100644 (file)
@@ -57,27 +57,41 @@ but mpg321 doesn't support -m yet.
  * have that problem */
 #endif /* USE_OGG123_INPUT */
 
+enum tX_audio_error {
+       TX_AUDIO_SUCCESS,
+       TX_AUDIO_ERR_ALLOC,
+       TX_AUDIO_ERR_PIPE_READ,
+       TX_AUDIO_ERR_SOX,
+       TX_AUDIO_ERR_MPG123,
+       TX_AUDIO_ERR_WAV_NOTFOUND,
+       TX_AUDIO_ERR_NOT_16BIT,
+       TX_AUDIO_ERR_NOT_MONO,
+       TX_AUDIO_ERR_WAV_READ,
+       TX_AUDIO_ERR_NOT_SUPPORTED,
+       TX_AUDIO_ERR_OGG123,
+       TX_AUDIO_ERR_MAD_OPEN,
+       TX_AUDIO_ERR_MAD_STAT,
+       TX_AUDIO_ERR_MAD_DECODE,
+       TX_AUDIO_ERR_MAD_MMAP,
+       TX_AUDIO_ERR_MAD_MUNMAP,
+       TX_AUDIO_ERR_VORBIS_OPEN,
+       TX_AUDIO_ERR_VORBIS_NODATA,
+       TX_AUDIO_ERR_AF_OPEN,
+       TX_AUDIO_ERR_AF_NODATA  
+};
+
+enum tX_audio_storage_type {
+       TX_AUDIO_UNDEFINED,
+       TX_AUDIO_MMAP,
+       TX_AUDIO_LOAD
+};
 
-#define TX_AUDIO_SUCCESS 0
-#define TX_AUDIO_ERR_ALLOC 1
-#define TX_AUDIO_ERR_PIPE_READ 2
-#define TX_AUDIO_ERR_SOX 3
-#define TX_AUDIO_ERR_MPG123 4
-#define TX_AUDIO_ERR_WAV_NOTFOUND 5
-#define TX_AUDIO_ERR_NOT_16BIT 6
-#define TX_AUDIO_ERR_NOT_MONO 7
-#define TX_AUDIO_ERR_WAV_READ 8
-#define TX_AUDIO_ERR_NOT_SUPPORTED 9
-#define TX_AUDIO_ERR_OGG123 10
-
-#define TX_AUDIO_UNDEFINED 0
-#define TX_AUDIO_MMAP 1
-#define TX_AUDIO_LOAD 2
-
-#define TX_FILE_UNDEFINED 0
-#define TX_FILE_WAV 1
-#define TX_FILE_MPG123 2
-#define TX_FILE_OGG123 3
+enum tX_audio_file_type {
+       TX_FILE_UNDEFINED,
+       TX_FILE_WAV,
+       TX_FILE_MPG123,
+       TX_FILE_OGG123
+};
 
 #include <limits.h>
 #include "tX_types.h"
@@ -86,40 +100,58 @@ but mpg321 doesn't support -m yet.
 class tx_audiofile
 {
        private:
-       int mem_type;
-       int file_type;
+       tX_audio_storage_type mem_type;
+       tX_audio_file_type file_type;
        
        FILE *file;
        char filename[PATH_MAX];
        int16_t *mem;
        size_t memsize;
        long no_samples;        
+       unsigned int sample_rate; //in HZ       
 
 #ifdef USE_BUILTIN_WAV
-       int load_wav();
+       tX_audio_error load_wav();
 #endif
+       
 #ifdef USE_SOX_INPUT   
-       int load_sox();
+       tX_audio_error load_sox();
 #define NEED_PIPED 1   
 #endif
+
+#ifdef USE_AUDIOFILE_INPUT
+       tX_audio_error load_af();
+#endif
+
+#ifdef USE_MAD_INPUT
+       tX_audio_error load_mad();
+       int mad_decode(unsigned char const *start, unsigned long length);       
+#endif
+
 #ifdef USE_MPG123_INPUT        
-       int load_mpg123();
+       tX_audio_error load_mpg123();
 #define NEED_PIPED 1   
 #endif
+
+#ifdef USE_VORBIS_INPUT
+       tX_audio_error load_vorbis();
+#endif
+
 #ifdef USE_OGG123_INPUT
-       int load_ogg123();
+       tX_audio_error load_ogg123();
 #define NEED_PIPED 1
 #endif
 
 #ifdef NEED_PIPED
-       int load_piped();
+       tX_audio_error load_piped();
 #endif
        void figure_file_type();
        
        public:
        tx_audiofile();
+       unsigned int get_sample_rate() { return sample_rate; }
        
-       int load(char *p_file_name);
+       tX_audio_error load(char *p_file_name);
        int16_t *get_buffer() { return mem; };
        long get_no_samples() { return no_samples; };