diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2016-03-07 21:12:32 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2016-03-07 21:50:47 +0100 |
commit | 2c8dfd8b7ca8546d063cbed7f3881f863f1f0a65 (patch) | |
tree | 646f5e3221f6bf5893034394f7568766adec1a32 /openbsc/src/libmgcp/mgcp_transcode.c | |
parent | 51273157fa18034349d6ac1395c6d43e80cc07c0 (diff) |
mgcp: Move the transcoding routines into a struct
We will have the NOOP implementation (e.g. used by the NAT), the
SW implementation (using software codecs), a HW assisted one that
will use a DSP to do transcoding and in theory the RTP based one
(but I will remove that code).
Diffstat (limited to 'openbsc/src/libmgcp/mgcp_transcode.c')
-rw-r--r-- | openbsc/src/libmgcp/mgcp_transcode.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/openbsc/src/libmgcp/mgcp_transcode.c b/openbsc/src/libmgcp/mgcp_transcode.c index c994d3291..aaa8863fb 100644 --- a/openbsc/src/libmgcp/mgcp_transcode.c +++ b/openbsc/src/libmgcp/mgcp_transcode.c @@ -32,6 +32,12 @@ #include <osmocom/core/talloc.h> #include <osmocom/netif/rtp.h> +const struct mgcp_transcoding mgcp_sw_transcoder = { + .processing_cb = mgcp_transcoding_process_rtp, + .setup_processing_cb = mgcp_transcoding_setup, + .get_net_downlink_format_cb = mgcp_transcoding_net_downlink_format, +}; + int mgcp_transcoding_get_frame_size(void *state_, int nsamples, int dst) { struct mgcp_process_rtp_state *state = state_; @@ -470,12 +476,12 @@ struct mgcp_process_rtp_state *check_transcode_state( goto done; /* The matching alternate payload type? Then switch */ if (rtp_hdr->payload_type == src_end->alt_codec.payload_type) { - struct mgcp_config *cfg = endp->cfg; + const struct mgcp_transcoding *trans = endp->tcfg->transcoder; struct mgcp_rtp_codec tmp_codec = src_end->alt_codec; src_end->alt_codec = src_end->codec; src_end->codec = tmp_codec; - cfg->setup_rtp_processing_cb(endp, &endp->net_end, &endp->bts_end); - cfg->setup_rtp_processing_cb(endp, &endp->bts_end, &endp->net_end); + trans->setup_processing_cb(endp, &endp->net_end, &endp->bts_end); + trans->setup_processing_cb(endp, &endp->bts_end, &endp->net_end); } done: |