diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2018-02-27 08:22:25 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-02-28 12:04:29 +0000 |
commit | 0fb38879af867b147d2ad73616f0c0ec08a0fc92 (patch) | |
tree | 66a61e72d013ac7acd4245ea96d870076eacea16 /plugins/codecs/l16_mono/l16decode.c | |
parent | b405a9f0d2af056dd0c0e4d15271ff7dfdd5c928 (diff) |
L16_mono: Add L16 monaural codec plugin as functional example
This codec plugin serves a dual purpose.
First it is to add L16 codec suppport to Wireshark.
Second it is an illustration of a basic codec plugin module.
Change-Id: I64394dab3257ae49dece0257b16cd969503918e2
Reviewed-on: https://code.wireshark.org/review/26131
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
Petri-Dish: Jaap Keuter <jaap.keuter@xs4all.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'plugins/codecs/l16_mono/l16decode.c')
-rw-r--r-- | plugins/codecs/l16_mono/l16decode.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/plugins/codecs/l16_mono/l16decode.c b/plugins/codecs/l16_mono/l16decode.c new file mode 100644 index 0000000000..6c4453f457 --- /dev/null +++ b/plugins/codecs/l16_mono/l16decode.c @@ -0,0 +1,83 @@ +/* l16decode.c + * 16-bit audio, mono codec + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "config.h" + +#include <glib.h> +#include <string.h> + +#include "codecs/codecs.h" +#include "ws_attributes.h" + +void * +codec_l16_init(void) +{ + return NULL; +} + +void +codec_l16_release(void *ctx _U_) +{ + +} + +unsigned +codec_l16_get_channels(void *ctx _U_) +{ + return 1; +} + +unsigned +codec_l16_get_frequency(void *ctx _U_) +{ + return 44100; +} + +size_t +codec_l16_decode(void *ctx _U_, const void *input, size_t inputSizeBytes, + void *output, size_t *outputSizeBytes) +{ + const guint16 *dataIn = (const guint16 *)input; + guint16 *dataOut = (guint16 *)output; + size_t i; + + if (!output || !outputSizeBytes) + { + return inputSizeBytes; + } + + for (i=0; i<inputSizeBytes/2; i++) + { + dataOut[i] = g_ntohs(dataIn[i]); + } + + *outputSizeBytes = inputSizeBytes; + return *outputSizeBytes; +} + +void +codec_register_l16(void) +{ + register_codec("16-bit audio, monaural", codec_l16_init, codec_l16_release, + codec_l16_get_channels, codec_l16_get_frequency, codec_l16_decode); +} + +/* + * 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: + */ |