diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2016-01-28 11:16:03 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-01-28 14:10:39 +0000 |
commit | 08527e9b85d91f1d121bfa323b9c32780012a02c (patch) | |
tree | bd55eacae49fed64a3e4e5a1dc414aa909046bf4 | |
parent | 0a931aa383526a3481ad6a44545f7b9f723032b6 (diff) |
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>
-rw-r--r-- | codecs/codecs.c | 14 | ||||
-rw-r--r-- | codecs/codecs.h | 1 | ||||
-rw-r--r-- | debian/libwscodecs0.symbols | 1 |
3 files changed, 16 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); diff --git a/debian/libwscodecs0.symbols b/debian/libwscodecs0.symbols index a0931130ba..3bb62371ac 100644 --- a/debian/libwscodecs0.symbols +++ b/debian/libwscodecs0.symbols @@ -5,6 +5,7 @@ libwscodecs.so.0 libwireshark0 #MINVER# codec_init@Base 2.1.0 codec_register_plugin_types@Base 2.1.0 codec_release@Base 2.1.0 + deregister_codec@Base 2.1.0 find_codec@Base 2.1.0 register_all_codecs@Base 2.1.0 register_codec@Base 2.1.0 |