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};
