even more ALSA - should compile - Alex
authorterminatorX <>
Tue, 17 Jul 2001 22:19:17 +0000 (22:19 +0000)
committerterminatorX <>
Tue, 17 Jul 2001 22:19:17 +0000 (22:19 +0000)
src/tX_audiodevice.cc
src/tX_audiodevice.h
src/tX_global.c
src/tX_global.h

index 8c117e12908831021d079e8675e3b1bce2f7d4f6..85545314fdb0eaee4265f07c3b727a479893934d 100644 (file)
@@ -62,11 +62,13 @@ int tX_audiodevice :: get_buffersize()
 int tX_audiodevice :: open()
 {
        fprintf(stderr, "tX: Error: tX_audiodevice::dev_open()\n");
+       return 1;
 }
 
 int tX_audiodevice :: close()
 {
        fprintf(stderr, "tX: Error: tX_audiodevice::dev_close()\n");
+       return 1;
 }
 
 void tX_audiodevice :: play(int16_t* dummy)
@@ -76,33 +78,25 @@ void tX_audiodevice :: play(int16_t* dummy)
 
 #ifdef USE_OSS
 
-int tX_audiodevice_oss :: open(int dont_use_rt_buffsize)
+/* this is required as open() overloads 
+   ansi open() - better solutions anybody? ;)
+*/
+inline int open_hack(char *name,  int flags, mode_t mode)
+{
+       return open(name, flags, mode);
+}
+
+int tX_audiodevice_oss :: open()
 {
        int i=0;
        int p;
        int buff_cfg;
 
        if (fd) return (1);
-
-       if (globals.use_stdout)
-       {
-               fd=STDOUT_FILENO;
-               blocksize=1 << globals.buff_size;
-               return(0);
-       }
-
-        fd = open(globals.audio_device, O_WRONLY, 0);
-//     puts (globals.audio_device);
+        fd = open_hack(globals.audio_device, O_WRONLY, 0);
        
        /* setting buffer size */       
-       if (dont_use_rt_buffsize)
-       {
-               buff_cfg=(globals.buff_no<<16) | NON_RT_BUFF;   
-       }       
-       else
-       {
-               buff_cfg=(globals.buff_no<<16) | globals.buff_size;
-       }
+       buff_cfg=(globals.buff_no<<16) | globals.buff_size;
        
        p=buff_cfg;
                
@@ -127,10 +121,10 @@ int tX_audiodevice_oss :: open(int dont_use_rt_buffsize)
         i += ioctl(fd, SOUND_PCM_WRITE_RATE, &p);
                
         i += ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &blocksize);
-       samples=blocksize/sizeof(int16_t);      
-       globals.true_block_size=samples/2;
        
-//     printf("bs: %i, samples: %i, tbs: %i\n", blocksize,samples,globals.true_block_size);
+       samples_per_buffer=blocksize/sizeof(int16_t);
+       globals.true_block_size=samples_per_buffer/2;
+       
         ioctl(fd, SNDCTL_DSP_SYNC, 0);
 
         return(i);     
@@ -145,10 +139,6 @@ int tX_audiodevice_oss :: close()
                return(1);              
        }
 
-       if (!globals.use_stdout)
-       {
-               close(fd);
-       }
        fd=0;
        blocksize=0;
                
@@ -158,7 +148,7 @@ int tX_audiodevice_oss :: close()
 tX_audiodevice_oss :: tX_audiodevice_oss()
 {
        fd=0;
-
+       blocksize=0;
        init();
 }
 
@@ -174,12 +164,14 @@ void tX_audiodevice_oss :: play(int16_t *buffer)
 
 #ifdef USE_ALSA
 
-int tX_audiodevice_alsa :: open(int dont_use_rt_buffsize)
+int tX_audiodevice_alsa :: open()
 {
+       return 1;
 }
 
 int tX_audiodevice_alsa :: close()
 {
+       return 1;
 }
 
 tX_audiodevice_alsa :: tX_audiodevice_alsa()
index c0cf8ac776b5c0fa8029d4bb38e6fd6de26ea7ee..7ead3ebf5d9054638e77ef63f799c6568a864a0a 100644 (file)
@@ -27,6 +27,7 @@
 #include "tX_types.h"
 #include "tX_global.h"
 #include "pthread.h"
+#include <config.h>
 
 #include <sys/time.h>
 
@@ -34,9 +35,8 @@
 
 class tX_audiodevice
 {
+       protected:
        int samples_per_buffer;
-       
-       private:
        void init();
        
        public:
@@ -57,6 +57,9 @@ class tX_audiodevice
 
 class tX_audiodevice_oss : public tX_audiodevice
 {
+       int fd;
+       int blocksize;  
+
        public:
        virtual int open();
        virtual int close();
index d168ab1a6d4908592ff7303f6a91673a1f377b89..08cb9c2b40714714562f4c93fe236b092b2ae587 100644 (file)
@@ -125,6 +125,7 @@ void load_globals()
                globals.audiodevice_type=TX_AUDIODEVICE_TYPE_ALSA;
 #endif 
 #endif         
+               globals.audiodevice_buffersize=4096;
                strcpy(globals.audiodevice_oss_devicename, "/dev/dsp");
                globals.audiodevice_alsa_card=0;
                globals.audiodevice_alsa_pcm=0;         
index 11c5b2d3afbf2e88cf4c171f7ed4909da5583fc2..ee438b67f6f81aa99f2b6b299daf904387875ac9 100644 (file)
@@ -109,10 +109,10 @@ typedef struct {
        */
        
        int audiodevice_type; // TX_AUDIODEVICE_TYPE_OSS etc.
-       int audiodevice_buffer; // buffer in samples
+       int audiodevice_buffersize; // buffer in samples
        
        /* OSS specific options */
-       int audiodevice_oss_devicename[PATH_MAX];
+       char audiodevice_oss_devicename[PATH_MAX];
        
        /* ALSA specific options */
        int audiodevice_alsa_card;