osmocom-analog/src/libwave/wave.h

38 lines
1.4 KiB
C

typedef struct wave_rec {
FILE *fp;
int channels;
double max_deviation;
int samplerate;
uint32_t written; /* how much samples written */
/* thread stuff */
pthread_t tid; /* file io thread id */
int finish; /* indicates end of thread */
uint8_t *buffer; /* buffer to store sample data */
int buffer_size; /* size of buffer in bytes */
int buffer_readp; /* read pointer to next byte in buffer */
int buffer_writep; /* write pointer to next byte in buffer */
} wave_rec_t;
typedef struct wave_play {
FILE *fp;
int channels;
double max_deviation;
uint32_t left; /* how much samples left */
/* thread stuff */
pthread_t tid; /* file io thread id */
int finish; /* indicates end of thread */
uint8_t *buffer; /* buffer to store sample data */
int buffer_size; /* size of buffer in bytes */
int buffer_readp; /* read pointer to next byte in buffer */
int buffer_writep; /* write pointer to next byte in buffer */
} wave_play_t;
int wave_create_record(wave_rec_t *rec, const char *filename, int samplerate, int channels, double max_deviation);
int wave_create_playback(wave_play_t *play, const char *filename, int samplerate, int channels, double max_deviation);
int wave_read(wave_play_t *play, sample_t **samples, int length);
int wave_write(wave_rec_t *rec, sample_t **samples, int length);
void wave_destroy_record(wave_rec_t *rec);
void wave_destroy_playback(wave_play_t *play);