diff options
Diffstat (limited to 'src/libwave/wave.h')
-rw-r--r-- | src/libwave/wave.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/libwave/wave.h b/src/libwave/wave.h new file mode 100644 index 0000000..064f914 --- /dev/null +++ b/src/libwave/wave.h @@ -0,0 +1,37 @@ + +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_p, int *channels_p, 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); + |