00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00032 #ifndef __PIPE_H__
00033 #define __PIPE_H__
00034
00035 #include <pthread.h>
00036 #include <string.h>
00037 #include <inttypes.h>
00038
00070 class Pipe {
00071 public:
00072
00076 Pipe(int size=16384);
00078
00079 ~Pipe();
00081
00094 int read(int length, void *data);
00096
00106 int read_float_intl(int samples, float *buf, int channels);
00107
00116 int read_float_bidi(int samples, float **buf, int channels);
00118
00128 int mix16stereo(int samples, int32_t *mix);
00129
00130
00131
00142 int write(int length, void *data);
00143
00149 void block(bool val);
00150
00151 bool blocking;
00152
00156 int size();
00157
00161 int space();
00162
00163 void flush();
00164
00165 void flush(int size);
00167
00168 private:
00169 pthread_mutex_t _mutex;
00170 void _thread_init() { pthread_mutex_init (&_mutex,NULL); };
00171 void _thread_destroy() { pthread_mutex_destroy(&_mutex); };
00172 void lock() { pthread_mutex_lock(&_mutex); };
00173 void unlock() { pthread_mutex_unlock(&_mutex); };
00174
00175 void *buffer;
00176 void *bufferEnd;
00177
00178 void *start;
00179 void *end;
00180
00181 int pipesize;
00182 };
00183
00184 #endif