-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Supporting telephone-event/16000 #22
Comments
Has anyone been able to solve or add this? Thanks! |
In July, via private E-mail, I sent this to Evgeny:
I guess, you are about RTP in-band DMTF, right? When you created that issue report (or better start with a Community post or via the E-mail mailing list), please, update this issue here, so those are linked and someone can look at it. |
What happens is that the call is on AMR-WB/16000 - no telephone-event is sent at all. |
Perhaps you realize, this issue is not that easy. Although you face it, I have to understand it. Then, I have to reproduce it. Then, I have to understand why Asterisk behaves that way (bug and supported, or not supported at all, bug or feature request). And so on … with the current understanding of this issue, it is not limited to AMR-WB but affects all HD codecs. Therefore, it is an issue upstream. Therefore, it has to be discussed upstream. I might have a look at it, if I find time, and might even take it over, if you are lucky. However, right now, it is an upstream issue. |
It is asterisk. Also note that if the offer includes both an 8000 and 16000 hz codec, Asterisk needs to send TWO offers for DTMF. |
I am asking several questions and get one answer. I cannot work on this issue, if my questions are not answered step by step. I am not asking questions for fun.
Such statements must be supported by an interoperability case (a VoIP implementation which is effected by this already) or a reference design (IETF RFC, 3GPP, …) that indicates a future interoperability issue. Furthermore, there is still the statement that this is not an AMR-WB specific thing and effects all HD codecs, even G.722. Therefore, this is still considered an issue upstream. Again, please, connect an upstream discussion so this can be followed-up there. Furthermore, the wording offer-offer indicates the scenario Asterisk as VoIP/SIP proxy forwarding an SDP offer to another party. I thought we are talking about the scenario when Asterisk itself is the PBX. Finally, I recommend reading one of the several how-to-write-issue/bug-report articles floating around the Internet. I do not know which call scenario is affected. I do not even know which DTMF scenario is affected – is it in-band? DTMF works here with my G.722 and AMR-WB implementations. And always consider whom you explain it. For example if you want me to work on this, consider me as a guy who added several HD audio codecs to Asterisk, for voice. Now, you have to explain your ‘DTMF’ scenario to someone like this. Otherwise, I have to ask questions which wastes everyones time. |
@traud Hello. Got a similar thing here. Let me elaborate.
So I have asked Joshua Colp regarding this. Initially I questioned the use of RTPengine (the Kamailio one) as a plug-in module for handling the RTP traffic, but Joshua said this will do nothing as the processing for DTMF is outside the pluggable architecture of RTP. He suggested looking into rtp_engine.c as a starting point. Interesting fact in RFC 2833 in chapter 3.5 Payload Format. from what In understood, the te-16k is identical in processing to te-8k with the only exception that the duration is 16k timestamp units, while the te-8k has 8k timestamp units. This makes me believe that Asterisk should be able to handle it. My thoughts was to play with the hypothesis and use the AST_RTP_DTMF element to add te-16 support. In case I fail and the duration needs to be modified as well, I think this warrants a duplication of all DTMF related functions and variables with the inclusion of duration for 16k timestamp units while processing. |
I have gotten it to a state where it seems to work.
rtp_engine.c:
res_rtp_asterisk.c:
These changes plus some changes to chan_sip.c to use the format made it work. (I am planing on changing to pjsip, but it is a lot of work) |
@walbus I really want it to work for me. |
I made the changes you wrote and compiled an asterisk, but unfortunately it doesn't help, an asterisk still doesn't correspond to telephone-event/16000 😕. I am using with Asterisk 20.5.0 and PJSIP. |
@shmuel4 I have not looked at pjsip. But in chan_sip i had to add AST_RTP_DTMF_16000 a lot of places.
|
@shmuel4 |
Yes, I already found it:
If I change to:
It works, But then Kochavit does not process events at the rate of 8000. I need to find a solution... trying |
The way I was able to solve it with PJSIP is this, I don't know if this is a correct way to do it, but maybe after our research @traud can help give help and give a perfect solution. In the file
to the following form:
then in:
instead of
And the part that follows, comes:
In this situation, DTMF works for me in both ALAW and AMR-WB. |
I do experience a problem of hanging up after about 30 seconds when using AMR-WB, I couldn't figure out where it comes from, or what causes it, it doesn't happen with other codecs.. Actually, more work is needed here to make it work well... |
AMR-WB codec works at a frequency 16000, which is not supported by Asterisk. When i receive INVITE with AMR-WB, DTMF fails.
Exists any solution to solve this?
The text was updated successfully, but these errors were encountered: