diff options
Diffstat (limited to 'codecs/G711u/G711udecode.c')
-rw-r--r-- | codecs/G711u/G711udecode.c | 69 |
1 files changed, 58 insertions, 11 deletions
diff --git a/codecs/G711u/G711udecode.c b/codecs/G711u/G711udecode.c index c56018ad32..369e47df3f 100644 --- a/codecs/G711u/G711udecode.c +++ b/codecs/G711u/G711udecode.c @@ -22,21 +22,68 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "config.h" + #include <glib.h> + #include "G711udecode.h" #include "G711utable.h" +void * +codec_g711u_init(void) +{ + return NULL; +} + +void +codec_g711u_release(void *ctx _U_) +{ + +} + +int +codec_g711u_get_channels(void *ctx _U_) +{ + return 1; +} + int -decodeG711u(void *input, int inputSizeBytes, void *output, int *outputSizeBytes) +codec_g711u_get_frequency(void *ctx _U_) { - guint8 *dataIn = (guint8 *)input; - gint16 *dataOut = (gint16 *)output; - int i; - - for (i=0; i<inputSizeBytes; i++) - { - dataOut[i] = ulaw_exp_table[dataIn[i]]; - } - *outputSizeBytes = inputSizeBytes * 2; - return 0; + return 8000; } + +int +codec_g711u_decode(void *ctx _U_, const void *input, int inputSizeBytes, void *output, + int *outputSizeBytes) +{ + const guint8 *dataIn = (const guint8 *) input; + gint16 *dataOut = (gint16 *) output; + int i; + + if (!output || !outputSizeBytes) { + return inputSizeBytes * 2; + } + + for (i = 0; i < inputSizeBytes; i++) + { + dataOut[i] = ulaw_exp_table[dataIn[i]]; + } + + *outputSizeBytes = inputSizeBytes * 2; + return inputSizeBytes * 2; +} + +/* + * Editor modelines - http://www.wireshark.org/tools/modelines.html + * + * Local variables: + * c-basic-offset: 4 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * vi: set shiftwidth=4 tabstop=8 expandtab: + * :indentSize=4:tabSize=8:noTabs=true: + */ + |