dtmf transcoding

111 views
Skip to first unread message

Igor Okunev

unread,
Feb 15, 2024, 10:19:55 AM2/15/24
to Sipwise rtpengine
Hi,

I tryiing to implement transcoding from amrw to g722
my offer looks like:

                                               rtpengine_offer("direction=external direction=external codec-mask-full always-transcode codec-transcode-G722 codec-transcode-telephone-event")
;


when I got sdp like this:

[1708009736.642870] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [control] Dump for 'offer' from 10.1.10.190:46245: { "sdp": "v=0^M
o=- 3917009336 3917009336 IN IP4 192.168.0.111^M  
s=pjmedia^M
b=AS:41^M
t=0 0^M
a=X-nat:0^M
m=audio 4000 RTP/AVP 96 101^M
c=IN IP4 192.168.0.111^M
b=TIAS:23850^M
a=rtcp:4001 IN IP4 192.168.0.111^M
a=sendrecv^M
a=rtpmap:96 AMR-WB/16000^M  
a=fmtp:96 octet-align=1^M
a=rtpmap:101 telephone-event/16000^M
a=fmtp:101 0-16^M
a=ssrc:1392592649 cname:140c49c64a7b62e4^M


I see g722 / telephone-event/8000 on answer.
this config don't pass dtmf via rtpengine
it recognized by rtpengine but don't passed through

Can someone help me where i wrong ?
tested with ngcp-rtpengine-11.1.1.3 & ngcp-rtpengine-10.4.0.0



1708009737.087179] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [core] New egress SSRC for: 10.10.113.8:4000 SSRC: 9eeb2589
[1708009737.087212] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] Received RTP packet: SSRC 2baf866b, PT 236, seq 4669, TS 320, len 61
[1708009737.087232] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] Processing RTP packet: seq 4669, TS 320
[1708009737.087242] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] Decoding RTP packet now
[1708009737.087500] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] RTP media successfully decoded: TS 0, samples 320
[1708009737.087732] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [ffmpeg] av_log: Using s16p internally between filters
[1708009737.087903] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] DTMF detect, TS 0 -> 0, 320 -> 144 samples
[1708009737.088858] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] RTP media successfully encoded: TS 0, len 37
[1708009737.088872] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] Adding 37 bytes to packetizer
[1708009737.088884] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] Received packet of 38 bytes from packetizer
[1708009737.088906] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [transcoding] Scheduling to send RTP packet (seq 4669 TS 320) in 0.0 ms (at 1708009737.087032)
[1708009737.088937] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30014]: [core] Forward to sink endpoint: local 10.222.2.191:30014 -> remote 10.10.113.8:4000 (RTP seq 4669 TS 320 SSRC 9eeb2
589)
[1708009737.101439] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2 port 30000]: [core] Forward to sink endpoint: local 10.222.2.191:30000 -> remote 10.222.2.77:53526 (RTP seq 29360 TS 960 SSRC 401
97ebf)


Handshake log:




1708009736.643458] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] Subscribing '4602f095caf14cb18d868595820f14a9' to ''
[1708009736.643483] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] Subscribing '' to '4602f095caf14cb18d868595820f14a9'
[1708009736.643578] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Updating codecs for offerer 4602f095caf14cb18d868595820f14a9 #1
[1708009736.643595] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Adding codec AMR-WB/16000 (96)
[1708009736.643621] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Adding codec telephone-event/16000 (101)
[1708009736.643648] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Codec G722 not present for offering
[1708009736.643658] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Codec telephone-event already present (101)
[1708009736.643668] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Accepting codec AMR-WB/16000 (96)
[1708009736.643677] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Accepting codec telephone-event/16000 (101)
[1708009736.643690] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Updating codecs for answerer  #1
[1708009736.643700] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Adding codec AMR-WB/16000 (96)
[1708009736.643715] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Adding codec telephone-event/16000 (101)
[1708009736.643733] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Stripping codec AMR-WB/16000 (96) due to strip=all or strip=full
[1708009736.643756] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Stripping codec telephone-event/16000 (101) due to strip=all or strip=full
[1708009736.643770] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Adding codec G722 for transcoding
[1708009736.643801] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Codec G722/8000 added for transcoding with payload type 9
[1708009736.643818] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Adding codec telephone-event for transcoding
[1708009736.643833] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Codec telephone-event/8000 added for transcoding with payload type 97
[1708009736.643849] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Updating supplemental codecs for  #1
[1708009736.643880] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Setting up codec handlers for  #1 -> 4602f095caf14cb18d868595820f14a9 #1
[1708009736.643902] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Default sink codec is AMR-WB/16000
[1708009736.643925] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Checking receiver codec G722/8000/1 (9)
[1708009736.643936] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating codec handler for G722/8000 (9)
[1708009736.643958] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Sink codec is AMR-WB/16000/1 (96)
[1708009736.643978] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Created transcode context for G722/8000 (9) -> AMR-WB/16000 (96) with DTMF output 101 and CN output -1
[1708009736.643997] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating SSRC transcoder from G722/8000/1 to AMR-WB/16000/1
[1708009736.644387] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] Initialized encoder with frame size 320 samples
[1708009736.644482] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Encoder created with clockrate 16000, 1 channels, using sample format 1 (ptime 20 for 320 samples per frame and 320 sam
ples (80 bytes) per packet, bitrate 14250)
[1708009736.644508] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Checking receiver codec telephone-event/8000/1 (97)
[1708009736.644520] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating codec handler for telephone-event/8000 (97)
[1708009736.644535] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Sink codec is AMR-WB/16000/1 (96)
[1708009736.644551] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Created transcode context for telephone-event/8000 (97) -> AMR-WB/16000 (96) with DTMF output 101 and CN output -1
[1708009736.644567] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating SSRC transcoder from telephone-event/8000/1 to AMR-WB/16000/1
[1708009736.644630] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] Initialized encoder with frame size 320 samples
[1708009736.644649] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Encoder created with clockrate 16000, 1 channels, using sample format 1 (ptime 20 for 320 samples per frame and 320 sam
ples (80 bytes) per packet, bitrate 14250)


[1708009736.644508] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Checking receiver codec telephone-event/8000/1 (97)
[1708009736.644520] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating codec handler for telephone-event/8000 (97)
[1708009736.644535] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Sink codec is AMR-WB/16000/1 (96)
[1708009736.644551] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Created transcode context for telephone-event/8000 (97) -> AMR-WB/16000 (96) with DTMF output 101 and CN output -1
[1708009736.644567] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating SSRC transcoder from telephone-event/8000/1 to AMR-WB/16000/1
[1708009736.644630] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] Initialized encoder with frame size 320 samples
[1708009736.644649] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Encoder created with clockrate 16000, 1 channels, using sample format 1 (ptime 20 for 320 samples per frame and 320 sam
ples (80 bytes) per packet, bitrate 14250)
[1708009736.644663] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Using existing encoder context
[1708009736.644677] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Updating supplemental codecs for  #1
[1708009736.644713] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Setting up codec handlers for  #1 -> 4602f095caf14cb18d868595820f14a9 #1
[1708009736.644726] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Default sink codec is AMR-WB/16000
[1708009736.644738] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Checking receiver codec G722/8000/1 (9)
[1708009736.644748] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Sink codec is AMR-WB/16000/1 (96)
[1708009736.644760] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Leaving transcode context for G722/8000 (9) -> AMR-WB/16000 (96) intact
[1708009736.644770] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Checking receiver codec telephone-event/8000/1 (97)
[1708009736.644779] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Sink codec is AMR-WB/16000/1 (96)
[1708009736.644899] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Created transcode context for telephone-event/8000 (97) -> AMR-WB/16000 (96) with DTMF output 101 and CN output -1
[1708009736.644913] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Creating SSRC transcoder from telephone-event/8000/1 to AMR-WB/16000/1
[1708009736.644958] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] Initialized encoder with frame size 320 samples
[1708009736.644972] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Encoder created with clockrate 16000, 1 channels, using sample format 1 (ptime 20 for 320 samples per frame and 320 sam
ples (80 bytes) per packet, bitrate 14250)
[1708009736.644983] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [codec] Using existing encoder context
[1708009736.645254] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] set FILLED flag for stream, local 10.222.2.191:30014 remote 192.168.0.111:4000
[1708009736.645278] DEBUG: [dae8244ccacf40d0b21e80d4f1049ef2]: [core] set FILLED flag for stream, local 10.222.2.191:30015 remote 192.168.0.111:4001
[1708009736.645388] INFO: [dae8244ccacf40d0b21e80d4f1049ef2]: [control] Replying to 'offer' from 10.1.10.190:46245 (elapsed time 0.002482 sec)





Igor Okunev

unread,
Feb 15, 2024, 3:30:34 PM2/15/24
to Sipwise rtpengine
it seems I fount root cause of this issue. Second leg responce with differenece paload number  for dtmf-event-8000  because of this rtpengine ignore it.

четверг, 15 февраля 2024 г. в 18:19:55 UTC+3, Igor Okunev:
Reply all
Reply to author
Forward
0 new messages