mgcp/rtp: Base jitter calculation on input timestamps

So far, the jitter computation has been based on output timestamps.

This patch uses the input timestamps instead and resets jitter
computation on SSRC changes.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c
index 5363fb8..8a5656a 100644
--- a/openbsc/src/libmgcp/mgcp_network.c
+++ b/openbsc/src/libmgcp/mgcp_network.c
@@ -375,6 +375,7 @@
 	timestamp = ntohl(rtp_hdr->timestamp);
 	arrival_time = get_current_ts(rtp_end->rate);
 	ssrc = ntohl(rtp_hdr->ssrc);
+	transit = arrival_time - timestamp;
 
 	if (!state->initialized) {
 		state->in_stream.last_seq = seq - 1;
@@ -383,7 +384,7 @@
 		state->base_seq = seq;
 		state->initialized = 1;
 		state->jitter = 0;
-		state->transit = arrival_time - timestamp;
+		state->transit = transit;
 		state->packet_duration = mgcp_rtp_packet_duration(endp, rtp_end);
 		state->out_stream = state->in_stream;
 		state->out_stream.last_timestamp = timestamp;
@@ -414,6 +415,8 @@
 			endp->conn_mode);
 
 		state->in_stream.ssrc = ssrc;
+		state->jitter = 0;
+		state->transit = transit;
 		if (rtp_end->force_constant_ssrc) {
 			int16_t delta_seq;
 
@@ -507,7 +510,6 @@
 	 * Appendix A of RFC 3550. Timestamp and arrival_time have a 1/rate
 	 * resolution.
 	 */
-	transit = arrival_time - timestamp;
 	d = transit - state->transit;
 	state->transit = transit;
 	if (d < 0)