- analog2 = packet->payload;
-
- if (packet->type == SR_DF_ANALOG) {
- num_samples = analog->num_samples;
- channels = analog->channels;
- num_channels = g_slist_length(analog->channels);
- data = analog->data;
- } else {
- num_samples = analog2->num_samples;
- channels = analog2->meaning->channels;
- num_channels = g_slist_length(analog2->meaning->channels);
- data = g_malloc(sizeof(float) * num_samples * num_channels);
- ret = sr_analog_to_float(analog2, data);
- if (ret != SR_OK)
- return ret;
- }
+ num_samples = analog->num_samples;
+ channels = analog->meaning->channels;
+ num_channels = g_slist_length(analog->meaning->channels);
+ if (!(data = g_try_realloc(outc->fdata, sizeof(float) * num_samples * num_channels)))
+ return SR_ERR_MALLOC;
+ outc->fdata = data;
+ ret = sr_analog_to_float(analog, data);
+ if (ret != SR_OK)
+ return ret;