summaryrefslogtreecommitdiffstats
path: root/src/libwave/wave.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libwave/wave.h')
-rw-r--r--src/libwave/wave.h37
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);
+