summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Raghavan <arun.raghavan@collabora.co.uk>2010-09-27 16:57:01 +0530
committerArun Raghavan <arun.raghavan@collabora.co.uk>2011-03-28 14:41:00 +0530
commitd866adee0ee9b79ebe81fac85fa2f31b522b568e (patch)
treeade90024d07397975544103398b36c9cc22f3cf1
parent1212a6fd78570f1f31e77bf46fa2e46981013ab3 (diff)
echo-cancel: Use S16NE for adrian module
This forces us to get native-endian samples in the adrian module so that we can rely on the existing endianness conversion mechanisms instead of doing it in the module.
-rw-r--r--src/modules/echo-cancel/adrian.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/modules/echo-cancel/adrian.c b/src/modules/echo-cancel/adrian.c
index 810d6ea6..b1d0bafa 100644
--- a/src/modules/echo-cancel/adrian.c
+++ b/src/modules/echo-cancel/adrian.c
@@ -44,7 +44,7 @@ static const char* const valid_modargs[] = {
static void pa_adrian_ec_fixate_spec(pa_sample_spec *source_ss, pa_channel_map *source_map,
pa_sample_spec *sink_ss, pa_channel_map *sink_map)
{
- source_ss->format = PA_SAMPLE_S16LE;
+ source_ss->format = PA_SAMPLE_S16NE;
source_ss->channels = 1;
pa_channel_map_init_mono(source_map);
@@ -99,14 +99,10 @@ void pa_adrian_ec_run(pa_echo_canceller *ec, const uint8_t *rec, const uint8_t *
unsigned int i;
for (i = 0; i < ec->params.priv.adrian.blocksize; i += 2) {
- /* We know it's S16LE mono data */
- int r = PA_INT16_FROM_LE(*(int16_t *)(rec + i));
- int p = PA_INT16_FROM_LE(*(int16_t *)(play + i));
- int res;
-
- res = AEC_doAEC(ec->params.priv.adrian.aec, r, p);
- out[i] = (uint8_t) (res & 0xff);
- out[i + 1] = (uint8_t) ((res >> 8) & 0xff);
+ /* We know it's S16NE mono data */
+ int r = *(int16_t *)(rec + i);
+ int p = *(int16_t *)(play + i);
+ *(int16_t *)(out + i) = (int16_t) AEC_doAEC(ec->params.priv.adrian.aec, r, p);
}
}