osmo_ortp.c: Fix warning: check ortp API in rtp_session_signal_connect

Since ortp commit 5ab29c50adc7948b11449e3aeee66010379ff7dc preceeding
ortp 0.24, the API is fixed and requests a pointer instead of an
unsigned long.

As we now require at least ortp 0.22 since libosmo-abis
15d9b7929d449e4138bcb003c614035bceadc3d1, we need to support both old
and new version of the API to continue having support for 0.22 but still
supporting new versions of the library.

Change-Id: I2dbd0498d75160358eca4336850e1a0ad2efdbeb
diff --git a/configure.ac b/configure.ac
index 9b2f189..ff78035 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,20 @@
 		[ortp_set_log_level_mask has no domain parameter])])
 CFLAGS=$_cflags_save
 
+_cflags_save=$CFLAGS
+CFLAGS="$CFLAGS $ORTP_CFLAGS"
+AC_COMPILE_IFELSE(
+	[AC_LANG_PROGRAM(
+		[[#include <ortp/ortp.h>]],
+		[[void fake_cb(struct _RtpSession *r, void *arg1, void *arg2, void *arg3) { return; } rtp_session_signal_connect(NULL, "", fake_cb, (void*) fake_cb);]]
+	)],
+	[AC_DEFINE([RTP_SIGNAL_PTR_CAST(arg)], [(void*)(arg)],
+		[rtp_session_signal_connect requires pointer parameter])],
+	[AC_DEFINE([RTP_SIGNAL_PTR_CAST(arg)], [(unsigned long)(arg)],
+		[rtp_session_signal_connect requires ulong parameter])])
+CFLAGS=$_cflags_save
+
+
 AC_OUTPUT(
 	libosmoabis.pc
 	libosmotrau.pc
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index c4e9d53..b2ee040 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -350,16 +350,19 @@
 
 	rtp_session_signal_connect(rs->sess, "ssrc_changed",
 				   (RtpCallback) ortp_sig_cb_ssrc,
-				   (unsigned long) rs);
+				   RTP_SIGNAL_PTR_CAST(rs));
+
 	rtp_session_signal_connect(rs->sess, "payload_type_changed",
 				   (RtpCallback) ortp_sig_cb_pt,
-				   (unsigned long) rs);
+				   RTP_SIGNAL_PTR_CAST(rs));
+
 	rtp_session_signal_connect(rs->sess, "network_error",
 				   (RtpCallback) ortp_sig_cb_net,
-				   (unsigned long) rs);
+				   RTP_SIGNAL_PTR_CAST(rs));
+
 	rtp_session_signal_connect(rs->sess, "timestamp_jump",
 				   (RtpCallback) ortp_sig_cb_ts,
-				   (unsigned long) rs);
+				   RTP_SIGNAL_PTR_CAST(rs));
 
 	/* initialize according to the RFC */
 	rtp_session_set_seq_number(rs->sess, random());