<!-- Kamailio Pull Request Template -->
#### Pre-Submission Checklist
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] New module
#### Checklist:
Tested with various sofphones : Ekiga, Linphone, CSipSimple
#### Description
By combining Kamailio, oRTP and mediastreamer2
this module is providing some very good foundation to support RTP endpoint and various media processing features.
This seems like a great idea for various use cases like IoT, IVR or other specific needs.
Kamailio is handling everything related to SIP/SDP (the module is adding some SDP parsing) as well as providing a scripting engine.
oRTP is providing RTP endpoints compliant with (RFC 3550)
MediaStreamer2, even if written in C is quite a high level library, because it is implementing a framework for audio processing using graphs of filters, filters can be to do various things.
Similar to playing with lego blocks :)
* Support for most free and some non free codecs can be added easily.
* Work to bridge calls is already in progress in the module.
* Mobile phone support ARM CPU
* other embedded scenario should be supported
* much more ...
Mediastream2 is creating one thread per call "msticker", this can work smoothly in Kamailio even if it is forking processes.
Shared memory allocation is supported using wrapper around malloc/free used by the libraries.
Some extra work that needs to be done shorty
* Syncronization with locks is not completed (minor task, only access to a linked list needs to be syncronized properly)
* Memory leak not tested properly (not take the time to test with valgrind yet)
This project was started last year, I think it is time to submit it, I will surely find the time to do the extra work needed shortly.
Example config using the features already implemented
```
event_route[rms:start] {
xnotice("[rms:start] play ...\n");
rms_play("/tmp/reference_8000.wav", "rms:after_play");
};
event_route[rms:after_play] {
xnotice("[rms:after_play] play done...\n");
rms_hangup();
};
route {
if (t_precheck_trans()) {
t_check_trans();
exit;
}
t_check_trans();
if (is_method("INVITE") && !has_totag()) {
if (!rms_answer()) {
t_reply("503", "server error");
}
}
if (is_method("BYE")){
rms_media_stop();
}
}
```
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/1701
-- Commit Summary --
* rtp_media_server: adding module
-- File Changes --
M src/Makefile.groups (6)
A src/modules/rtp_media_server/Makefile (13)
A src/modules/rtp_media_server/config_example/kamailio.cfg (56)
A src/modules/rtp_media_server/doc/Makefile (4)
A src/modules/rtp_media_server/doc/rtp_media_server.xml (42)
A src/modules/rtp_media_server/doc/rtp_media_server_admin.xml (193)
A src/modules/rtp_media_server/install_bc.sh (45)
A src/modules/rtp_media_server/rms_media.c (320)
A src/modules/rtp_media_server/rms_media.h (103)
A src/modules/rtp_media_server/rms_sdp.c (301)
A src/modules/rtp_media_server/rms_sdp.h (45)
A src/modules/rtp_media_server/rtp_media_server.c (718)
A src/modules/rtp_media_server/rtp_media_server.h (91)
A src/modules/rtp_media_server/voice_file/Bach_10s_8000.wav (0)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/1701.patchhttps://github.com/kamailio/kamailio/pull/1701.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/1701