summaryrefslogtreecommitdiff
path: root/codecs
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2016-01-28 11:16:03 +0100
committerMichael Mann <mmann78@netscape.net>2016-01-28 14:10:39 +0000
commit08527e9b85d91f1d121bfa323b9c32780012a02c (patch)
treebd55eacae49fed64a3e4e5a1dc414aa909046bf4 /codecs
parent0a931aa383526a3481ad6a44545f7b9f723032b6 (diff)
downloadwireshark-08527e9b85d91f1d121bfa323b9c32780012a02c.tar.gz
codecs: add deregister_codec API
Change-Id: I83ecc7e4f8c827c83c2f6b62918f042d023daee4 Reviewed-on: https://code.wireshark.org/review/13575 Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'codecs')
-rw-r--r--codecs/codecs.c14
-rw-r--r--codecs/codecs.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/codecs/codecs.c b/codecs/codecs.c
index f7921eade2..7f628a7043 100644
--- a/codecs/codecs.c
+++ b/codecs/codecs.c
@@ -169,6 +169,20 @@ register_codec(const char *name, codec_init_fn init_fn, codec_release_fn release
return TRUE;
}
+/* Deregister a codec by name. */
+gboolean
+deregister_codec(const char *name)
+{
+ gpointer key, value;
+
+ if (registered_codecs && g_hash_table_lookup_extended(registered_codecs, name, &key, &value)) {
+ g_hash_table_remove(registered_codecs, name);
+ g_free(value);
+ return TRUE;
+ }
+ return FALSE;
+}
+
void *codec_init(codec_handle_t codec)
{
if (!codec) return NULL;
diff --git a/codecs/codecs.h b/codecs/codecs.h
index 5fb90e644b..9f0c971bd5 100644
--- a/codecs/codecs.h
+++ b/codecs/codecs.h
@@ -50,6 +50,7 @@ typedef size_t (*codec_decode_fn)(void *context, const void *input, size_t input
WS_DLL_PUBLIC gboolean register_codec(const char *name, codec_init_fn init_fn,
codec_release_fn release_fn, codec_get_channels_fn channels_fn,
codec_get_frequency_fn frequency_fn, codec_decode_fn decode_fn);
+WS_DLL_PUBLIC gboolean deregister_codec(const char *name);
WS_DLL_PUBLIC codec_handle_t find_codec(const char *name);
WS_DLL_PUBLIC void *codec_init(codec_handle_t codec);
WS_DLL_PUBLIC void codec_release(codec_handle_t codec, void *context);