hi,
long time ago i had these patches at a seperate "rtpmux" branch. now i added them to a new branch (jolly/trx). they are very well tested now, and i think they should get merged after some review. it is my aim to support all speech codecs at osmo-nitb (built-in call handling, as well as MNCC socket interface). these patches are essential for patches that will follow during next weeks.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=f029472c...
Adding traffic forwarding via RTP to remote application
Instead of forwarding traffic through MNCC interface, traffic can now be forwarded to a given RTP destination. A special MNCC message is used for that. The traffic can still be forwarded through MNCC interface when this special MNCC message is not used.
It also works with E1 based BTSs.
In conjunction with LCR's "rtp-bridge" feature, the RTP traffic can be directly exchanged with a remote SIP endpoint, so that the traffic is not forwarded by LCR itself. This way the performance of handling traffic only depends on OpenBSC and the remote SIP endpoint. Also the traffic is exchanged with the SIP endpoint without transcoding, to have maximum performance.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=eb333169...
Adding handling of BFI (Bad Frame Indicatior) of received TRAU frames
If a bad TRAU frame is received, it is forwarded to MNCC application as GSM_TCHF_BAD_FRAME. The application can now handle the GAP of missing audio. (e.g. with extrapolation)
If TRAU frames are forwarded via RTP, bad frames are dropped, but frame counter and timestamp of RTP sender state is increased.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=7fb2bf09...
Allow dynamic RTP payload types between application and MNCC interface
Since EFR/AMR/HR codecs use dynamic RTP payload, the payload type can be set. If it is set, the frame type must be set also, so OpenBSC knows what frame types are received via RTP.
This modification only affects traffic beween application and MNCC interface, not the RTP traffic between OpenBSC and BTS.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=42eb7251...
Fixed delay problems, if RTP stream jitters too much
The RTP stream is generated or forwarded by OpenBSC to nanoBTS. Due to switching of streams (hold/retrieve call), packet loss or even stalling of sender's process, the time stamp must be corrected. If outdated packets are received, they get dropped.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=ee20ef26...
Finished support for all codecs (RTP bridge and MNCC interface)
The code is not yet tested.
AMR rate is currently fixed to 5.9k.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=5140fa39...
Fixed problem of mute audio on some calls
When reading from RTP socket, the first read() may fail right after connecting to remote socket. Subsequent read() will work as it should.
I have not checked why this read fails, but I don't see any reason why we should stop reading, just because one read() fails at the beginning.
http://cgit.osmocom.org/cgit/openbsc/commit/?h=jolly/testing&id=82e1a17e...
Fix: TCHH/HR payloads are 15 bytes (ToC + 14 bytes of speech data)
note: this last fix can be applied to the patches above, rather than merged seperately.
any suggestions?
andreas