aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/codecs/l16_mono/l16decode.c
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2018-02-27 08:22:25 +0100
committerAnders Broman <a.broman58@gmail.com>2018-02-28 12:04:29 +0000
commit0fb38879af867b147d2ad73616f0c0ec08a0fc92 (patch)
tree66a61e72d013ac7acd4245ea96d870076eacea16 /plugins/codecs/l16_mono/l16decode.c
parentb405a9f0d2af056dd0c0e4d15271ff7dfdd5c928 (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.c83
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:
+ */