1 /* 2 * Copyright (C) 2017-2018 Julien Chavanton jchavanton@gmail.com 3 * 4 * This file is part of Kamailio, a free SIP server. 5 * 6 * Kamailio is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version 10 * 11 * Kamailio is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21 #ifndef rms_media_h 22 #define rms_media_h 23 24 #include "../../core/mem/shm.h" 25 #include <mediastreamer2/mediastream.h> 26 #include <mediastreamer2/msrtp.h> 27 #include <mediastreamer2/dtmfgen.h> 28 #include <mediastreamer2/msfileplayer.h> 29 #include <mediastreamer2/msfilerec.h> 30 #include <mediastreamer2/msrtp.h> 31 #include <mediastreamer2/mstonedetector.h> 32 #include <mediastreamer2/msfilter.h> 33 #include <mediastreamer2/mscommon.h> 34 #include <ortp/ortp.h> 35 #include <ortp/port.h> 36 37 #include "rtp_media_server.h" 38 typedef struct rms_action rms_action_t; 39 40 41 typedef struct call_leg_media 42 { 43 MSFactory *ms_factory; 44 RtpSession *rtps; 45 RtpProfile *rtp_profile; 46 PayloadType *pt; 47 MSTicker *ms_ticker; 48 MSFilter *ms_encoder; 49 MSFilter *ms_decoder; 50 MSFilter *ms_rtprecv; 51 MSFilter *ms_rtpsend; 52 MSFilter *ms_resampler; 53 MSFilter *ms_player; 54 MSFilter *ms_recorder; 55 MSFilter *ms_dtmfgen; 56 MSFilter *ms_tonedet; 57 MSFilter *ms_voidsource; 58 MSFilter *ms_voidsink; 59 str local_ip; 60 int local_port; 61 str remote_ip; 62 int remote_port; 63 const struct rms_dialog_info *di; 64 } call_leg_media_t; 65 66 int create_call_leg_media(call_leg_media_t *m); 67 int create_session_payload(call_leg_media_t *m); 68 69 int rms_media_init(); 70 void rms_media_destroy(); 71 72 MSFactory *rms_get_factory(); 73 74 int rms_stop_media(call_leg_media_t *m); 75 int rms_playfile(call_leg_media_t *m, rms_action_t *a); 76 int rms_start_media(call_leg_media_t *m, char *file_name); 77 int rms_bridge(call_leg_media_t *m1, call_leg_media_t *m2); 78 int rms_stop_bridge(call_leg_media_t *m1, call_leg_media_t *m2); 79 80 extern MSFilterDesc ms_pcap_file_player_desc; 81 extern MSFilterDesc ms_rtp_send_desc; 82 extern MSFilterDesc ms_rtp_recv_desc; 83 extern MSFilterDesc ms_udp_send_desc; 84 extern MSFilterDesc ms_alaw_dec_desc; 85 extern MSFilterDesc ms_alaw_enc_desc; 86 extern MSFilterDesc ms_ulaw_dec_desc; 87 extern MSFilterDesc ms_ulaw_enc_desc; 88 extern MSFilterDesc ms_dtmf_gen_desc; 89 extern MSFilterDesc ms_volume_desc; 90 extern MSFilterDesc ms_equalizer_desc; 91 extern MSFilterDesc ms_channel_adapter_desc; 92 extern MSFilterDesc ms_audio_mixer_desc; 93 extern MSFilterDesc ms_tone_detector_desc; 94 extern MSFilterDesc ms_genericplc_desc; 95 extern MSFilterDesc ms_file_player_desc; 96 extern MSFilterDesc ms_file_rec_desc; 97 extern MSFilterDesc ms_vad_dtx_desc; 98 extern MSFilterDesc ms_speex_dec_desc; 99 extern MSFilterDesc ms_speex_enc_desc; 100 extern MSFilterDesc ms_speex_ec_desc; 101 extern MSFilterDesc ms_opus_enc_desc; 102 extern MSFilterDesc ms_opus_dec_desc; 103 extern MSFilterDesc ms_resample_desc; 104 105 #endif 106