codecs: Fix ABI incompatibility created by adding format_name to ast_codec

Adding format_name even to the end of ast_codec caused issued with
binary codec modules because the pointer would be garbage in asterisk
when they registered.  So, the ast_codec structure was reverted and an
internal_ast_codec structure was created just for use in codec.c.  A new
internal-only API was also added (__ast_codec_register_with_format) so
that codec_builtin could register codecs with the format_name in a
separate parameter rather than in the ast_codec structure.

ASTERISK-26144 #close
Reported-by: Alexei Gradinari

Change-Id: I6df1b08f6a6ae089db23adfe1ebc8636330265ba
This commit is contained in:
George Joseph
2016-06-28 08:00:32 -06:00
parent f3d236ca7f
commit d07c8a0504
3 changed files with 52 additions and 21 deletions

View File

@@ -77,8 +77,6 @@ struct ast_codec {
unsigned int smooth;
/*! \brief The module that registered this codec */
struct ast_module *mod;
/*! \brief A format name for a default sane format using this codec */
const char *format_name;
};
/*!