static int load_module(void) { announce_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT); if (!announce_tech.capabilities) { return AST_MODULE_LOAD_DECLINE; } record_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT); if (!record_tech.capabilities) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_append_by_type(announce_tech.capabilities, AST_MEDIA_TYPE_UNKNOWN); ast_format_cap_append_by_type(record_tech.capabilities, AST_MEDIA_TYPE_UNKNOWN); if (ast_channel_register(&announce_tech)) { ast_log(LOG_ERROR, "Unable to register channel technology %s(%s).\n", announce_tech.type, announce_tech.description); cleanup_capabilities(); return AST_MODULE_LOAD_DECLINE; } if (ast_channel_register(&record_tech)) { ast_log(LOG_ERROR, "Unable to register channel technology %s(%s).\n", record_tech.type, record_tech.description); cleanup_capabilities(); return AST_MODULE_LOAD_DECLINE; } return AST_MODULE_LOAD_SUCCESS; }
static int load_module(void) { if (!(native_rtp_bridge.format_capabilities = ast_format_cap_alloc(0))) { return AST_MODULE_LOAD_DECLINE; } ast_format_cap_append_by_type(native_rtp_bridge.format_capabilities, AST_MEDIA_TYPE_AUDIO); ast_format_cap_append_by_type(native_rtp_bridge.format_capabilities, AST_MEDIA_TYPE_VIDEO); ast_format_cap_append_by_type(native_rtp_bridge.format_capabilities, AST_MEDIA_TYPE_TEXT); return ast_bridge_technology_register(&native_rtp_bridge); }
int ast_local_init(void) { if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_begin_type)) { return -1; } if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_end_type)) { return -1; } if (STASIS_MESSAGE_TYPE_INIT(ast_local_bridge_type)) { return -1; } if (!(local_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) { return -1; } ast_format_cap_append_by_type(local_tech.capabilities, AST_MEDIA_TYPE_UNKNOWN); locals = ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_MUTEX, 0, NULL, locals_cmp_cb); if (!locals) { ao2_cleanup(local_tech.capabilities); local_tech.capabilities = NULL; return -1; } /* Make sure we can register our channel type */ if (ast_channel_register(&local_tech)) { ast_log(LOG_ERROR, "Unable to register channel class 'Local'\n"); ao2_ref(locals, -1); ao2_cleanup(local_tech.capabilities); local_tech.capabilities = NULL; return -1; } ast_cli_register_multiple(cli_local, ARRAY_LEN(cli_local)); ast_manager_register_xml_core("LocalOptimizeAway", EVENT_FLAG_SYSTEM|EVENT_FLAG_CALL, manager_optimize_away); ast_register_cleanup(local_shutdown); return 0; }