diff --git a/daemon/codec.c b/daemon/codec.c index 18f2e56dc..240ea9dcc 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -1655,10 +1655,16 @@ sink_pt_fixed:; rtp_payload_type *sink_cn_pt = __supp_payload_type(supplemental_sinks, sink_pt->clock_rate, "CN"); if (a.allow_asymmetric) { - if (!sink_dtmf_pt || (src_dtmf_pt && !rtp_payload_type_fmt_cmp(sink_dtmf_pt, src_dtmf_pt))) - sink_dtmf_pt = src_dtmf_pt; - if (!sink_cn_pt || (src_cn_pt && !rtp_payload_type_fmt_cmp(sink_cn_pt, src_cn_pt))) - sink_cn_pt = src_cn_pt; + if (src_dtmf_pt && (!sink_dtmf_pt || !rtp_payload_type_fmt_cmp(sink_dtmf_pt, src_dtmf_pt))) { + rtp_payload_type *compat = codec_store_find_compatible(&sink->codecs, src_dtmf_pt); + if (compat) + sink_dtmf_pt = src_dtmf_pt; + } + if (src_cn_pt && (!sink_cn_pt || !rtp_payload_type_fmt_cmp(sink_cn_pt, src_cn_pt))) { + rtp_payload_type *compat = codec_store_find_compatible(&sink->codecs, src_cn_pt); + if (compat) + sink_cn_pt = src_cn_pt; + } } rtp_payload_type *real_sink_dtmf_pt = NULL; // for DTMF delay diff --git a/t/auto-daemon-tests.pl b/t/auto-daemon-tests.pl index ae588ee58..ba3c09717 100755 --- a/t/auto-daemon-tests.pl +++ b/t/auto-daemon-tests.pl @@ -7390,10 +7390,9 @@ v=0 o=- 1545997027 1 IN IP4 198.51.100.11 s=tester t=0 0 -m=audio PORT RTP/AVP 8 97 +m=audio PORT RTP/AVP 8 c=IN IP4 203.0.113.1 a=rtpmap:8 PCMA/8000 -a=rtpmap:97 telephone-event/8000 a=sendrecv a=rtcp:PORT SDP