#define LOG_PREFIX "input/wav"
/* How many bytes at a time to process and send to the session bus. */
-#define CHUNK_SIZE 4096
+#define CHUNK_SIZE (1 * 1024 * 1024 * sizeof(float))
/* Minimum size of header + 1 8-bit mono PCM sample. */
#define MIN_DATA_CHUNK_OFFSET 45
return SR_OK;
}
-static int format_match(GHashTable *metadata)
+static int format_match(GHashTable *metadata, unsigned int *confidence)
{
GString *buf;
int ret;
if ((ret = parse_wav_header(buf, NULL)) != SR_OK)
return ret;
+ *confidence = 1;
+
return SR_OK;
}
struct sr_analog_meaning meaning;
struct sr_analog_spec spec;
struct context *inc;
- float fdata[CHUNK_SIZE];
+ float *fdata;
int total_samples, samplenum;
char *s, *d;
inc = in->priv;
s = in->buf->str + offset;
+ fdata = g_malloc0(CHUNK_SIZE * sizeof(float));
d = (char *)fdata;
- memset(fdata, 0, CHUNK_SIZE * sizeof(float));
total_samples = num_samples * inc->num_channels;
for (samplenum = 0; samplenum < total_samples; samplenum++) {
if (inc->fmt_code == WAVE_FORMAT_PCM_) {
analog.meaning->mqflags = 0;
analog.meaning->unit = 0;
sr_session_send(in->sdi, &packet);
+ g_free(fdata);
}
static int process_buffer(struct sr_input *in)
SR_PRIV struct sr_input_module input_wav = {
.id = "wav",
.name = "WAV",
- .desc = "WAV file",
+ .desc = "Microsoft WAV file format data",
.exts = (const char*[]){"wav", NULL},
.metadata = { SR_INPUT_META_HEADER | SR_INPUT_META_REQUIRED },
.format_match = format_match,