aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmgcp/mgcp_protocol.c
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2014-03-17 12:40:07 +0100
committerJacob Erlbeck <jerlbeck@sysmocom.de>2014-06-05 14:00:46 +0200
commit168ca00b02685edea650aa2a4c62481a75926125 (patch)
treebd7f44da98982b765d5b40aeaa94be206dcf0029 /openbsc/src/libmgcp/mgcp_protocol.c
parent845d0054b45dff5f5606b38dcacd9bf06a605f07 (diff)
mgcp: Add a function to get media info for MGCP responses
This patch adds the get_net_downlink_format_cb() callback to provide payload_type, subtype_name, and fmtp_extra suitable for use in a MGCP response sent to the network. Per default, the BTS side values are returned since these must be honoured by the net peer when sending audio to the media gateway (unless transcoding is done). Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/src/libmgcp/mgcp_protocol.c')
-rw-r--r--openbsc/src/libmgcp/mgcp_protocol.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c
index 862bf175d..7837378f3 100644
--- a/openbsc/src/libmgcp/mgcp_protocol.c
+++ b/openbsc/src/libmgcp/mgcp_protocol.c
@@ -245,12 +245,15 @@ static struct msgb *create_response_with_sdp(struct mgcp_endpoint *endp,
const char *msg, const char *trans_id)
{
const char *addr = endp->cfg->local_ip;
- const char *fmtp_extra = endp->bts_end.fmtp_extra;
- const char *audio_name = endp->bts_end.audio_name;
- int payload_type = endp->bts_end.payload_type;
+ const char *fmtp_extra;
+ const char *audio_name;
+ int payload_type;
char sdp_record[4096];
int len;
+ endp->cfg->get_net_downlink_format_cb(endp, &payload_type,
+ &audio_name, &fmtp_extra);
+
if (!addr)
addr = endp->cfg->source_addr;
@@ -1268,6 +1271,8 @@ struct mgcp_config *mgcp_config_alloc(void)
cfg->rtp_processing_cb = &mgcp_rtp_processing_default;
cfg->setup_rtp_processing_cb = &mgcp_setup_rtp_processing_default;
+ cfg->get_net_downlink_format_cb = &mgcp_get_net_downlink_format_default;
+
/* default trunk handling */
cfg->trunk.cfg = cfg;
cfg->trunk.trunk_nr = 0;
@@ -1424,8 +1429,12 @@ static void send_msg(struct mgcp_endpoint *endp, int endpoint, int port,
{
char buf[2096];
int len;
- const char *audio_name = endp->bts_end.audio_name;
- int payload_type = endp->bts_end.payload_type;
+ const char *fmtp_extra;
+ const char *audio_name;
+ int payload_type;
+
+ endp->cfg->get_net_downlink_format_cb(endp, &payload_type,
+ &audio_name, &fmtp_extra);
/* hardcoded to AMR right now, we do not know the real type at this point */
len = snprintf(buf, sizeof(buf),