Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 16 additions & 14 deletions tinywav.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,12 @@ int tinywav_open_write(TinyWav *tw, int16_t numChannels, int32_t samplerate, Tin
tw->h.Subchunk1ID[2] = 't';
tw->h.Subchunk1ID[3] = ' ';
tw->h.Subchunk1Size = 16; // PCM
tw->h.AudioFormat = (tw->sampFmt-1); // 1 PCM, 3 IEEE float
tw->h.NumChannels = numChannels;
tw->h.AudioFormat = (uint16_t) (tw->sampFmt - 1); // 1 PCM, 3 IEEE float
tw->h.NumChannels = (uint16_t) numChannels;
tw->h.SampleRate = samplerate;
tw->h.ByteRate = samplerate * numChannels * tw->sampFmt;
tw->h.BlockAlign = numChannels * tw->sampFmt;
tw->h.BitsPerSample = 8 * tw->sampFmt;
tw->h.BlockAlign = (uint16_t) (numChannels * tw->sampFmt);
tw->h.BitsPerSample = (uint16_t) (8 * tw->sampFmt);
tw->h.Subchunk2ID[0] = 'd';
tw->h.Subchunk2ID[1] = 'a';
tw->h.Subchunk2ID[2] = 't';
Expand Down Expand Up @@ -241,8 +241,9 @@ int tinywav_read_f(TinyWav *tw, void *data, int len) {
case TW_INT16: {
TW_ALLOC(int16_t, interleaved_data, tw->numChannels*len);
size_t samples_read = fread(interleaved_data, sizeof(int16_t), tw->numChannels*len, tw->f);
tw->totalFramesReadWritten += samples_read / tw->numChannels;
int frames_read = (int) samples_read / tw->numChannels;
uint32_t frames_read_u32 = (uint32_t) (samples_read / tw->numChannels);
tw->totalFramesReadWritten += frames_read_u32;
int frames_read = (int) frames_read_u32;
switch (tw->chanFmt) {
case TW_INTERLEAVED: { // channel buffer is interleaved e.g. [LRLRLRLR]
for (int pos = 0; pos < tw->numChannels * frames_read; pos++) {
Expand Down Expand Up @@ -277,8 +278,9 @@ int tinywav_read_f(TinyWav *tw, void *data, int len) {
case TW_FLOAT32: {
TW_ALLOC(float, interleaved_data, tw->numChannels*len);
size_t samples_read = fread(interleaved_data, sizeof(float), tw->numChannels*len, tw->f);
tw->totalFramesReadWritten += samples_read / tw->numChannels;
int frames_read = (int) samples_read / tw->numChannels;
uint32_t frames_read_u32 = (uint32_t) (samples_read / tw->numChannels);
tw->totalFramesReadWritten += frames_read_u32;
int frames_read = (int) frames_read_u32;
switch (tw->chanFmt) {
case TW_INTERLEAVED: { // channel buffer is interleaved e.g. [LRLRLRLR]
memcpy(data, interleaved_data, tw->numChannels*frames_read*sizeof(float));
Expand Down Expand Up @@ -365,10 +367,10 @@ int tinywav_write_f(TinyWav *tw, void *f, int len) {
}

size_t samples_written = fwrite(z, sizeof(int16_t), tw->numChannels*len, tw->f);
size_t frames_written = samples_written / tw->numChannels;
tw->totalFramesReadWritten += frames_written;
uint32_t frames_written_u32 = (uint32_t) (samples_written / tw->numChannels);
tw->totalFramesReadWritten += frames_written_u32;
TW_DEALLOC(z);
return (int) frames_written;
return (int) frames_written_u32;
}
case TW_FLOAT32: {
TW_ALLOC(float, z, tw->numChannels*len);
Expand Down Expand Up @@ -402,10 +404,10 @@ int tinywav_write_f(TinyWav *tw, void *f, int len) {
}

size_t samples_written = fwrite(z, sizeof(float), tw->numChannels*len, tw->f);
size_t frames_written = samples_written / tw->numChannels;
tw->totalFramesReadWritten += frames_written;
uint32_t frames_written_u32 = (uint32_t) (samples_written / tw->numChannels);
tw->totalFramesReadWritten += frames_written_u32;
TW_DEALLOC(z);
return (int) frames_written;
return (int) frames_written_u32;
}
default: return 0;
}
Expand Down
Loading