diff --git a/daemon/codec.c b/daemon/codec.c index 7d37af04e..159c4c966 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -186,6 +186,7 @@ static void __handler_shutdown(struct codec_handler *handler) { handler->dtmf_scaler = 0; handler->output_handler = handler; // reset to default handler->dtmf_payload_type = -1; + handler->cn_payload_type = -1; handler->pcm_dtmf_detect = 0; if (handler->stats_entry) { @@ -213,6 +214,7 @@ static struct codec_handler *__handler_new(const struct rtp_payload_type *pt, st handler->source_pt = *pt; handler->output_handler = handler; // default handler->dtmf_payload_type = -1; + handler->cn_payload_type = -1; handler->packet_encoded = packet_encoded_rtp; handler->packet_decoded = packet_decoded_fifo; handler->media = media; @@ -1132,6 +1134,7 @@ void codec_handlers_update(struct call_media *receiver, struct call_media *sink, __symmetric_codecs(receiver, sink, &sink_transcoding); int dtmf_payload_type = __dtmf_payload_type(supplemental_sinks, pref_dest_codec); + int cn_payload_type = __supp_payload_type(supplemental_sinks, pref_dest_codec, "CN"); g_hash_table_destroy(supplemental_sinks); supplemental_sinks = NULL; @@ -1298,6 +1301,7 @@ transcode:; } MEDIA_SET(receiver, TRANSCODE); __make_transcoder(handler, dest_pt, output_transcoders, dtmf_payload_type, pcm_dtmf_detect); + handler->cn_payload_type = cn_payload_type; next: l = l->next; diff --git a/include/codec.h b/include/codec.h index c3aa41adb..a45f4333c 100644 --- a/include/codec.h +++ b/include/codec.h @@ -29,6 +29,7 @@ struct codec_handler { struct rtp_payload_type source_pt; // source_pt.payload_type = hashtable index struct rtp_payload_type dest_pt; int dtmf_payload_type; + int cn_payload_type; codec_handler_func *func; int kernelize:1; int transcoder:1;