aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
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
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')
-rw-r--r--plugins/Makefile.am3
-rw-r--r--plugins/codecs/l16_mono/AUTHORS2
-rw-r--r--plugins/codecs/l16_mono/CMakeLists.txt68
-rw-r--r--plugins/codecs/l16_mono/Makefile.am48
-rw-r--r--plugins/codecs/l16_mono/README3
-rw-r--r--plugins/codecs/l16_mono/l16decode.c83
6 files changed, 206 insertions, 1 deletions
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 7e56bcf379..2055eb1b0e 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -35,7 +35,8 @@ SUBDIRS = \
epan/wimax \
epan/wimaxasncp \
epan/wimaxmacphy \
- wiretap/usbdump
+ wiretap/usbdump \
+ codecs/l16_mono
EXTRA_DIST = \
$(_CUSTOM_EXTRA_DIST_) \
diff --git a/plugins/codecs/l16_mono/AUTHORS b/plugins/codecs/l16_mono/AUTHORS
new file mode 100644
index 0000000000..f00e0146b8
--- /dev/null
+++ b/plugins/codecs/l16_mono/AUTHORS
@@ -0,0 +1,2 @@
+Author :
+Jaap Keuter <jaap.keuter@xs4all.nl>
diff --git a/plugins/codecs/l16_mono/CMakeLists.txt b/plugins/codecs/l16_mono/CMakeLists.txt
new file mode 100644
index 0000000000..99b3de3dcc
--- /dev/null
+++ b/plugins/codecs/l16_mono/CMakeLists.txt
@@ -0,0 +1,68 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+include(WiresharkPlugin)
+
+# Plugin name and version info (major minor micro extra)
+set_module_info(l16mono 0 1 0 0)
+
+set(CODEC_SRC
+ l16decode.c
+)
+
+set(PLUGIN_FILES
+ plugin.c
+ ${CODEC_SRC}
+)
+
+set_source_files_properties(
+ ${PLUGIN_FILES}
+ PROPERTIES
+ COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
+)
+
+include_directories(
+ ${CMAKE_SOURCE_DIR}/codec
+ ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+register_plugin_files(plugin.c
+ plugin_codec
+ ${CODEC_SRC}
+)
+
+add_plugin_library(l16mono codecs)
+
+target_link_libraries(l16mono wscodecs)
+
+install_plugin(l16mono codecs)
+
+file(GLOB CODEC_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*.h")
+CHECKAPI(
+ NAME
+ l16mono
+ SWITCHES
+ -g abort -g termoutput -build
+ SOURCES
+ ${CODEC_SRC}
+ ${CODEC_HEADERS}
+)
+
+#
+# Editor modelines - http://www.wireshark.org/tools/modelines.html
+#
+# Local variables:
+# c-basic-offset: 8
+# tab-width: 8
+# indent-tabs-mode: t
+# End:
+#
+# vi: set shiftwidth=8 tabstop=8 noexpandtab:
+# :indentSize=8:tabSize=8:noTabs=false:
+#
diff --git a/plugins/codecs/l16_mono/Makefile.am b/plugins/codecs/l16_mono/Makefile.am
new file mode 100644
index 0000000000..bbc2379eb3
--- /dev/null
+++ b/plugins/codecs/l16_mono/Makefile.am
@@ -0,0 +1,48 @@
+# Makefile.am
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+include $(top_srcdir)/Makefile.am.inc
+include $(top_srcdir)/plugins/codecs/Makefile.am.inc
+
+# the name of the plugin
+PLUGIN_NAME = l16mono
+
+PLUGIN_VERSION = 0.1.0
+
+BUILT_SOURCES = \
+ plugin.c
+
+# Non-generated sources to be scanned for registration routines
+NONGENERATED_REGISTER_C_FILES = \
+ l16decode.c
+
+# Non-generated sources
+NONGENERATED_C_FILES = \
+ $(NONGENERATED_REGISTER_C_FILES)
+
+wiretap_plugin_LTLIBRARIES = l16mono.la
+
+l16mono_la_SOURCES = \
+ $(SRC_FILES) \
+ $(HEADER_FILES)
+
+nodist_l16mono_la_SOURCES = \
+ plugin.c
+
+l16mono_la_CPPFLAGS = $(AM_CPPFLAGS) $(PLUGIN_CPPFLAGS) -I$(abs_top_srcdir)/codecs
+
+l16mono_la_CFLAGS = $(AM_CFLAGS) $(PLUGIN_CFLAGS) -I$(abs_top_srcdir)/codecs
+
+l16mono_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+
+DISTCLEANFILES = \
+ plugin.c
+
+EXTRA_DIST = \
+ CMakeLists.txt
diff --git a/plugins/codecs/l16_mono/README b/plugins/codecs/l16_mono/README
new file mode 100644
index 0000000000..993730a4e6
--- /dev/null
+++ b/plugins/codecs/l16_mono/README
@@ -0,0 +1,3 @@
+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.
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:
+ */