aboutsummaryrefslogtreecommitdiffstats
path: root/src/trau/osmo_ortp.c
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-05-30 10:52:41 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2018-05-30 14:07:17 +0200
commit28eeb6bc9365bbe47125775fcb1f696317c22466 (patch)
tree7bc38c1dca9d0bb46a3815bd538661260990a019 /src/trau/osmo_ortp.c
parent7632278ea36c25eaa0d8e35fa0ee102ec05dc802 (diff)
ortp: reset rtp session on SSRC changes
When libortp detects a timestamp jump, we resynchronize the session in order to restore proper rtp frame reception. However, we do not resynchronize on an SSRC change. An SSRC change usually indicates the change of an RTP stream source, which is a much more profound event than a timestamp change, so we should even reset the session on SSRC changes. Also, not resynchronizing the session on an SSRC change causes problems when the jitter buffer feature is used. In those cases it takes libortp a long time until it finally detects the timestamp jump and the session resyhcornization happens late. - reset the ession on SSRC changes by calling rtp_session_reset() Change-Id: I8688a55cd20d0e14493c357db80754851e12f2fb Related OS#3299
Diffstat (limited to 'src/trau/osmo_ortp.c')
-rw-r--r--src/trau/osmo_ortp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index 18a6123..9062289 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -114,7 +114,8 @@ static void ortp_sig_cb_ssrc(RtpSession *rs, void *data)
uint32_t ssrc = rtp_session_get_recv_ssrc(rs);
LOGP(DLMIB, LOGL_INFO,
- "osmo-ortp(%d): ssrc_changed to 0x%08x\n", port, ssrc);
+ "osmo-ortp(%d): ssrc_changed to 0x%08x, resetting\n", port, ssrc);
+ rtp_session_reset(rs);
}
static void ortp_sig_cb_pt(RtpSession *rs, void *data)