oRTP 0.25.0

- Main Page
- Data Structures
- Files

- File List
- Globals

rtpsession.h
Go to the documentation of this file.
1 /*
2 The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.
3 Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
30 #ifndef RTPSESSION_H
31 #define RTPSESSION_H
32
33
34 #include <ortp/port.h>
35 #include <ortp/rtp.h>
36 #include <ortp/payloadtype.h>
37 #include <ortp/rtpprofile.h>
38 #include <ortp/sessionset.h>
39 #include <ortp/rtcp.h>
40 #include <ortp/str_utils.h>
41 #include <ortp/rtpsignaltable.h>
42 #include <ortp/event.h>
43
44
45 #define ORTP_AVPF_FEATURE_NONE 0
46 #define ORTP_AVPF_FEATURE_TMMBR (1 << 0)
47 #define ORTP_AVPF_FEATURE_GENERIC_NACK (1 << 1)
48
49
50 typedef enum {
51 RTP_SESSION_RECVONLY,
52 RTP_SESSION_SENDONLY,
53 RTP_SESSION_SENDRECV
54 } RtpSessionMode;
55
56
59 typedef struct _JBParameters{
60 int min_size;
61 int nom_size;
62 int max_size;
63 bool_t adaptive;
64 bool_t pad[3];
65 int max_packets;
66 } JBParameters;
67
68 typedef struct _JitterControl
69 {
70 unsigned int count;
71 int jitt_comp; /* the user jitt_comp in miliseconds*/
72 int jitt_comp_ts; /* the jitt_comp converted in rtp time (same unit as timestamp) */
73 int adapt_jitt_comp_ts;
74 int64_t slide;
75 int64_t prev_slide;
76 float jitter;
77 int olddiff;
78 float inter_jitter; /* interarrival jitter as defined in the RFC */
79 int corrective_step;
80 int corrective_slide;
81 uint64_t cum_jitter_buffer_size; /*in timestamp units*/
82 unsigned int cum_jitter_buffer_count; /*used for computation of jitter buffer size*/
83 int clock_rate;
84 bool_t adaptive;
85 bool_t enabled;
86 } JitterControl;
87
88 typedef struct _WaitPoint
89 {
90 ortp_mutex_t lock;
91 ortp_cond_t cond;
92 uint32_t time;
93 bool_t wakeup;
94 } WaitPoint;
95
96 typedef struct _RtpTransportModifier
97 {
98 void *data;
99 struct _RtpSession *session;//<back pointer to the owning session, set by oRTP
100 int (*t_process_on_send)(struct _RtpTransportModifier *t, mblk_t *msg);
101 int (*t_process_on_receive)(struct _RtpTransportModifier *t, mblk_t *msg);
102 void (*t_process_on_schedule)(struct _RtpTransportModifier *t); /*invoked each time rtp_session_recvm is called even is no message are available*/
107 void (*t_destroy)(struct _RtpTransportModifier *transport);
108 } RtpTransportModifier;
109
110 typedef struct _RtpTransport
111 {
112 void *data;
113 struct _RtpSession *session;//<back pointer to the owning session, set by oRTP
114 ortp_socket_t (*t_getsocket)(struct _RtpTransport *t);
115 int (*t_sendto)(struct _RtpTransport *t, mblk_t *msg , int flags, const struct sockaddr *to, socklen_t tolen);
116 int (*t_recvfrom)(struct _RtpTransport *t, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen);
117 void (*t_close)(struct _RtpTransport *transport, void *userData);
122 void (*t_destroy)(struct _RtpTransport *transport);
123 } RtpTransport;
124
125 typedef enum _OrtpNetworkSimulatorMode{
126 OrtpNetworkSimulatorInvalid=-1,
127 OrtpNetworkSimulatorInbound,
128 OrtpNetworkSimulatorOutbound,
129 OrtpNetworkSimulatorOutboundControlled
131 }OrtpNetworkSimulatorMode;
132
136 typedef struct _OrtpNetworkSimulatorParams{
137 int enabled;
138 float max_bandwidth;
139 int max_buffer_size;
140 float loss_rate;
141 uint32_t latency;
142 float consecutive_loss_probability;
143 float jitter_burst_density;
144 float jitter_strength;
145 OrtpNetworkSimulatorMode mode;
146 }OrtpNetworkSimulatorParams;
147
148 typedef struct _OrtpNetworkSimulatorCtx{
149 OrtpNetworkSimulatorParams params;
150 int bit_budget;
151 int qsize;
152 queue_t q;/*queue used for simulating bandwidth limit*/
153 queue_t latency_q;
154 queue_t send_q; /*used only for OrtpNetworkSimulatorOutbound direction*/
155 struct timeval last_check;
156 uint64_t last_jitter_event;
157 int consecutive_drops;
158 int drops_to_ignore;
159 int drop_by_congestion;
160 int drop_by_loss;
161 int total_count; /*total number of packets gone through the simulator*/
162 ortp_mutex_t mutex;
163 ortp_thread_t thread;
164 bool_t in_jitter_event;
165 bool_t thread_started;
166 }OrtpNetworkSimulatorCtx;
167
168 typedef struct OrtpRtcpSendAlgorithm {
169 uint64_t tn; /* Time of the next scheduled RTCP RR transmission in milliseconds. */
170 uint64_t tp; /* Time of the last scheduled RTCP RR transmission in milliseconds. */
171 uint64_t t_rr_last; /* Time of the last regular RTCP packet sent in milliseconds. */
172 uint32_t T_rr; /* Interval for the scheduling of the next regular RTCP packet. */
173 uint32_t T_max_fb_delay; /* Interval within which a feeback message is considered to be useful to the sender. */
174 uint32_t T_rr_interval; /* Minimal interval to be used between regular RTCP packets. */
175 uint32_t T_rr_current_interval;
176 uint32_t Tmin; /* Minimal interval between RTCP packets. */
177 float avg_rtcp_size;
178 mblk_t *fb_packets;
179 bool_t initialized; /* Whether the RTCP send algorithm is fully initialized. */
180 bool_t initial;
181 bool_t allow_early;
182 bool_t tmmbr_scheduled;
183 bool_t tmmbn_scheduled;
184 } OrtpRtcpSendAlgorithm;
185
186 typedef struct OrtpRtcpFbConfiguration {
187 bool_t generic_nack_enabled;
188 bool_t tmmbr_enabled;
189 } OrtpRtcpFbConfiguration;
190
191 #define ORTP_RTCP_XR_UNAVAILABLE_PARAMETER 127
192
193 typedef enum {
194 OrtpRtcpXrNoPlc,
195 OrtpRtcpXrSilencePlc,
196 OrtpRtcpXrEnhancedPlc
197 } OrtpRtcpXrPlcStatus;
198
199 typedef OrtpRtcpXrPlcStatus (*OrtpRtcpXrPlcCallback)(void *userdata);
200 typedef int (*OrtpRtcpXrSignalLevelCallback)(void *userdata);
201 typedef int (*OrtpRtcpXrNoiseLevelCallback)(void *userdata);
202 typedef float (*OrtpRtcpXrAverageQualityIndicatorCallback)(void *userdata);
203
204 typedef struct OrtpRtcpXrMediaCallbacks {
205 OrtpRtcpXrPlcCallback plc;
206 OrtpRtcpXrSignalLevelCallback signal_level;
207 OrtpRtcpXrNoiseLevelCallback noise_level;
208 OrtpRtcpXrAverageQualityIndicatorCallback average_qi;
209 OrtpRtcpXrAverageQualityIndicatorCallback average_lq_qi;
210 void *userdata;
211 } OrtpRtcpXrMediaCallbacks;
212
213 typedef enum {
214 OrtpRtcpXrRcvrRttNone,
215 OrtpRtcpXrRcvrRttAll,
216 OrtpRtcpXrRcvrRttSender
217 } OrtpRtcpXrRcvrRttMode;
218
219 typedef enum {
220 OrtpRtcpXrStatSummaryLoss = (1 << 7),
221 OrtpRtcpXrStatSummaryDup = (1 << 6),
222 OrtpRtcpXrStatSummaryJitt = (1 << 5),
223 OrtpRtcpXrStatSummaryTTL = (1 << 3),
224 OrtpRtcpXrStatSummaryHL = (1 << 4)
225 } OrtpRtcpXrStatSummaryFlag;
226
227 typedef struct OrtpRtcpXrConfiguration {
228 bool_t enabled;
229 bool_t stat_summary_enabled;
230 bool_t voip_metrics_enabled;
231 OrtpRtcpXrRcvrRttMode rcvr_rtt_mode;
232 int rcvr_rtt_max_size;
233 OrtpRtcpXrStatSummaryFlag stat_summary_flags;
234 } OrtpRtcpXrConfiguration;
235
236 typedef struct OrtpRtcpXrStats {
237 uint32_t last_rcvr_rtt_ts; /* NTP timestamp (middle 32 bits) of last received XR rcvr-rtt */
238 struct timeval last_rcvr_rtt_time; /* Time at which last XR rcvr-rtt was received */
239 uint16_t rcv_seq_at_last_stat_summary; /* Received sequence number at last XR stat-summary sent */
240 uint32_t rcv_since_last_stat_summary; /* The number of packets received since last XR stat-summary was sent */
241 uint32_t dup_since_last_stat_summary; /* The number of duplicate packets received since last XR stat-summary was sent */
242 uint32_t min_jitter_since_last_stat_summary; /* The minimum value of jitter since last XR stat-summary was sent */
243 uint32_t max_jitter_since_last_stat_summary; /* The maximum value of jitter since last XR stat-summary was sent */
244 double olds_jitter_since_last_stat_summary;
245 double oldm_jitter_since_last_stat_summary;
246 double news_jitter_since_last_stat_summary;
247 double newm_jitter_since_last_stat_summary;
248 int64_t last_jitter_diff_since_last_stat_summary;
249 double olds_ttl_or_hl_since_last_stat_summary;
250 double oldm_ttl_or_hl_since_last_stat_summary;
251 double news_ttl_or_hl_since_last_stat_summary;
252 double newm_ttl_or_hl_since_last_stat_summary;
253 uint8_t min_ttl_or_hl_since_last_stat_summary; /* The minimum value of TTL/HL since last XR stat-summary was sent */
254 uint8_t max_ttl_or_hl_since_last_stat_summary; /* The maximum value of TTL/HL since last XR stat-summary was sent */
255 uint32_t first_rcv_seq;
256 uint32_t last_rcv_seq;
257 uint32_t rcv_count;
258 uint32_t discarded_count;
259 } OrtpRtcpXrStats;
260
261 typedef struct OrtpRtcpTmmbrInfo {
262 mblk_t *sent;
263 mblk_t *received;
264 } OrtpRtcpTmmbrInfo;
265
266 typedef struct _OrtpAddress{
267 struct sockaddr_storage addr;
268 socklen_t len;
269 }OrtpAddress;
270
271 typedef struct _OrtpStream {
272 ortp_socket_t socket;
273 int sockfamily;
274 int loc_port;
275 socklen_t rem_addrlen;
276 struct sockaddr_storage rem_addr;
277 socklen_t loc_addrlen;
278 struct sockaddr_storage loc_addr;
279 struct _RtpTransport *tr;
280 mblk_t *cached_mp;
281 struct timeval send_bw_start; /* used for bandwidth estimation */
282 struct timeval recv_bw_start; /* used for bandwidth estimation */
283 unsigned int sent_bytes; /* used for bandwidth estimation */
284 unsigned int recv_bytes; /* used for bandwidth estimation */
285 float upload_bw;
286 float download_bw;
287 OList *aux_destinations; /*list of OrtpAddress */
288 } OrtpStream;
289
290 typedef struct _RtpStream
291 {
292 OrtpStream gs;
293 int max_rq_size;
294 int time_jump;
295 uint32_t ts_jump;
296 queue_t rq;
297 queue_t tev_rq;
298 void *QoSHandle;
299 unsigned long QoSFlowID;
300 JitterControl jittctl;
301 uint32_t snd_time_offset;/*the scheduler time when the application send its first timestamp*/
302 uint32_t snd_ts_offset; /* the first application timestamp sent by the application */
303 uint32_t snd_rand_offset; /* a random number added to the user offset to make the stream timestamp*/
304 uint32_t snd_last_ts; /* the last stream timestamp sended */
305 uint32_t rcv_time_offset; /*the scheduler time when the application ask for its first timestamp*/
306 uint32_t rcv_ts_offset; /* the first stream timestamp */
307 uint32_t rcv_query_ts_offset; /* the first user timestamp asked by the application */
308 uint32_t rcv_last_ts; /* the last stream timestamp got by the application */
309 uint16_t rcv_last_seq; /* the last stream sequence number got by the application*/
310 uint16_t pad;
311 uint32_t rcv_last_app_ts; /* the last application timestamp asked by the application */
312 uint32_t rcv_last_ret_ts; /* the timestamp of the last sample returned (only for continuous audio)*/
313 uint32_t hwrcv_extseq; /* last received on socket extended sequence number */
314 uint32_t hwrcv_seq_at_last_SR;
315 uint32_t hwrcv_since_last_SR;
316 uint32_t last_rcv_SR_ts; /* NTP timestamp (middle 32 bits) of last received SR */
317 struct timeval last_rcv_SR_time; /* time at which last SR was received */
318 uint16_t snd_seq; /* send sequence number */
319 uint32_t last_rtcp_packet_count; /*the sender's octet count in the last sent RTCP SR*/
320 uint32_t sent_payload_bytes; /*used for RTCP sender reports*/
321 rtp_stats_t stats;
322 int recv_errno;
323 int send_errno;
324 int snd_socket_size;
325 int rcv_socket_size;
326 int ssrc_changed_thres;
327 jitter_stats_t jitter_stats;
328 }RtpStream;
329
330 typedef struct _RtcpStream
331 {
332 OrtpStream gs;
333 OrtpRtcpSendAlgorithm send_algo;
334 OrtpRtcpXrConfiguration xr_conf;
335 OrtpRtcpXrMediaCallbacks xr_media_callbacks;
336 OrtpRtcpTmmbrInfo tmmbr_info;
337 bool_t enabled; /*tells whether we can send RTCP packets */
338 bool_t rtcp_xr_dlrr_to_send;
339 uint8_t rtcp_fb_fir_seq_nr; /* The FIR command sequence number */
340 uint32_t last_rtcp_fb_pli_snt;
341 } RtcpStream;
342
343 typedef struct _RtpSession RtpSession;
344
345
354 struct _RtpSession
355 {
356 RtpSession *next; /* next RtpSession, when the session are enqueued by the scheduler */
357 int mask_pos; /* the position in the scheduler mask of RtpSession : do not move this field: it is part of the ABI since the session_set macros use it*/
358 struct {
359 RtpProfile *profile;
360 int pt;
361 unsigned int ssrc;
362 WaitPoint wp;
363 } snd,rcv;
364 unsigned int inc_ssrc_candidate;
365 int inc_same_ssrc_count;
366 int hw_recv_pt; /* recv payload type before jitter buffer */
367 int recv_buf_size;
368 int target_upload_bandwidth; /* Target upload bandwidth at nework layer (with IP and UDP headers) in bits/s */
369 RtpSignalTable on_ssrc_changed;
370 RtpSignalTable on_payload_type_changed;
371 RtpSignalTable on_telephone_event_packet;
372 RtpSignalTable on_telephone_event;
373 RtpSignalTable on_timestamp_jump;
374 RtpSignalTable on_network_error;
375 RtpSignalTable on_rtcp_bye;
376 struct _OList *signal_tables;
377 struct _OList *eventqs;
378 msgb_allocator_t allocator;
379 RtpStream rtp;
380 RtcpStream rtcp;
381 OrtpRtcpXrStats rtcp_xr_stats;
382 RtpSessionMode mode;
383 struct _RtpScheduler *sched;
384 uint32_t flags;
385 int dscp;
386 int multicast_ttl;
387 int multicast_loopback;
388 float duplication_ratio; /* Number of times a packet should be duplicated */
389 float duplication_left ; /* Remainder of the duplication ratio */
390 void * user_data;
391 /* FIXME: Should be a table for all session participants. */
392 struct timeval last_recv_time; /* Time of receiving the RTP/RTCP packet. */
393 mblk_t *pending;
394 /* telephony events extension */
395 int tev_send_pt; /*telephone event to be used for sending*/
396 mblk_t *current_tev; /* the pending telephony events */
397 mblk_t *minimal_sdes;
398 mblk_t *full_sdes;
399 queue_t contributing_sources;
400 int64_t lost_packets_test_vector;
401 unsigned int interarrival_jitter_test_vector;
402 unsigned int delay_test_vector;
403 float rtt;/*last round trip delay calculated*/
404 int cum_loss;
405 OrtpNetworkSimulatorCtx *net_sim_ctx;
406 bool_t symmetric_rtp;
407 bool_t permissive; /*use the permissive algorithm*/
408 bool_t use_connect; /* use connect() on the socket */
409 bool_t ssrc_set;
410 bool_t reuseaddr; /*setsockopt SO_REUSEADDR */
411 unsigned char avpf_features;
412 };
413
414
415
416
417 #ifdef __cplusplus
418 extern "C"
419 {
420 #endif
421
422 ORTP_PUBLIC const char *ortp_network_simulator_mode_to_string(OrtpNetworkSimulatorMode mode);
423 ORTP_PUBLIC OrtpNetworkSimulatorMode ortp_network_simulator_mode_from_string(const char *str);
424
425
426 /* public API */
427 ORTP_PUBLIC RtpSession *rtp_session_new(int mode);
428 ORTP_PUBLIC void rtp_session_set_scheduling_mode(RtpSession *session, int yesno);
429 ORTP_PUBLIC void rtp_session_set_blocking_mode(RtpSession *session, int yesno);
430 ORTP_PUBLIC void rtp_session_set_profile(RtpSession *session, RtpProfile *profile);
431 ORTP_PUBLIC void rtp_session_set_send_profile(RtpSession *session,RtpProfile *profile);
432 ORTP_PUBLIC void rtp_session_set_recv_profile(RtpSession *session,RtpProfile *profile);
433 ORTP_PUBLIC RtpProfile *rtp_session_get_profile(RtpSession *session);
434 ORTP_PUBLIC RtpProfile *rtp_session_get_send_profile(RtpSession *session);
435 ORTP_PUBLIC RtpProfile *rtp_session_get_recv_profile(RtpSession *session);
436 ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, void *user_data);
437 ORTP_PUBLIC int rtp_session_signal_disconnect_by_callback(RtpSession *session,const char *signal_name, RtpCallback cb);
438 ORTP_PUBLIC void rtp_session_set_ssrc(RtpSession *session, uint32_t ssrc);
439 ORTP_PUBLIC uint32_t rtp_session_get_send_ssrc(RtpSession* session);
440 ORTP_PUBLIC uint32_t rtp_session_get_recv_ssrc(RtpSession *session);
441 ORTP_PUBLIC void rtp_session_set_seq_number(RtpSession *session, uint16_t seq);
442 ORTP_PUBLIC uint16_t rtp_session_get_seq_number(RtpSession *session);
443 ORTP_PUBLIC uint32_t rtp_session_get_rcv_ext_seq_number(RtpSession *session);
444 ORTP_PUBLIC int rtp_session_get_cum_loss(RtpSession *session);
445 ORTP_PUBLIC void rtp_session_set_duplication_ratio(RtpSession *session, float ratio);
446
447 ORTP_PUBLIC void rtp_session_enable_jitter_buffer(RtpSession *session , bool_t enabled);
448 ORTP_PUBLIC bool_t rtp_session_jitter_buffer_enabled(const RtpSession *session);
449 ORTP_PUBLIC void rtp_session_set_jitter_buffer_params(RtpSession *session, const JBParameters *par);
450 ORTP_PUBLIC void rtp_session_get_jitter_buffer_params(RtpSession *session, JBParameters *par);
451
452 /*deprecated jitter control functions*/
453 ORTP_PUBLIC void rtp_session_set_jitter_compensation(RtpSession *session, int milisec);
454 ORTP_PUBLIC void rtp_session_enable_adaptive_jitter_compensation(RtpSession *session, bool_t val);
455 ORTP_PUBLIC bool_t rtp_session_adaptive_jitter_compensation_enabled(RtpSession *session);
456
457 ORTP_PUBLIC void rtp_session_set_time_jump_limit(RtpSession *session, int miliseconds);
458 ORTP_PUBLIC int rtp_session_join_multicast_group(RtpSession *session, const char *ip);
459 ORTP_PUBLIC int rtp_session_set_local_addr(RtpSession *session,const char *addr, int rtp_port, int rtcp_port);
460 ORTP_PUBLIC int rtp_session_get_local_port(const RtpSession *session);
461 ORTP_PUBLIC int rtp_session_get_local_rtcp_port(const RtpSession *session);
462
463 ORTP_PUBLIC int
464 rtp_session_set_remote_addr_full (RtpSession * session, const char * rtp_addr, int rtp_port, const char * rtcp_addr, int rtcp_port);
465 /*same as previous function, old name:*/
466 ORTP_PUBLIC int rtp_session_set_remote_addr_and_port (RtpSession * session, const char * addr, int rtp_port, int rtcp_port);
467 ORTP_PUBLIC int rtp_session_set_remote_addr(RtpSession *session,const char *addr, int port);
468 ORTP_PUBLIC int rtp_session_add_aux_remote_addr_full(RtpSession * session, const char * rtp_addr, int rtp_port, const char * rtcp_addr, int rtcp_port);
469 ORTP_PUBLIC void rtp_session_clear_aux_remote_addr(RtpSession * session);
470 /* alternatively to the set_remote_addr() and set_local_addr(), an application can give
471 a valid socket (potentially connect()ed )to be used by the RtpSession */
472 ORTP_PUBLIC void rtp_session_set_sockets(RtpSession *session, int rtpfd, int rtcpfd);
473
474 ORTP_PUBLIC void rtp_session_get_transports(const RtpSession *session, RtpTransport **rtptr, RtpTransport **rtcptr);
475 /*those methods are provided for people who wants to send non-RTP messages using the RTP/RTCP sockets */
476 ORTP_PUBLIC ortp_socket_t rtp_session_get_rtp_socket(const RtpSession *session);
477 ORTP_PUBLIC ortp_socket_t rtp_session_get_rtcp_socket(const RtpSession *session);
478 ORTP_PUBLIC void rtp_session_refresh_sockets(RtpSession *session);
479
480
481 /* QOS / DSCP */
482 ORTP_PUBLIC int rtp_session_set_dscp(RtpSession *session, int dscp);
483 ORTP_PUBLIC int rtp_session_get_dscp(const RtpSession *session);
484
485
486 /* Packet info */
487 ORTP_PUBLIC int rtp_session_set_pktinfo(RtpSession *session, int activate);
488
489 /* Multicast methods */
490 ORTP_PUBLIC int rtp_session_set_multicast_ttl(RtpSession *session, int ttl);
491 ORTP_PUBLIC int rtp_session_get_multicast_ttl(RtpSession *session);
492
493 ORTP_PUBLIC int rtp_session_set_multicast_loopback(RtpSession *session, int yesno);
494 ORTP_PUBLIC int rtp_session_get_multicast_loopback(RtpSession *session);
495
496
497
498 ORTP_PUBLIC int rtp_session_set_send_payload_type(RtpSession *session, int paytype);
499 ORTP_PUBLIC int rtp_session_get_send_payload_type(const RtpSession *session);
500
501 ORTP_PUBLIC int rtp_session_get_recv_payload_type(const RtpSession *session);
502 ORTP_PUBLIC int rtp_session_set_recv_payload_type(RtpSession *session, int pt);
503
504 ORTP_PUBLIC int rtp_session_set_send_telephone_event_payload_type(RtpSession *session, int paytype);
505
506 ORTP_PUBLIC int rtp_session_set_payload_type(RtpSession *session, int pt);
507
508 ORTP_PUBLIC void rtp_session_set_symmetric_rtp (RtpSession * session, bool_t yesno);
509
510 ORTP_PUBLIC bool_t rtp_session_get_symmetric_rtp (const RtpSession * session);
511
512 ORTP_PUBLIC void rtp_session_set_connected_mode(RtpSession *session, bool_t yesno);
513
514 ORTP_PUBLIC void rtp_session_enable_rtcp(RtpSession *session, bool_t yesno);
515
516 ORTP_PUBLIC void rtp_session_set_rtcp_report_interval(RtpSession *session, int value_ms);
517
518 ORTP_PUBLIC void rtp_session_set_target_upload_bandwidth(RtpSession *session, int target_bandwidth);
519
520 ORTP_PUBLIC void rtp_session_configure_rtcp_xr(RtpSession *session, const OrtpRtcpXrConfiguration *config);
521 ORTP_PUBLIC void rtp_session_set_rtcp_xr_media_callbacks(RtpSession *session, const OrtpRtcpXrMediaCallbacks *cbs);
522
523 ORTP_PUBLIC void rtp_session_set_ssrc_changed_threshold(RtpSession *session, int numpackets);
524
525 /*low level recv and send functions */
526 ORTP_PUBLIC mblk_t * rtp_session_recvm_with_ts (RtpSession * session, uint32_t user_ts);
527 ORTP_PUBLIC mblk_t * rtp_session_create_packet(RtpSession *session, size_t header_size, const uint8_t *payload, size_t payload_size);
528 ORTP_PUBLIC mblk_t * rtp_session_create_packet_raw(const uint8_t *packet, size_t packet_size);
529 ORTP_PUBLIC mblk_t * rtp_session_create_packet_with_data(RtpSession *session, uint8_t *payload, size_t payload_size, void (*freefn)(void*));
530 ORTP_PUBLIC mblk_t * rtp_session_create_packet_in_place(RtpSession *session,uint8_t *buffer, size_t size, void (*freefn)(void*) );
531 ORTP_PUBLIC int rtp_session_sendm_with_ts (RtpSession * session, mblk_t *mp, uint32_t userts);
532 /* high level recv and send functions */
533 ORTP_PUBLIC int rtp_session_recv_with_ts(RtpSession *session, uint8_t *buffer, int len, uint32_t ts, int *have_more);
534 ORTP_PUBLIC int rtp_session_send_with_ts(RtpSession *session, const uint8_t *buffer, int len, uint32_t userts);
535
536 /* event API*/
537 ORTP_PUBLIC void rtp_session_register_event_queue(RtpSession *session, OrtpEvQueue *q);
538 ORTP_PUBLIC void rtp_session_unregister_event_queue(RtpSession *session, OrtpEvQueue *q);
539
540
541 /* IP bandwidth usage estimation functions, returning bits/s*/
542 ORTP_PUBLIC float rtp_session_compute_send_bandwidth(RtpSession *session);
543 ORTP_PUBLIC float rtp_session_compute_recv_bandwidth(RtpSession *session);
544 ORTP_PUBLIC float rtp_session_get_send_bandwidth(RtpSession *session);
545 ORTP_PUBLIC float rtp_session_get_recv_bandwidth(RtpSession *session);
546 ORTP_PUBLIC float rtp_session_get_rtp_send_bandwidth(RtpSession *session);
547 ORTP_PUBLIC float rtp_session_get_rtp_recv_bandwidth(RtpSession *session);
548 ORTP_PUBLIC float rtp_session_get_rtcp_send_bandwidth(RtpSession *session);
549 ORTP_PUBLIC float rtp_session_get_rtcp_recv_bandwidth(RtpSession *session);
550
551 ORTP_PUBLIC void rtp_session_send_rtcp_APP(RtpSession *session, uint8_t subtype, const char *name, const uint8_t *data, int datalen);
552
553 ORTP_PUBLIC uint32_t rtp_session_get_current_send_ts(RtpSession *session);
554 ORTP_PUBLIC uint32_t rtp_session_get_current_recv_ts(RtpSession *session);
555 ORTP_PUBLIC void rtp_session_flush_sockets(RtpSession *session);
556 ORTP_PUBLIC void rtp_session_release_sockets(RtpSession *session);
557 ORTP_PUBLIC void rtp_session_resync(RtpSession *session);
558 ORTP_PUBLIC void rtp_session_reset(RtpSession *session);
559 ORTP_PUBLIC void rtp_session_destroy(RtpSession *session);
560
561 ORTP_PUBLIC const rtp_stats_t * rtp_session_get_stats(const RtpSession *session);
562 ORTP_PUBLIC const jitter_stats_t * rtp_session_get_jitter_stats( const RtpSession *session );
563 ORTP_PUBLIC void rtp_session_reset_stats(RtpSession *session);
564
565 ORTP_PUBLIC void rtp_session_set_data(RtpSession *session, void *data);
566 ORTP_PUBLIC void *rtp_session_get_data(const RtpSession *session);
567
568 ORTP_PUBLIC void rtp_session_set_recv_buf_size(RtpSession *session, int bufsize);
569 ORTP_PUBLIC void rtp_session_set_rtp_socket_send_buffer_size(RtpSession * session, unsigned int size);
570 ORTP_PUBLIC void rtp_session_set_rtp_socket_recv_buffer_size(RtpSession * session, unsigned int size);
571
572 /* in use with the scheduler to convert a timestamp in scheduler time unit (ms) */
573 ORTP_PUBLIC uint32_t rtp_session_ts_to_time(RtpSession *session,uint32_t timestamp);
574 ORTP_PUBLIC uint32_t rtp_session_time_to_ts(RtpSession *session, int millisecs);
575 /* this function aims at simulating senders with "imprecise" clocks, resulting in
576 rtp packets sent with timestamp uncorrelated with the system clock .
577 This is only availlable to sessions working with the oRTP scheduler */
578 ORTP_PUBLIC void rtp_session_make_time_distorsion(RtpSession *session, int milisec);
579
580 /*RTCP functions */
581 ORTP_PUBLIC void rtp_session_set_source_description(RtpSession *session, const char *cname,
582 const char *name, const char *email, const char *phone,
583 const char *loc, const char *tool, const char *note);
584 ORTP_PUBLIC void rtp_session_add_contributing_source(RtpSession *session, uint32_t csrc,
585 const char *cname, const char *name, const char *email, const char *phone,
586 const char *loc, const char *tool, const char *note);
587 /* DEPRECATED: Use rtp_session_remove_contributing_source instead of rtp_session_remove_contributing_sources */
588 #define rtp_session_remove_contributing_sources rtp_session_remove_contributing_source
589 ORTP_PUBLIC void rtp_session_remove_contributing_source(RtpSession *session, uint32_t csrc);
590 ORTP_PUBLIC mblk_t* rtp_session_create_rtcp_sdes_packet(RtpSession *session, bool_t full);
591
592 ORTP_PUBLIC void rtp_session_get_last_recv_time(RtpSession *session, struct timeval *tv);
593 ORTP_PUBLIC int rtp_session_bye(RtpSession *session, const char *reason);
594
595 ORTP_PUBLIC int rtp_session_get_last_send_error_code(RtpSession *session);
596 ORTP_PUBLIC void rtp_session_clear_send_error_code(RtpSession *session);
597 ORTP_PUBLIC int rtp_session_get_last_recv_error_code(RtpSession *session);
598 ORTP_PUBLIC void rtp_session_clear_recv_error_code(RtpSession *session);
599
600
601 ORTP_PUBLIC float rtp_session_get_round_trip_propagation(RtpSession *session);
602
603
604 ORTP_PUBLIC void rtp_session_enable_network_simulation(RtpSession *session, const OrtpNetworkSimulatorParams *params);
605
606 ORTP_PUBLIC void rtp_session_rtcp_set_lost_packet_value( RtpSession *session, const int64_t value );
607 ORTP_PUBLIC void rtp_session_rtcp_set_jitter_value(RtpSession *session, const unsigned int value );
608 ORTP_PUBLIC void rtp_session_rtcp_set_delay_value(RtpSession *session, const unsigned int value );
609 ORTP_PUBLIC mblk_t * rtp_session_pick_with_cseq (RtpSession * session, const uint16_t sequence_number);
610
611
612 ORTP_PUBLIC void rtp_session_send_rtcp_xr_rcvr_rtt(RtpSession *session);
613 ORTP_PUBLIC void rtp_session_send_rtcp_xr_dlrr(RtpSession *session);
614 ORTP_PUBLIC void rtp_session_send_rtcp_xr_stat_summary(RtpSession *session);
615 ORTP_PUBLIC void rtp_session_send_rtcp_xr_voip_metrics(RtpSession *session);
616
617
618 ORTP_PUBLIC bool_t rtp_session_avpf_enabled(RtpSession *session);
619 ORTP_PUBLIC bool_t rtp_session_avpf_payload_type_feature_enabled(RtpSession *session, unsigned char feature);
620 ORTP_PUBLIC bool_t rtp_session_avpf_feature_enabled(RtpSession *session, unsigned char feature);
621 ORTP_PUBLIC void rtp_session_enable_avpf_feature(RtpSession *session, unsigned char feature, bool_t enable);
622 ORTP_PUBLIC uint16_t rtp_session_get_avpf_rr_interval(RtpSession *session);
623 ORTP_PUBLIC bool_t rtp_session_rtcp_psfb_scheduled(RtpSession *session, rtcp_psfb_type_t type);
624 ORTP_PUBLIC bool_t rtp_session_rtcp_rtpfb_scheduled(RtpSession *session, rtcp_rtpfb_type_t type);
625 ORTP_PUBLIC void rtp_session_send_rtcp_fb_generic_nack(RtpSession *session, uint16_t pid, uint16_t blp);
626 ORTP_PUBLIC void rtp_session_send_rtcp_fb_pli(RtpSession *session);
627 ORTP_PUBLIC void rtp_session_send_rtcp_fb_fir(RtpSession *session);
628 ORTP_PUBLIC void rtp_session_send_rtcp_fb_sli(RtpSession *session, uint16_t first, uint16_t number, uint8_t picture_id);
629 ORTP_PUBLIC void rtp_session_send_rtcp_fb_rpsi(RtpSession *session, uint8_t *bit_string, uint16_t bit_string_len);
630 ORTP_PUBLIC void rtp_session_send_rtcp_fb_tmmbr(RtpSession *session, uint64_t mxtbr);
631 ORTP_PUBLIC void rtp_session_send_rtcp_fb_tmmbn(RtpSession *session, uint32_t ssrc);
632
633
634 /*private */
635 ORTP_PUBLIC void rtp_session_init(RtpSession *session, int mode);
636 #define rtp_session_set_flag(session,flag) (session)->flags|=(flag)
637 #define rtp_session_unset_flag(session,flag) (session)->flags&=~(flag)
638 ORTP_PUBLIC void rtp_session_uninit(RtpSession *session);
639 ORTP_PUBLIC void rtp_session_dispatch_event(RtpSession *session, OrtpEvent *ev);
640
641 ORTP_PUBLIC void rtp_session_set_reuseaddr(RtpSession *session, bool_t yes);
642
643
644 ORTP_PUBLIC int meta_rtp_transport_modifier_inject_packet(const RtpTransport *t, RtpTransportModifier *tpm, mblk_t *msg , int flags);
656 ORTP_PUBLIC int meta_rtp_transport_modifier_inject_packet_to(const RtpTransport *t, RtpTransportModifier *tpm, mblk_t *msg , int flags,const struct sockaddr *to, socklen_t tolen) ;
657
664 ORTP_PUBLIC RtpTransport* meta_rtp_transport_get_endpoint(const RtpTransport *transport);
671 ORTP_PUBLIC void meta_rtp_transport_set_endpoint(RtpTransport *transport,RtpTransport *endpoint);
672
673 ORTP_PUBLIC void meta_rtp_transport_destroy(RtpTransport *tp);
674 ORTP_PUBLIC void meta_rtp_transport_append_modifier(RtpTransport *tp,RtpTransportModifier *tpm);
675 #ifdef __cplusplus
676 }
677 #endif
678
679 #endif
rtp_session_set_payload_type
ORTP_PUBLIC int rtp_session_set_payload_type(RtpSession *session, int pt)
Definition: rtpsession.c:765
rtp_session_get_send_profile
ORTP_PUBLIC RtpProfile * rtp_session_get_send_profile(RtpSession *session)
Definition: rtpsession.c:484
OrtpRtcpFbConfiguration
Definition: rtpsession.h:186
_RtcpStream
Definition: rtpsession.h:330
OrtpRtcpXrStats
Definition: rtpsession.h:236
OrtpRtcpXrConfiguration
Definition: rtpsession.h:227
rtp_session_rtcp_set_delay_value
ORTP_PUBLIC void rtp_session_rtcp_set_delay_value(RtpSession *session, const unsigned int value)
For test purpose only, simulates a constant RTT (Round Trip Time) value by setting the LSR field with...
Definition: rtpsession.c:1703
rtp_session_set_connected_mode
ORTP_PUBLIC void rtp_session_set_connected_mode(RtpSession *session, bool_t yesno)
Definition: rtpsession.c:1758
meta_rtp_transport_modifier_inject_packet_to
ORTP_PUBLIC int meta_rtp_transport_modifier_inject_packet_to(const RtpTransport *t, RtpTransportModifier *tpm, mblk_t *msg, int flags, const struct sockaddr *to, socklen_t tolen)
Definition: rtpsession.c:2119
rtp_session_create_packet_in_place
ORTP_PUBLIC mblk_t * rtp_session_create_packet_in_place(RtpSession *session, uint8_t *buffer, size_t size, void(*freefn)(void *))
Definition: rtpsession.c:878
rtp_session_get_multicast_ttl
ORTP_PUBLIC int rtp_session_get_multicast_ttl(RtpSession *session)
Definition: rtpsession_inet.c:553
rtp_session_rtcp_set_jitter_value
ORTP_PUBLIC void rtp_session_rtcp_set_jitter_value(RtpSession *session, const unsigned int value)
For test purpose only, sets a constant interarrival_jitter value within all RTCP output packets...
Definition: rtpsession.c:1677
_OrtpNetworkSimulatorParams
Definition: rtpsession.h:136
rtp_session_get_rcv_ext_seq_number
ORTP_PUBLIC uint32_t rtp_session_get_rcv_ext_seq_number(RtpSession *session)
Definition: rtpsession.c:624
_JBParameters::max_packets
int max_packets
Definition: rtpsession.h:65
rtp_session_get_dscp
ORTP_PUBLIC int rtp_session_get_dscp(const RtpSession *session)
Definition: rtpsession_inet.c:755
payloadtype.h
Definition of payload types.
rtp_session_set_remote_addr_full
ORTP_PUBLIC int rtp_session_set_remote_addr_full(RtpSession *session, const char *rtp_addr, int rtp_port, const char *rtcp_addr, int rtcp_port)
Definition: rtpsession_inet.c:812
rtp_session_get_recv_ssrc
ORTP_PUBLIC uint32_t rtp_session_get_recv_ssrc(RtpSession *session)
Definition: rtpsession.c:664
_RtpSession
Definition: rtpsession.h:354
rtp_session_flush_sockets
ORTP_PUBLIC void rtp_session_flush_sockets(RtpSession *session)
Definition: rtpsession_inet.c:1022
msgb
Definition: str_utils.h:49
_OrtpAddress
Definition: rtpsession.h:266
rtp_session_get_recv_profile
ORTP_PUBLIC RtpProfile * rtp_session_get_recv_profile(RtpSession *session)
Definition: rtpsession.c:494
rtp_session_get_seq_number
ORTP_PUBLIC uint16_t rtp_session_get_seq_number(RtpSession *session)
Definition: rtpsession.c:617
rtp_session_set_recv_buf_size
ORTP_PUBLIC void rtp_session_set_recv_buf_size(RtpSession *session, int bufsize)
Definition: rtpsession.c:506
rtp_session_new
ORTP_PUBLIC RtpSession * rtp_session_new(int mode)
Definition: rtpsession.c:319
rtp_session_create_packet_with_data
ORTP_PUBLIC mblk_t * rtp_session_create_packet_with_data(RtpSession *session, uint8_t *payload, size_t payload_size, void(*freefn)(void *))
Definition: rtpsession.c:846
rtp_session_recvm_with_ts
ORTP_PUBLIC mblk_t * rtp_session_recvm_with_ts(RtpSession *session, uint32_t user_ts)
Definition: rtpsession.c:1118
rtp_session_set_multicast_loopback
ORTP_PUBLIC int rtp_session_set_multicast_loopback(RtpSession *session, int yesno)
Definition: rtpsession_inet.c:569
_OrtpNetworkSimulatorMode
_OrtpNetworkSimulatorMode
Definition: rtpsession.h:125
_RtpStream
Definition: rtpsession.h:290
rtp_session_set_send_telephone_event_payload_type
ORTP_PUBLIC int rtp_session_set_send_telephone_event_payload_type(RtpSession *session, int paytype)
Definition: rtpsession.c:718
rtp_session_set_local_addr
ORTP_PUBLIC int rtp_session_set_local_addr(RtpSession *session, const char *addr, int rtp_port, int rtcp_port)
Definition: rtpsession_inet.c:353
rtp_session_get_jitter_stats
ORTP_PUBLIC const jitter_stats_t * rtp_session_get_jitter_stats(const RtpSession *session)
Definition: rtpsession.c:1654
rtp_session_set_multicast_ttl
ORTP_PUBLIC int rtp_session_set_multicast_ttl(RtpSession *session, int ttl)
Definition: rtpsession_inet.c:502
_WaitPoint
Definition: rtpsession.h:88
_JBParameters::min_size
int min_size
Definition: rtpsession.h:60
_RtpTransport::t_destroy
void(* t_destroy)(struct _RtpTransport *transport)
Definition: rtpsession.h:122
rtp_session_destroy
ORTP_PUBLIC void rtp_session_destroy(RtpSession *session)
Definition: rtpsession.c:1871
OrtpRtcpSendAlgorithm
Definition: rtpsession.h:168
OrtpRtcpXrMediaCallbacks
Definition: rtpsession.h:204
_RtpSignalTable
Definition: rtpsignaltable.h:27
rtp_session_set_blocking_mode
ORTP_PUBLIC void rtp_session_set_blocking_mode(RtpSession *session, int yesno)
Definition: rtpsession.c:381
_queue
Definition: str_utils.h:78
rtp_session_get_send_bandwidth
ORTP_PUBLIC float rtp_session_get_send_bandwidth(RtpSession *session)
Definition: rtpsession.c:1814
rtp_session_get_local_port
ORTP_PUBLIC int rtp_session_get_local_port(const RtpSession *session)
Definition: rtpsession_inet.c:771
rtp_session_get_last_recv_time
ORTP_PUBLIC void rtp_session_get_last_recv_time(RtpSession *session, struct timeval *tv)
Definition: rtpsession.c:1962
_OrtpNetworkSimulatorParams::max_bandwidth
float max_bandwidth
Definition: rtpsession.h:138
rtp_session_get_cum_loss
ORTP_PUBLIC int rtp_session_get_cum_loss(RtpSession *session)
Definition: rtpsession.c:631
rtp_session_set_rtp_socket_recv_buffer_size
ORTP_PUBLIC void rtp_session_set_rtp_socket_recv_buffer_size(RtpSession *session, unsigned int size)
Definition: rtpsession.c:522
JBParameters
struct _JBParameters JBParameters
jitter_stats
Definition: rtp.h:79
_JBParameters::max_size
int max_size
Definition: rtpsession.h:62
rtp_session_get_multicast_loopback
ORTP_PUBLIC int rtp_session_get_multicast_loopback(RtpSession *session)
Definition: rtpsession_inet.c:625
rtp_session_signal_connect
ORTP_PUBLIC int rtp_session_signal_connect(RtpSession *session, const char *signal_name, RtpCallback cb, void *user_data)
Definition: rtpsession.c:560
rtp_session_get_send_ssrc
ORTP_PUBLIC uint32_t rtp_session_get_send_ssrc(RtpSession *session)
Definition: rtpsession.c:654
meta_rtp_transport_modifier_inject_packet
ORTP_PUBLIC int meta_rtp_transport_modifier_inject_packet(const RtpTransport *t, RtpTransportModifier *tpm, mblk_t *msg, int flags)
Definition: rtpsession.c:2097
OrtpNetworkSimulatorOutbound
Definition: rtpsession.h:128
rtp_session_set_time_jump_limit
ORTP_PUBLIC void rtp_session_set_time_jump_limit(RtpSession *session, int miliseconds)
Definition: rtpsession.c:1410
_RtpSession::avpf_features
unsigned char avpf_features
Definition: rtpsession.h:411
OrtpEvQueue
Definition: event.h:87
_OrtpNetworkSimulatorCtx
Definition: rtpsession.h:148
rtp_session_recv_with_ts
ORTP_PUBLIC int rtp_session_recv_with_ts(RtpSession *session, uint8_t *buffer, int len, uint32_t ts, int *have_more)
Definition: rtpsession.c:1309
_OList
Definition: utils.h:33
rtp_session_set_ssrc_changed_threshold
ORTP_PUBLIC void rtp_session_set_ssrc_changed_threshold(RtpSession *session, int numpackets)
Definition: rtpsession.c:1584
_RtpTransport
Definition: rtpsession.h:110
rtp_session_pick_with_cseq
ORTP_PUBLIC mblk_t * rtp_session_pick_with_cseq(RtpSession *session, const uint16_t sequence_number)
Definition: rtpsession.c:1055
rtp_session_set_recv_profile
ORTP_PUBLIC void rtp_session_set_recv_profile(RtpSession *session, RtpProfile *profile)
Definition: rtpsession.c:460
_OrtpNetworkSimulatorParams::consecutive_loss_probability
float consecutive_loss_probability
Definition: rtpsession.h:142
rtp_stats
Definition: rtp.h:63
rtp_session_reset
ORTP_PUBLIC void rtp_session_reset(RtpSession *session)
Definition: rtpsession.c:1618
rtp_session_get_recv_bandwidth
ORTP_PUBLIC float rtp_session_get_recv_bandwidth(RtpSession *session)
Definition: rtpsession.c:1806
rtp_session_set_pktinfo
ORTP_PUBLIC int rtp_session_set_pktinfo(RtpSession *session, int activate)
Definition: rtpsession_inet.c:442
rtp_session_set_seq_number
ORTP_PUBLIC void rtp_session_set_seq_number(RtpSession *session, uint16_t seq)
Definition: rtpsession.c:605
rtp_session_send_with_ts
ORTP_PUBLIC int rtp_session_send_with_ts(RtpSession *session, const uint8_t *buffer, int len, uint32_t userts)
Definition: rtpsession.c:1018
_OrtpNetworkSimulatorParams::mode
OrtpNetworkSimulatorMode mode
Definition: rtpsession.h:145
_OrtpNetworkSimulatorParams::max_buffer_size
int max_buffer_size
Definition: rtpsession.h:139
rtp_session_create_packet_raw
ORTP_PUBLIC mblk_t * rtp_session_create_packet_raw(const uint8_t *packet, size_t packet_size)
Definition: rtpsession.c:819
_OrtpStream
Definition: rtpsession.h:271
rtp_session_set_recv_payload_type
ORTP_PUBLIC int rtp_session_set_recv_payload_type(RtpSession *session, int pt)
Definition: rtpsession.c:735
rtp_session_add_aux_remote_addr_full
ORTP_PUBLIC int rtp_session_add_aux_remote_addr_full(RtpSession *session, const char *rtp_addr, int rtp_port, const char *rtcp_addr, int rtcp_port)
Definition: rtpsession_inet.c:973
meta_rtp_transport_get_endpoint
ORTP_PUBLIC RtpTransport * meta_rtp_transport_get_endpoint(const RtpTransport *transport)
Definition: rtpsession.c:2244
_OrtpNetworkSimulatorParams::jitter_strength
float jitter_strength
Definition: rtpsession.h:144
rtp_session_set_send_profile
ORTP_PUBLIC void rtp_session_set_send_profile(RtpSession *session, RtpProfile *profile)
Definition: rtpsession.c:442
_JBParameters
Definition: rtpsession.h:59
rtp_session_set_source_description
ORTP_PUBLIC void rtp_session_set_source_description(RtpSession *session, const char *cname, const char *name, const char *email, const char *phone, const char *loc, const char *tool, const char *note)
Definition: rtcp.c:128
_JBParameters::nom_size
int nom_size
Definition: rtpsession.h:61
OrtpNetworkSimulatorOutboundControlled
Definition: rtpsession.h:129
rtp_session_set_data
ORTP_PUBLIC void rtp_session_set_data(RtpSession *session, void *data)
Definition: rtpsession.c:1718
_msgb_allocator
Definition: str_utils.h:152
rtp_session_set_symmetric_rtp
ORTP_PUBLIC void rtp_session_set_symmetric_rtp(RtpSession *session, bool_t yesno)
Definition: rtpsession.c:1740
rtp_session_refresh_sockets
ORTP_PUBLIC void rtp_session_refresh_sockets(RtpSession *session)
Definition: rtpsession_inet.c:415
_RtpScheduler
Definition: scheduler.h:28
rtp_session_set_rtp_socket_send_buffer_size
ORTP_PUBLIC void rtp_session_set_rtp_socket_send_buffer_size(RtpSession *session, unsigned int size)
Definition: rtpsession.c:514
rtp_session_set_profile
ORTP_PUBLIC void rtp_session_set_profile(RtpSession *session, RtpProfile *profile)
Definition: rtpsession.c:400
rtp_session_enable_rtcp
ORTP_PUBLIC void rtp_session_enable_rtcp(RtpSession *session, bool_t yesno)
Definition: rtpsession.c:415
rtp_session_get_profile
ORTP_PUBLIC RtpProfile * rtp_session_get_profile(RtpSession *session)
Definition: rtpsession.c:473
rtp_session_get_stats
ORTP_PUBLIC const rtp_stats_t * rtp_session_get_stats(const RtpSession *session)
Definition: rtpsession.c:1647
rtp_session_get_current_recv_ts
ORTP_PUBLIC uint32_t rtp_session_get_current_recv_ts(RtpSession *session)
Definition: rtpsession.c:1383
rtp_session_set_send_payload_type
ORTP_PUBLIC int rtp_session_set_send_payload_type(RtpSession *session, int paytype)
Definition: rtpsession.c:694
sessionset.h
Sending and receiving multiple streams together with only one thread.
meta_rtp_transport_set_endpoint
ORTP_PUBLIC void meta_rtp_transport_set_endpoint(RtpTransport *transport, RtpTransport *endpoint)
Definition: rtpsession.c:2248
rtp_session_release_sockets
ORTP_PUBLIC void rtp_session_release_sockets(RtpSession *session)
Definition: rtpsession.c:1451
rtp_session_rtcp_set_lost_packet_value
ORTP_PUBLIC void rtp_session_rtcp_set_lost_packet_value(RtpSession *session, const int64_t value)
For test purpose only, sets a constant lost packet value within all RTCP output packets. .
Definition: rtpsession.c:1665
_OrtpNetworkSimulatorParams::jitter_burst_density
float jitter_burst_density
Definition: rtpsession.h:143
rtp_session_signal_disconnect_by_callback
ORTP_PUBLIC int rtp_session_signal_disconnect_by_callback(RtpSession *session, const char *signal_name, RtpCallback cb)
Definition: rtpsession.c:584
_OrtpNetworkSimulatorParams::enabled
int enabled
Definition: rtpsession.h:137
rtp_session_set_ssrc
ORTP_PUBLIC void rtp_session_set_ssrc(RtpSession *session, uint32_t ssrc)
Definition: rtpsession.c:643
_RtpTransportModifier::t_destroy
void(* t_destroy)(struct _RtpTransportModifier *transport)
Definition: rtpsession.h:107
rtp_session_get_recv_payload_type
ORTP_PUBLIC int rtp_session_get_recv_payload_type(const RtpSession *session)
Definition: rtpsession.c:752
rtp_session_get_round_trip_propagation
ORTP_PUBLIC float rtp_session_get_round_trip_propagation(RtpSession *session)
Definition: rtpsession.c:1861
rtpprofile.h
Using and creating standart and custom RTP profiles.
rtp_session_create_packet
ORTP_PUBLIC mblk_t * rtp_session_create_packet(RtpSession *session, size_t header_size, const uint8_t *payload, size_t payload_size)
Definition: rtpsession.c:797
rtp_session_get_send_payload_type
ORTP_PUBLIC int rtp_session_get_send_payload_type(const RtpSession *session)
Definition: rtpsession.c:705
_RtpProfile
Definition: rtpprofile.h:41
rtp_session_set_dscp
ORTP_PUBLIC int rtp_session_set_dscp(RtpSession *session, int dscp)
Definition: rtpsession_inet.c:640
_JitterControl
Definition: rtpsession.h:68
OrtpNetworkSimulatorInbound
Definition: rtpsession.h:127
_OrtpNetworkSimulatorParams::loss_rate
float loss_rate
Definition: rtpsession.h:140
_RtpTransportModifier
Definition: rtpsession.h:96
OrtpRtcpTmmbrInfo
Definition: rtpsession.h:261
rtp_session_bye
ORTP_PUBLIC int rtp_session_bye(RtpSession *session, const char *reason)
Definition: rtcp.c:638
rtp_session_set_scheduling_mode
ORTP_PUBLIC void rtp_session_set_scheduling_mode(RtpSession *session, int yesno)
Definition: rtpsession.c:346
rtp_session_set_jitter_compensation
ORTP_PUBLIC void rtp_session_set_jitter_compensation(RtpSession *session, int milisec)
Definition: jitterctl.c:164
rtp_session_set_remote_addr
ORTP_PUBLIC int rtp_session_set_remote_addr(RtpSession *session, const char *addr, int port)
Definition: rtpsession_inet.c:792
rtp_session_sendm_with_ts
ORTP_PUBLIC int rtp_session_sendm_with_ts(RtpSession *session, mblk_t *mp, uint32_t userts)
Definition: rtpsession.c:998
_OrtpNetworkSimulatorParams::latency
uint32_t latency
Definition: rtpsession.h:141
rtp_session_get_data
ORTP_PUBLIC void * rtp_session_get_data(const RtpSession *session)
Definition: rtpsession.c:1726
rtp_session_register_event_queue
ORTP_PUBLIC void rtp_session_register_event_queue(RtpSession *session, OrtpEvQueue *q)
Definition: rtpsession.c:1467
rtp_session_resync
ORTP_PUBLIC void rtp_session_resync(RtpSession *session)
Definition: rtpsession.c:1594
rtp_session_get_current_send_ts
ORTP_PUBLIC uint32_t rtp_session_get_current_send_ts(RtpSession *session)
Definition: rtpsession.c:1357
rtp_session_set_rtcp_report_interval
ORTP_PUBLIC void rtp_session_set_rtcp_report_interval(RtpSession *session, int value_ms)
Definition: rtpsession.c:423
OrtpNetworkSimulatorParams
struct _OrtpNetworkSimulatorParams OrtpNetworkSimulatorParams