codec_filter_run: prepare for CSD

Related: OS#4394
Change-Id: I18b396193ad25a3905cc8c1853c9680dab0a2d44
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 810b404..5f54a58 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -676,11 +676,10 @@
 	trans_cc_filter_set_bss(trans, trans->msc_a);
 	if (setup.fields & MNCC_F_BEARER_CAP)
 		trans_cc_filter_set_ms_from_bc(trans, &trans->bearer_cap);
-	codec_filter_run(&trans->cc.codecs);
+	trans_cc_filter_run(trans);
 
 	LOG_TRANS(trans, setup.emergency ? LOGL_NOTICE : LOGL_INFO, "%sSETUP to %s\n",
 		  setup.emergency ? "EMERGENCY_" : "", setup.called.number);
-	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs));
 
 	rate_ctr_inc(rate_ctr_group_get_ctr(trans->net->msc_ctrs, MSC_CTR_CALL_MO_SETUP));
 
@@ -822,8 +821,7 @@
 		LOG_TRANS(trans, LOGL_INFO,
 			  "Got no information of remote audio codecs: neither SDP nor Bearer Capability. Trying anyway.\n");
 
-	codec_filter_run(&trans->cc.codecs);
-	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs));
+	trans_cc_filter_run(trans);
 
 	/* Compose Bearer Capability information that reflects only the codecs (Speech Versions) remaining after
 	 * intersecting MS, BSS and remote call leg restrictions. To store in trans for later use, and to include in
@@ -982,8 +980,7 @@
 	}
 	codec_filter_set_local_rtp(&trans->cc.codecs, rtp_cn_local);
 
-	codec_filter_run(&trans->cc.codecs);
-	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs));
+	trans_cc_filter_run(trans);
 
 	/* If we haven't completed Assignment yet, don't sent MNCC_RTP_CREATE */
 	if (!sdp_audio_codec_is_set(&trans->cc.codecs.assignment)) {
@@ -1062,8 +1059,7 @@
 
 	new_cc_state(trans, GSM_CSTATE_CALL_RECEIVED);
 
-	codec_filter_run(&trans->cc.codecs);
-	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs));
+	trans_cc_filter_run(trans);
 	rc = sdp_msg_to_sdp_str_buf(alerting.sdp, sizeof(alerting.sdp), &trans->cc.codecs.result);
 	if (rc >= sizeof(alerting.sdp)) {
 		LOG_TRANS(trans, LOGL_ERROR, "MNCC_ALERT_IND: SDP too long (%d > %zu bytes)\n",
@@ -1100,9 +1096,8 @@
 		struct call_leg *cl = trans->msc_a->cc.call_leg;
 		struct rtp_stream *rtp_cn = cl ? cl->rtp[RTP_TO_CN] : NULL;
 		codec_filter_set_remote(&trans->cc.codecs, alerting->sdp);
-		codec_filter_run(&trans->cc.codecs);
-		LOG_TRANS(trans, LOGL_DEBUG, "%s codecs: %s\n",
-			  get_mncc_name(alerting->msg_type), codec_filter_to_str(&trans->cc.codecs));
+		trans_cc_filter_run(trans);
+		LOG_TRANS(trans, LOGL_DEBUG, "msg_type=%s\n", get_mncc_name(alerting->msg_type));
 		if (rtp_cn) {
 			rtp_stream_set_remote_addr_and_codecs(rtp_cn, &trans->cc.codecs.remote);
 			rtp_stream_commit(rtp_cn);
@@ -1160,10 +1155,8 @@
 		struct call_leg *cl = trans->msc_a->cc.call_leg;
 		struct rtp_stream *rtp_cn = cl ? cl->rtp[RTP_TO_CN] : NULL;
 		rx_mncc_sdp(trans, connect->msg_type, connect->sdp);
-		codec_filter_run(&trans->cc.codecs);
-		LOG_TRANS(trans, LOGL_DEBUG, "%s codecs: %s\n",
-			  get_mncc_name(connect->msg_type),
-			  codec_filter_to_str(&trans->cc.codecs));
+		trans_cc_filter_run(trans);
+		LOG_TRANS(trans, LOGL_DEBUG, "msg_type=%s\n", get_mncc_name(connect->msg_type));
 		if (rtp_cn) {
 			rtp_stream_set_remote_addr_and_codecs(rtp_cn, &trans->cc.codecs.remote);
 			rtp_stream_commit(rtp_cn);
@@ -1212,7 +1205,7 @@
 	new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
 	rate_ctr_inc(rate_ctr_group_get_ctr(trans->net->msc_ctrs, MSC_CTR_CALL_MT_CONNECT));
 
-	codec_filter_run(&trans->cc.codecs);
+	trans_cc_filter_run(trans);
 	sdp_msg_to_sdp_str_buf(connect.sdp, sizeof(connect.sdp), &trans->cc.codecs.result);
 	return mncc_recvmsg(trans->net, trans, MNCC_SETUP_CNF, &connect);
 }
@@ -2050,8 +2043,7 @@
 		return -EINVAL;
 	}
 
-	codec_filter_run(&trans->cc.codecs);
-	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs));
+	trans_cc_filter_run(trans);
 	codecs = &trans->cc.codecs.result.audio_codecs;
 	if (!codecs->count) {
 		LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR,
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
index 917422e..d53404f 100644
--- a/src/libmsc/msc_a.c
+++ b/src/libmsc/msc_a.c
@@ -36,6 +36,7 @@
 #include <osmocom/msc/signal.h>
 #include <osmocom/msc/vlr.h>
 #include <osmocom/msc/transaction.h>
+#include <osmocom/msc/transaction_cc.h>
 #include <osmocom/msc/ran_peer.h>
 #include <osmocom/msc/ran_msg_a.h>
 #include <osmocom/msc/ran_msg_iu.h>
@@ -47,7 +48,6 @@
 #include <osmocom/msc/rtp_stream.h>
 #include <osmocom/msc/msc_ho.h>
 #include <osmocom/msc/codec_mapping.h>
-#include <osmocom/msc/codec_filter.h>
 
 #define MSC_A_USE_WAIT_CLEAR_COMPLETE "wait-Clear-Complete"
 
@@ -637,9 +637,8 @@
 		return;
 	}
 
-	codec_filter_run(&cc_trans->cc.codecs);
-	LOG_TRANS(cc_trans, LOGL_DEBUG, "Sending Assignment Command with codecs: %s\n",
-		  codec_filter_to_str(&cc_trans->cc.codecs));
+	trans_cc_filter_run(cc_trans);
+	LOG_TRANS(cc_trans, LOGL_DEBUG, "Sending Assignment Command\n");
 
 	if (!cc_trans->cc.codecs.result.audio_codecs.count) {
 		LOG_TRANS(cc_trans, LOGL_ERROR, "Assignment not possible, no matching codec: %s\n",
@@ -1453,7 +1452,7 @@
 	if (ac->assignment_complete.codec_list_bss_supported)
 		codec_filter_set_bss(&cc_trans->cc.codecs, ac->assignment_complete.codec_list_bss_supported);
 
-	codec_filter_run(&cc_trans->cc.codecs);
+	trans_cc_filter_run(cc_trans);
 	LOG_TRANS(cc_trans, LOGL_INFO, "Assignment Complete: RAN: %s, CN: %s\n",
 		  sdp_audio_codecs_to_str(&rtps_to_ran->codecs),
 		  sdp_audio_codecs_to_str(&cc_trans->cc.codecs.result.audio_codecs));
@@ -1865,7 +1864,7 @@
 		return -EINVAL;
 
 	/* See if we can set a preliminary codec. If not, pass none for the time being. */
-	codec_filter_run(&cc_trans->cc.codecs);
+	trans_cc_filter_run(cc_trans);
 
 	cn_rtp_available = call_leg_local_ip(cl, RTP_TO_CN);
 	ran_rtp_available = call_leg_local_ip(cl, RTP_TO_RAN);
diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c
index 58617cd..96087b8 100644
--- a/src/libmsc/transaction_cc.c
+++ b/src/libmsc/transaction_cc.c
@@ -40,6 +40,12 @@
 	codec_filter_set_bss(&trans->cc.codecs, &msc_a->cc.compl_l3_codec_list_bss_supported);
 }
 
+void trans_cc_filter_run(struct gsm_trans *trans)
+{
+	codec_filter_run(&trans->cc.codecs);
+	LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n", codec_filter_to_str(&trans->cc.codecs));
+}
+
 void trans_cc_filter_set_ms_from_bc(struct gsm_trans *trans, const struct gsm_mncc_bearer_cap *bcap)
 {
 	trans->cc.codecs.ms = (struct sdp_audio_codecs){0};