[asterisk-commits] file: branch group/media_formats r408271 - in /team/group/media_formats: chan...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Feb 17 09:33:52 CST 2014
Author: file
Date: Mon Feb 17 09:33:50 2014
New Revision: 408271
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=408271
Log:
Move chan_multicast_rtp over.
Modified:
team/group/media_formats/channels/chan_multicast_rtp.c
team/group/media_formats/include/asterisk/channel.h
Modified: team/group/media_formats/channels/chan_multicast_rtp.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/channels/chan_multicast_rtp.c?view=diff&rev=408271&r1=408270&r2=408271
==============================================================================
--- team/group/media_formats/channels/chan_multicast_rtp.c (original)
+++ team/group/media_formats/channels/chan_multicast_rtp.c Mon Feb 17 09:33:50 2014
@@ -117,7 +117,9 @@
struct ast_sockaddr control_address;
struct ast_sockaddr destination_address;
struct ast_channel *chan;
- struct ast_format fmt;
+ struct ast_format_cap *caps = NULL;
+ struct ast_format *fmt = NULL;
+
ast_best_codec(cap, &fmt);
ast_sockaddr_setnull(&control_address);
@@ -145,6 +147,11 @@
goto failure;
}
+ caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
+ if (!caps) {
+ goto failure;
+ }
+
if (!(instance = ast_rtp_instance_new("multicast", NULL, &control_address, multicast_type))) {
goto failure;
}
@@ -158,19 +165,25 @@
ast_channel_tech_set(chan, &multicast_rtp_tech);
- ast_format_cap_add(ast_channel_nativeformats(chan), &fmt);
- ast_format_copy(ast_channel_writeformat(chan), &fmt);
- ast_format_copy(ast_channel_rawwriteformat(chan), &fmt);
- ast_format_copy(ast_channel_readformat(chan), &fmt);
- ast_format_copy(ast_channel_rawreadformat(chan), &fmt);
+ ast_format_cap_add(caps, fmt, 0);
+ ast_channel_nativeformats_set(chan, caps);
+ ast_channel_set_writeformat(chan, fmt);
+ ast_channel_set_rawwriteformat(chan, fmt);
+ ast_channel_set_readformat(chan, fmt);
+ ast_channel_set_rawreadformat(chan, fmt);
ast_channel_tech_pvt_set(chan, instance);
ast_channel_unlock(chan);
+ ao2_ref(fmt, -1);
+ ao2_ref(caps, -1);
+
return chan;
failure:
+ ao2_cleanup(fmt);
+ ao2_cleanup(caps);
*cause = AST_CAUSE_FAILURE;
return NULL;
}
@@ -178,10 +191,10 @@
/*! \brief Function called when our module is loaded */
static int load_module(void)
{
- if (!(multicast_rtp_tech.capabilities = ast_format_cap_alloc(0))) {
+ if (!(multicast_rtp_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) {
return AST_MODULE_LOAD_DECLINE;
}
- ast_format_cap_add_all(multicast_rtp_tech.capabilities);
+ ast_format_cap_add_all_by_type(multicast_rtp_tech.capabilities, AST_MEDIA_TYPE_UNKNOWN);
if (ast_channel_register(&multicast_rtp_tech)) {
ast_log(LOG_ERROR, "Unable to register channel class 'MulticastRTP'\n");
return AST_MODULE_LOAD_DECLINE;
@@ -194,7 +207,8 @@
static int unload_module(void)
{
ast_channel_unregister(&multicast_rtp_tech);
- multicast_rtp_tech.capabilities = ast_format_cap_destroy(multicast_rtp_tech.capabilities);
+ ao2_ref(multicast_rtp_tech.capabilities, -1);
+ multicast_rtp_tech.capabilities = NULL;
return 0;
}
Modified: team/group/media_formats/include/asterisk/channel.h
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/include/asterisk/channel.h?view=diff&rev=408271&r1=408270&r2=408271
==============================================================================
--- team/group/media_formats/include/asterisk/channel.h (original)
+++ team/group/media_formats/include/asterisk/channel.h Mon Feb 17 09:33:50 2014
@@ -2058,7 +2058,7 @@
* \retval on success, pointer to result structure
* \retval on failure, NULL
*/
-struct ast_format *ast_best_codec(struct ast_format_cap *cap, struct ast_format *result);
+struct ast_format *ast_best_codec(struct ast_format_cap *cap, struct ast_format **result);
/*!
More information about the asterisk-commits
mailing list