2016-03-25 12:58:16 +00:00
|
|
|
|
|
|
|
typedef struct wave_rec {
|
|
|
|
FILE *fp;
|
2017-01-13 06:31:15 +00:00
|
|
|
int channels;
|
2017-01-29 06:25:12 +00:00
|
|
|
double max_deviation;
|
2016-03-25 12:58:16 +00:00
|
|
|
int samplerate;
|
|
|
|
uint32_t written; /* how much samples written */
|
2017-02-25 05:29:09 +00:00
|
|
|
/* 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 */
|
2016-03-25 12:58:16 +00:00
|
|
|
} wave_rec_t;
|
|
|
|
|
|
|
|
typedef struct wave_play {
|
|
|
|
FILE *fp;
|
2017-01-13 06:31:15 +00:00
|
|
|
int channels;
|
2017-01-29 06:25:12 +00:00
|
|
|
double max_deviation;
|
2016-03-25 12:58:16 +00:00
|
|
|
uint32_t left; /* how much samples left */
|
2017-02-25 05:29:09 +00:00
|
|
|
/* 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 */
|
2016-03-25 12:58:16 +00:00
|
|
|
} wave_play_t;
|
|
|
|
|
2017-01-29 06:25:12 +00:00
|
|
|
int wave_create_record(wave_rec_t *rec, const char *filename, int samplerate, int channels, double max_deviation);
|
2018-01-20 14:51:13 +00:00
|
|
|
int wave_create_playback(wave_play_t *play, const char *filename, int *samplerate_p, int *channels_p, double max_deviation);
|
2017-01-27 15:57:34 +00:00
|
|
|
int wave_read(wave_play_t *play, sample_t **samples, int length);
|
|
|
|
int wave_write(wave_rec_t *rec, sample_t **samples, int length);
|
2016-03-25 12:58:16 +00:00
|
|
|
void wave_destroy_record(wave_rec_t *rec);
|
|
|
|
void wave_destroy_playback(wave_play_t *play);
|
|
|
|
|