diff --git a/android/hal-sco.c b/android/hal-sco.c
index 97cab84..2c1aeed 100644
--- a/android/hal-sco.c
+++ b/android/hal-sco.c
size_t frame_num = bytes / frame_size;
size_t input_frame_num = frame_num;
void *read_buf = buffer;
- size_t total, read_frames;
+ size_t total = bytes;
int ret;
DBG("Read from fd %d bytes %zu", sco_fd, bytes);
}
read_buf = in->resample_buf;
- }
- total = input_frame_num * sizeof(int16_t) * 1;
+ total = input_frame_num * sizeof(int16_t) * 1;
+ }
if(!read_data(in, read_buf, total))
return -1;
- read_frames = input_frame_num;
-
- ret = in->resampler->resample_from_input(in->resampler,
+ if (in->resampler) {
+ ret = in->resampler->resample_from_input(in->resampler,
in->resample_buf,
- &read_frames,
+ &input_frame_num,
(int16_t *) buffer,
&frame_num);
- if (ret) {
- error("Failed to resample frames: %zd input %zd (%s)",
- frame_num, input_frame_num, strerror(ret));
- return -1;
- }
+ if (ret) {
+ error("Failed to resample frames: %zd input %zd (%s)",
+ frame_num, input_frame_num,
+ strerror(ret));
+ return -1;
+ }
- DBG("resampler: remain %zd output %zd frames", read_frames, frame_num);
+ DBG("resampler: remain %zd output %zd frames", input_frame_num,
+ frame_num);
+ }
return bytes;
}
in->cfg.frame_num = IN_STREAM_FRAMES;
+ if (in->cfg.rate == AUDIO_STREAM_SCO_RATE)
+ goto skip_resampler;
+
/* Channel numbers for resampler */
chan_num = 1;
DBG("Resampler: input %d output %d chan %d frames %u size %zd",
AUDIO_STREAM_SCO_RATE, in->cfg.rate, chan_num,
in->resample_frame_num, resample_size);
-
+skip_resampler:
*stream_in = &in->stream;
sco_dev->in = in;