diff options
author | Jörg Mayer <jmayer@loplof.de> | 2013-12-01 09:18:19 +0000 |
---|---|---|
committer | Jörg Mayer <jmayer@loplof.de> | 2013-12-01 09:18:19 +0000 |
commit | 6cd4ad721f94b5b2c4e5136bad179eb83585f150 (patch) | |
tree | 9dd1c405a283916e4abd2f4a92119ffa58bdc6a5 /codecs/sbc | |
parent | a9bd097e71744f55833fcb4bbd996093d2287092 (diff) | |
download | wireshark-6cd4ad721f94b5b2c4e5136bad179eb83585f150.tar.gz |
SBC -> sbc
On Unix case is relevant, so fix it.
Please try to avoid filenames starting with Upper case, it
makes completion so much easier as I only need to remember the
name and not the case.
svn path=/trunk/; revision=53689
Diffstat (limited to 'codecs/sbc')
-rw-r--r-- | codecs/sbc/sbc.c | 138 | ||||
-rw-r--r-- | codecs/sbc/sbc.h | 37 |
2 files changed, 175 insertions, 0 deletions
diff --git a/codecs/sbc/sbc.c b/codecs/sbc/sbc.c new file mode 100644 index 0000000000..b14b5bb681 --- /dev/null +++ b/codecs/sbc/sbc.c @@ -0,0 +1,138 @@ +/* sbc.c + * Support for external Bluetooth SBC codec + * + * Copyright 2012, Michal Labedzki for Tieto Corporation + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#ifdef HAVE_SBC + +#include <glib.h> +#include <sbc/sbc.h> + +#include "sbc.h" + +#define SBC_BUFFER 8192 + +void * +codec_sbc_init(void) +{ + sbc_t *sbc; + + sbc = g_malloc(sizeof(sbc_t)); + sbc_init(sbc, 0L); + + return sbc; +} + +void +codec_sbc_release(void *ctx) +{ + sbc_t *sbc = (sbc_t *) ctx; + + sbc_finish(sbc); + g_free(sbc); +} + +int +codec_sbc_get_channels(void *ctx) +{ + sbc_t *sbc = (sbc_t *) ctx; + if (sbc->mode == SBC_MODE_MONO) + return 1; + + return 2; +} + +int +codec_sbc_get_frequency(void *ctx) +{ + sbc_t *sbc = (sbc_t *) ctx; + int frequency; + + switch (sbc->frequency) { + case SBC_FREQ_16000: + frequency = 16000; + break; + + case SBC_FREQ_32000: + frequency = 32000; + break; + + case SBC_FREQ_44100: + frequency = 44100; + break; + + case SBC_FREQ_48000: + frequency = 48000; + break; + default: + frequency = 0; + } + + return frequency; +} + +int +codec_sbc_decode(void *ctx, const void *input, int inputSizeBytes, void *output, + int *outputSizeBytes) +{ + size_t size_in = (size_t) inputSizeBytes; + size_t size_out = SBC_BUFFER; + size_t len; + int framelen; + int xframe_pos = 0; + guint8 *data_in = (guint8 *) input; + guint8 *data_out = (guint8 *) output; + sbc_t *sbc = (sbc_t *) ctx; + guint8 *i_data; + guint8 tmp; + + if (!output || !outputSizeBytes) { + return size_out; + } + + sbc->endian = SBC_BE; + + framelen = 0; + *outputSizeBytes = 0; + while (xframe_pos < inputSizeBytes) { + framelen = sbc_decode(sbc, data_in, size_in, data_out, size_out, &len); + xframe_pos += framelen; + data_in += framelen; + *outputSizeBytes += len; + + for (i_data = data_out; i_data < data_out + len; i_data += 2) { + tmp = i_data[0]; + i_data[0] = i_data[1]; + i_data[1] = tmp; + } + + data_out += len; + } + + return *outputSizeBytes; +} + +#endif diff --git a/codecs/sbc/sbc.h b/codecs/sbc/sbc.h new file mode 100644 index 0000000000..5cc8ad0927 --- /dev/null +++ b/codecs/sbc/sbc.h @@ -0,0 +1,37 @@ +/* sbc.h + * Definitions for Bluetooth SBC codec + * + * Copyright 2012, Michal Labedzki for Tieto Corporation + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __CODECS_SBC_H__ +#define __CODECS_SBC_H__ + +void *codec_sbc_init(void); +void codec_sbc_release(void *ctx); +int codec_sbc_get_channels(void *ctx); +int codec_sbc_get_frequency(void *ctx); +int codec_sbc_decode(void *ctx, const void *input, int inputSizeBytes, void *output, + int *outputSizeBytes); + +#endif /* sbc.h */ |