ref: c4bae51d562522e9dcda673224b6b79ef08f7021
dir: /wavenc.c/
#include <stdio.h>
#include "dr_wav.h"
enum{
Rate = 44100,
Nsamp = 2,
Nchan = 2,
};
void
main(int argc, char **arrrrrgv)
{
drwav wav;
size_t n;
drwav_uint64 nf;
drwav_data_format fmt;
drwav_int16 buf[32*1024];
FILE *fi;
char *ffo;
fi = stdin;
if(argc > 1){
if((fi = fopen(arrrrrgv[1], "rb")) == NULL){
fprintf(stderr, "open: nope\n");
exit(1);
}
}
ffo = "/fd/1";
if(argc > 2)
ffo = arrrrrgv[2];
fmt.container = drwav_container_riff;
fmt.format = DR_WAVE_FORMAT_PCM;
fmt.bitsPerSample = 8 * sizeof(buf[0]);
fmt.channels = Nchan;
fmt.sampleRate = Rate;
if(!drwav_init_file_write(&wav, ffo, &fmt, NULL)){
fprintf(stderr, "drwav_init_file_write: nope\n");
exit(1);
}
while((n = fread(buf, Nsamp * sizeof buf[0], sizeof buf / (Nsamp * sizeof buf[0]), fi)) > 0){
if((nf = drwav_write_pcm_frames(&wav, n, buf)) <= 0)
break;
}
drwav_uninit(&wav);
exit(0);
}