diff --git a/branches/2.0/doubango/bindings/_common/MediaSessionMgr.cxx b/branches/2.0/doubango/bindings/_common/MediaSessionMgr.cxx index 3f01d064..91775897 100644 --- a/branches/2.0/doubango/bindings/_common/MediaSessionMgr.cxx +++ b/branches/2.0/doubango/bindings/_common/MediaSessionMgr.cxx @@ -260,4 +260,8 @@ bool MediaSessionMgr::defaultsSetScreenSize(int32_t sx, int32_t sy){ bool MediaSessionMgr::defaultsSetAudioGain(int32_t producer_gain, int32_t consumer_gain){ return tmedia_defaults_set_audio_gain(producer_gain, consumer_gain) == 0; +} + +bool MediaSessionMgr::defaultsSetRtpPortRange(uint16_t range_start, uint16_t range_stop){ + return tmedia_defaults_set_rtp_port_range(range_start, range_stop) == 0; } \ No newline at end of file diff --git a/branches/2.0/doubango/bindings/_common/MediaSessionMgr.h b/branches/2.0/doubango/bindings/_common/MediaSessionMgr.h index cb0c710b..32f433d0 100644 --- a/branches/2.0/doubango/bindings/_common/MediaSessionMgr.h +++ b/branches/2.0/doubango/bindings/_common/MediaSessionMgr.h @@ -79,6 +79,7 @@ public: static bool defaultsGet100relEnabled(); static bool defaultsSetScreenSize(int32_t sx, int32_t sy); static bool defaultsSetAudioGain(int32_t producer_gain, int32_t consumer_gain); + static bool defaultsSetRtpPortRange(uint16_t range_start, uint16_t range_stop); private: diff --git a/branches/2.0/doubango/bindings/csharp/MediaSessionMgr.cs b/branches/2.0/doubango/bindings/csharp/MediaSessionMgr.cs index 7b9b5210..36b9614a 100644 --- a/branches/2.0/doubango/bindings/csharp/MediaSessionMgr.cs +++ b/branches/2.0/doubango/bindings/csharp/MediaSessionMgr.cs @@ -186,6 +186,11 @@ public class MediaSessionMgr : IDisposable { return ret; } + public static bool defaultsSetRtpPortRange(ushort range_start, ushort range_stop) { + bool ret = tinyWRAPPINVOKE.MediaSessionMgr_defaultsSetRtpPortRange(range_start, range_stop); + return ret; + } + } } diff --git a/branches/2.0/doubango/bindings/csharp/tinyWRAPPINVOKE.cs b/branches/2.0/doubango/bindings/csharp/tinyWRAPPINVOKE.cs index f2fd4055..341d4719 100644 --- a/branches/2.0/doubango/bindings/csharp/tinyWRAPPINVOKE.cs +++ b/branches/2.0/doubango/bindings/csharp/tinyWRAPPINVOKE.cs @@ -344,6 +344,9 @@ class tinyWRAPPINVOKE { [DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsSetAudioGain")] public static extern bool MediaSessionMgr_defaultsSetAudioGain(int jarg1, int jarg2); + [DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsSetRtpPortRange")] + public static extern bool MediaSessionMgr_defaultsSetRtpPortRange(ushort jarg1, ushort jarg2); + [DllImport("tinyWRAP", EntryPoint="CSharp_delete_MediaContent")] public static extern void delete_MediaContent(HandleRef jarg1); diff --git a/branches/2.0/doubango/bindings/csharp/tinyWRAP_wrap.cxx b/branches/2.0/doubango/bindings/csharp/tinyWRAP_wrap.cxx index ecbf1747..6ceb2149 100644 --- a/branches/2.0/doubango/bindings/csharp/tinyWRAP_wrap.cxx +++ b/branches/2.0/doubango/bindings/csharp/tinyWRAP_wrap.cxx @@ -1774,6 +1774,20 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetAudioGain( } +SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetRtpPortRange(unsigned short jarg1, unsigned short jarg2) { + unsigned int jresult ; + uint16_t arg1 ; + uint16_t arg2 ; + bool result; + + arg1 = (uint16_t)jarg1; + arg2 = (uint16_t)jarg2; + result = (bool)MediaSessionMgr::defaultsSetRtpPortRange(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT void SWIGSTDCALL CSharp_delete_MediaContent(void * jarg1) { MediaContent *arg1 = (MediaContent *) 0 ; diff --git a/branches/2.0/doubango/bindings/java/MediaSessionMgr.java b/branches/2.0/doubango/bindings/java/MediaSessionMgr.java index f1712836..eb71e122 100644 --- a/branches/2.0/doubango/bindings/java/MediaSessionMgr.java +++ b/branches/2.0/doubango/bindings/java/MediaSessionMgr.java @@ -151,4 +151,8 @@ public class MediaSessionMgr { return tinyWRAPJNI.MediaSessionMgr_defaultsSetAudioGain(producer_gain, consumer_gain); } + public static boolean defaultsSetRtpPortRange(int range_start, int range_stop) { + return tinyWRAPJNI.MediaSessionMgr_defaultsSetRtpPortRange(range_start, range_stop); + } + } diff --git a/branches/2.0/doubango/bindings/java/android/MediaSessionMgr.java b/branches/2.0/doubango/bindings/java/android/MediaSessionMgr.java index f1712836..eb71e122 100644 --- a/branches/2.0/doubango/bindings/java/android/MediaSessionMgr.java +++ b/branches/2.0/doubango/bindings/java/android/MediaSessionMgr.java @@ -151,4 +151,8 @@ public class MediaSessionMgr { return tinyWRAPJNI.MediaSessionMgr_defaultsSetAudioGain(producer_gain, consumer_gain); } + public static boolean defaultsSetRtpPortRange(int range_start, int range_stop) { + return tinyWRAPJNI.MediaSessionMgr_defaultsSetRtpPortRange(range_start, range_stop); + } + } diff --git a/branches/2.0/doubango/bindings/java/android/tinyWRAPJNI.java b/branches/2.0/doubango/bindings/java/android/tinyWRAPJNI.java index ee864632..23443c8e 100644 --- a/branches/2.0/doubango/bindings/java/android/tinyWRAPJNI.java +++ b/branches/2.0/doubango/bindings/java/android/tinyWRAPJNI.java @@ -63,6 +63,7 @@ class tinyWRAPJNI { public final static native boolean MediaSessionMgr_defaultsGet100relEnabled(); public final static native boolean MediaSessionMgr_defaultsSetScreenSize(int jarg1, int jarg2); public final static native boolean MediaSessionMgr_defaultsSetAudioGain(int jarg1, int jarg2); + public final static native boolean MediaSessionMgr_defaultsSetRtpPortRange(int jarg1, int jarg2); public final static native void delete_MediaContent(long jarg1); public final static native String MediaContent_getType(long jarg1, MediaContent jarg1_); public final static native long MediaContent_getDataLength(long jarg1, MediaContent jarg1_); diff --git a/branches/2.0/doubango/bindings/java/android/tinyWRAP_wrap.cxx b/branches/2.0/doubango/bindings/java/android/tinyWRAP_wrap.cxx index 446c67f9..602ceebd 100644 --- a/branches/2.0/doubango/bindings/java/android/tinyWRAP_wrap.cxx +++ b/branches/2.0/doubango/bindings/java/android/tinyWRAP_wrap.cxx @@ -2725,6 +2725,22 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionM } +SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetRtpPortRange(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2) { + jboolean jresult = 0 ; + uint16_t arg1 ; + uint16_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + arg1 = (uint16_t)jarg1; + arg2 = (uint16_t)jarg2; + result = (bool)MediaSessionMgr::defaultsSetRtpPortRange(arg1,arg2); + jresult = (jboolean)result; + return jresult; +} + + SWIGEXPORT void JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_delete_1MediaContent(JNIEnv *jenv, jclass jcls, jlong jarg1) { MediaContent *arg1 = (MediaContent *) 0 ; diff --git a/branches/2.0/doubango/bindings/java/tinyWRAPJNI.java b/branches/2.0/doubango/bindings/java/tinyWRAPJNI.java index ee864632..23443c8e 100644 --- a/branches/2.0/doubango/bindings/java/tinyWRAPJNI.java +++ b/branches/2.0/doubango/bindings/java/tinyWRAPJNI.java @@ -63,6 +63,7 @@ class tinyWRAPJNI { public final static native boolean MediaSessionMgr_defaultsGet100relEnabled(); public final static native boolean MediaSessionMgr_defaultsSetScreenSize(int jarg1, int jarg2); public final static native boolean MediaSessionMgr_defaultsSetAudioGain(int jarg1, int jarg2); + public final static native boolean MediaSessionMgr_defaultsSetRtpPortRange(int jarg1, int jarg2); public final static native void delete_MediaContent(long jarg1); public final static native String MediaContent_getType(long jarg1, MediaContent jarg1_); public final static native long MediaContent_getDataLength(long jarg1, MediaContent jarg1_); diff --git a/branches/2.0/doubango/bindings/java/tinyWRAP_wrap.cxx b/branches/2.0/doubango/bindings/java/tinyWRAP_wrap.cxx index c83a38eb..e46072e5 100644 --- a/branches/2.0/doubango/bindings/java/tinyWRAP_wrap.cxx +++ b/branches/2.0/doubango/bindings/java/tinyWRAP_wrap.cxx @@ -2725,6 +2725,22 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionM } +SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetRtpPortRange(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2) { + jboolean jresult = 0 ; + uint16_t arg1 ; + uint16_t arg2 ; + bool result; + + (void)jenv; + (void)jcls; + arg1 = (uint16_t)jarg1; + arg2 = (uint16_t)jarg2; + result = (bool)MediaSessionMgr::defaultsSetRtpPortRange(arg1,arg2); + jresult = (jboolean)result; + return jresult; +} + + SWIGEXPORT void JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_delete_1MediaContent(JNIEnv *jenv, jclass jcls, jlong jarg1) { MediaContent *arg1 = (MediaContent *) 0 ; diff --git a/branches/2.0/doubango/bindings/perl/tinyWRAP.pm b/branches/2.0/doubango/bindings/perl/tinyWRAP.pm index f9a9525f..3df5986b 100644 --- a/branches/2.0/doubango/bindings/perl/tinyWRAP.pm +++ b/branches/2.0/doubango/bindings/perl/tinyWRAP.pm @@ -220,6 +220,7 @@ sub DESTROY { *defaultsGet100relEnabled = *tinyWRAPc::MediaSessionMgr_defaultsGet100relEnabled; *defaultsSetScreenSize = *tinyWRAPc::MediaSessionMgr_defaultsSetScreenSize; *defaultsSetAudioGain = *tinyWRAPc::MediaSessionMgr_defaultsSetAudioGain; +*defaultsSetRtpPortRange = *tinyWRAPc::MediaSessionMgr_defaultsSetRtpPortRange; sub DISOWN { my $self = shift; my $ptr = tied(%$self); diff --git a/branches/2.0/doubango/bindings/perl/tinyWRAP_wrap.cxx b/branches/2.0/doubango/bindings/perl/tinyWRAP_wrap.cxx index 8229107c..a56f6e40 100644 --- a/branches/2.0/doubango/bindings/perl/tinyWRAP_wrap.cxx +++ b/branches/2.0/doubango/bindings/perl/tinyWRAP_wrap.cxx @@ -2082,6 +2082,22 @@ SWIG_From_float SWIG_PERL_DECL_ARGS_1(float value) } +SWIGINTERN int +SWIG_AsVal_unsigned_SS_short SWIG_PERL_DECL_ARGS_2(SV * obj, unsigned short *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, &v); + if (SWIG_IsOK(res)) { + if ((v > USHRT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< unsigned short >(v); + } + } + return res; +} + + SWIGINTERNINLINE SV * SWIG_FromCharPtrAndSize(const char* carray, size_t size) { @@ -2205,22 +2221,6 @@ SWIG_AsVal_unsigned_SS_long_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long } -SWIGINTERN int -SWIG_AsVal_unsigned_SS_short SWIG_PERL_DECL_ARGS_2(SV * obj, unsigned short *val) -{ - unsigned long v; - int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, &v); - if (SWIG_IsOK(res)) { - if ((v > USHRT_MAX)) { - return SWIG_OverflowError; - } else { - if (val) *val = static_cast< unsigned short >(v); - } - } - return res; -} - - #include "Xcap.h" @@ -3919,6 +3919,44 @@ XS(_wrap_MediaSessionMgr_defaultsSetAudioGain) { } +XS(_wrap_MediaSessionMgr_defaultsSetRtpPortRange) { + { + uint16_t arg1 ; + uint16_t arg2 ; + unsigned short val1 ; + int ecode1 = 0 ; + unsigned short val2 ; + int ecode2 = 0 ; + int argvi = 0; + bool result; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: MediaSessionMgr_defaultsSetRtpPortRange(range_start,range_stop);"); + } + ecode1 = SWIG_AsVal_unsigned_SS_short SWIG_PERL_CALL_ARGS_2(ST(0), &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "MediaSessionMgr_defaultsSetRtpPortRange" "', argument " "1"" of type '" "uint16_t""'"); + } + arg1 = static_cast< uint16_t >(val1); + ecode2 = SWIG_AsVal_unsigned_SS_short SWIG_PERL_CALL_ARGS_2(ST(1), &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MediaSessionMgr_defaultsSetRtpPortRange" "', argument " "2"" of type '" "uint16_t""'"); + } + arg2 = static_cast< uint16_t >(val2); + result = (bool)MediaSessionMgr::defaultsSetRtpPortRange(arg1,arg2); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + XS(_wrap_delete_MediaContent) { { MediaContent *arg1 = (MediaContent *) 0 ; @@ -21577,6 +21615,7 @@ static swig_command_info swig_commands[] = { {"tinyWRAPc::MediaSessionMgr_defaultsGet100relEnabled", _wrap_MediaSessionMgr_defaultsGet100relEnabled}, {"tinyWRAPc::MediaSessionMgr_defaultsSetScreenSize", _wrap_MediaSessionMgr_defaultsSetScreenSize}, {"tinyWRAPc::MediaSessionMgr_defaultsSetAudioGain", _wrap_MediaSessionMgr_defaultsSetAudioGain}, +{"tinyWRAPc::MediaSessionMgr_defaultsSetRtpPortRange", _wrap_MediaSessionMgr_defaultsSetRtpPortRange}, {"tinyWRAPc::delete_MediaContent", _wrap_delete_MediaContent}, {"tinyWRAPc::MediaContent_getType", _wrap_MediaContent_getType}, {"tinyWRAPc::MediaContent_getDataLength", _wrap_MediaContent_getDataLength}, diff --git a/branches/2.0/doubango/bindings/python/tinyWRAP.py b/branches/2.0/doubango/bindings/python/tinyWRAP.py index da633e19..35ec98b5 100644 --- a/branches/2.0/doubango/bindings/python/tinyWRAP.py +++ b/branches/2.0/doubango/bindings/python/tinyWRAP.py @@ -196,6 +196,8 @@ class MediaSessionMgr(_object): if _newclass:defaultsSetScreenSize = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetScreenSize) __swig_getmethods__["defaultsSetAudioGain"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetAudioGain if _newclass:defaultsSetAudioGain = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetAudioGain) + __swig_getmethods__["defaultsSetRtpPortRange"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetRtpPortRange + if _newclass:defaultsSetRtpPortRange = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetRtpPortRange) MediaSessionMgr_swigregister = _tinyWRAP.MediaSessionMgr_swigregister MediaSessionMgr_swigregister(MediaSessionMgr) @@ -283,6 +285,10 @@ def MediaSessionMgr_defaultsSetAudioGain(*args): return _tinyWRAP.MediaSessionMgr_defaultsSetAudioGain(*args) MediaSessionMgr_defaultsSetAudioGain = _tinyWRAP.MediaSessionMgr_defaultsSetAudioGain +def MediaSessionMgr_defaultsSetRtpPortRange(*args): + return _tinyWRAP.MediaSessionMgr_defaultsSetRtpPortRange(*args) +MediaSessionMgr_defaultsSetRtpPortRange = _tinyWRAP.MediaSessionMgr_defaultsSetRtpPortRange + class MediaContent(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, MediaContent, name, value) diff --git a/branches/2.0/doubango/bindings/python/tinyWRAP_wrap.cxx b/branches/2.0/doubango/bindings/python/tinyWRAP_wrap.cxx index 3c90232e..8abe5e5c 100644 --- a/branches/2.0/doubango/bindings/python/tinyWRAP_wrap.cxx +++ b/branches/2.0/doubango/bindings/python/tinyWRAP_wrap.cxx @@ -3774,6 +3774,22 @@ SWIG_From_float (float value) } +SWIGINTERN int +SWIG_AsVal_unsigned_SS_short (PyObject * obj, unsigned short *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > USHRT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< unsigned short >(v); + } + } + return res; +} + + SWIGINTERNINLINE PyObject * SWIG_From_unsigned_SS_short (unsigned short value) { @@ -3867,22 +3883,6 @@ SWIG_AsVal_unsigned_SS_long_SS_long (PyObject *obj, unsigned long long *val) } -SWIGINTERN int -SWIG_AsVal_unsigned_SS_short (PyObject * obj, unsigned short *val) -{ - unsigned long v; - int res = SWIG_AsVal_unsigned_SS_long (obj, &v); - if (SWIG_IsOK(res)) { - if ((v > USHRT_MAX)) { - return SWIG_OverflowError; - } else { - if (val) *val = static_cast< unsigned short >(v); - } - } - return res; -} - - #include "Xcap.h" @@ -6519,6 +6519,37 @@ fail: } +SWIGINTERN PyObject *_wrap_MediaSessionMgr_defaultsSetRtpPortRange(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + uint16_t arg1 ; + uint16_t arg2 ; + unsigned short val1 ; + int ecode1 = 0 ; + unsigned short val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + bool result; + + if (!PyArg_ParseTuple(args,(char *)"OO:MediaSessionMgr_defaultsSetRtpPortRange",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_short(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "MediaSessionMgr_defaultsSetRtpPortRange" "', argument " "1"" of type '" "uint16_t""'"); + } + arg1 = static_cast< uint16_t >(val1); + ecode2 = SWIG_AsVal_unsigned_SS_short(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MediaSessionMgr_defaultsSetRtpPortRange" "', argument " "2"" of type '" "uint16_t""'"); + } + arg2 = static_cast< uint16_t >(val2); + result = (bool)MediaSessionMgr::defaultsSetRtpPortRange(arg1,arg2); + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *MediaSessionMgr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; @@ -21013,6 +21044,7 @@ static PyMethodDef SwigMethods[] = { { (char *)"MediaSessionMgr_defaultsGet100relEnabled", _wrap_MediaSessionMgr_defaultsGet100relEnabled, METH_VARARGS, NULL}, { (char *)"MediaSessionMgr_defaultsSetScreenSize", _wrap_MediaSessionMgr_defaultsSetScreenSize, METH_VARARGS, NULL}, { (char *)"MediaSessionMgr_defaultsSetAudioGain", _wrap_MediaSessionMgr_defaultsSetAudioGain, METH_VARARGS, NULL}, + { (char *)"MediaSessionMgr_defaultsSetRtpPortRange", _wrap_MediaSessionMgr_defaultsSetRtpPortRange, METH_VARARGS, NULL}, { (char *)"MediaSessionMgr_swigregister", MediaSessionMgr_swigregister, METH_VARARGS, NULL}, { (char *)"delete_MediaContent", _wrap_delete_MediaContent, METH_VARARGS, NULL}, { (char *)"MediaContent_getType", _wrap_MediaContent_getType, METH_VARARGS, NULL}, diff --git a/branches/2.0/doubango/tinyDAV/src/audio/tdav_session_audio.c b/branches/2.0/doubango/tinyDAV/src/audio/tdav_session_audio.c index 02eac44e..497c32d5 100644 --- a/branches/2.0/doubango/tinyDAV/src/audio/tdav_session_audio.c +++ b/branches/2.0/doubango/tinyDAV/src/audio/tdav_session_audio.c @@ -35,6 +35,7 @@ #include "tinymedia/tmedia_denoise.h" #include "tinymedia/tmedia_consumer.h" #include "tinymedia/tmedia_producer.h" +#include "tinymedia/tmedia_defaults.h" #include "tinyrtp/trtp_manager.h" #include "tinyrtp/rtp/trtp_rtp_packet.h" @@ -296,6 +297,7 @@ int tdav_session_audio_prepare(tmedia_session_t* self) if((audio->rtp_manager = trtp_manager_create(audio->rtcp_enabled, audio->local_ip, audio->useIPv6))){ ret = trtp_manager_set_rtp_callback(audio->rtp_manager, tdav_session_audio_rtp_cb, audio); + ret = trtp_manager_set_port_range(audio->rtp_manager, tmedia_defaults_get_rtp_port_range_start(), tmedia_defaults_get_rtp_port_range_stop()); ret = trtp_manager_prepare(audio->rtp_manager); if(audio->natt_ctx){ ret = trtp_manager_set_natt_ctx(audio->rtp_manager, audio->natt_ctx); diff --git a/branches/2.0/doubango/tinyDAV/src/video/tdav_session_video.c b/branches/2.0/doubango/tinyDAV/src/video/tdav_session_video.c index 3c92b4b0..ad7aee48 100644 --- a/branches/2.0/doubango/tinyDAV/src/video/tdav_session_video.c +++ b/branches/2.0/doubango/tinyDAV/src/video/tdav_session_video.c @@ -32,6 +32,7 @@ #include "tinymedia/tmedia_consumer.h" #include "tinymedia/tmedia_producer.h" +#include "tinymedia/tmedia_defaults.h" #include "tinyrtp/trtp_manager.h" #include "tinyrtp/rtp/trtp_rtp_packet.h" @@ -349,6 +350,7 @@ int tdav_session_video_prepare(tmedia_session_t* self) if((video->rtp_manager = trtp_manager_create(video->rtcp_enabled, video->local_ip, video->useIPv6))){ ret = trtp_manager_set_rtp_callback(video->rtp_manager, tdav_session_video_rtp_cb, video); + ret = trtp_manager_set_port_range(video->rtp_manager, tmedia_defaults_get_rtp_port_range_start(), tmedia_defaults_get_rtp_port_range_stop()); ret = trtp_manager_prepare(video->rtp_manager); if(video->natt_ctx){ ret = trtp_manager_set_natt_ctx(video->rtp_manager, video->natt_ctx); diff --git a/branches/2.0/doubango/tinyMEDIA/include/tinymedia/tmedia_defaults.h b/branches/2.0/doubango/tinyMEDIA/include/tinymedia/tmedia_defaults.h index 04d426e1..cbdf0cb1 100644 --- a/branches/2.0/doubango/tinyMEDIA/include/tinymedia/tmedia_defaults.h +++ b/branches/2.0/doubango/tinyMEDIA/include/tinymedia/tmedia_defaults.h @@ -61,6 +61,9 @@ TINYMEDIA_API int32_t tmedia_defaults_get_screen_y(); TINYMEDIA_API int tmedia_defaults_set_audio_gain(int32_t audio_producer_gain, int32_t audio_consumer_gain); TINYMEDIA_API int32_t tmedia_defaults_get_audio_producer_gain(); TINYMEDIA_API int32_t tmedia_defaults_get_audio_consumer_gain(); +TINYMEDIA_API uint16_t tmedia_defaults_get_rtp_port_range_start(); +TINYMEDIA_API uint16_t tmedia_defaults_get_rtp_port_range_stop(); +TINYMEDIA_API int tmedia_defaults_set_rtp_port_range(uint16_t start, uint16_t stop); TMEDIA_END_DECLS diff --git a/branches/2.0/doubango/tinyMEDIA/src/tmedia_defaults.c b/branches/2.0/doubango/tinyMEDIA/src/tmedia_defaults.c index b565b993..f0713754 100644 --- a/branches/2.0/doubango/tinyMEDIA/src/tmedia_defaults.c +++ b/branches/2.0/doubango/tinyMEDIA/src/tmedia_defaults.c @@ -21,6 +21,7 @@ */ #include "tinymedia/tmedia_defaults.h" +#include "tsk_debug.h" // // Codecs: Bandwidth @@ -57,6 +58,8 @@ static int32_t __sx = -1; static int32_t __sy = -1; static int32_t __audio_producer_gain = 0; static int32_t __audio_consumer_gain = 0; +static uint16_t __rtp_port_range_start = 1024; +static uint16_t __rtp_port_range_stop = 65535; int tmedia_defaults_set_echo_tail(uint32_t echo_tail) { @@ -182,3 +185,20 @@ int32_t tmedia_defaults_get_audio_consumer_gain(){ return __audio_consumer_gain; } +uint16_t tmedia_defaults_get_rtp_port_range_start(){ + return __rtp_port_range_start; +} + +uint16_t tmedia_defaults_get_rtp_port_range_stop(){ + return __rtp_port_range_stop; +} + +int tmedia_defaults_set_rtp_port_range(uint16_t start, uint16_t stop){ + if(start < 1024 || stop < 1024 || start >= stop){ + TSK_DEBUG_ERROR("Invalid parameter: (%u < 1024 || %u < 1024 || %u >= %u)", start, stop, start, stop); + return -1; + } + __rtp_port_range_start = start; + __rtp_port_range_stop = stop; + return 0; +} diff --git a/branches/2.0/doubango/tinyRTP/include/tinyrtp/trtp_manager.h b/branches/2.0/doubango/tinyRTP/include/tinyrtp/trtp_manager.h index cc4b49b4..d9a44936 100644 --- a/branches/2.0/doubango/tinyRTP/include/tinyrtp/trtp_manager.h +++ b/branches/2.0/doubango/tinyRTP/include/tinyrtp/trtp_manager.h @@ -83,11 +83,15 @@ typedef struct trtp_manager_s tsk_bool_t enable_rtcp; tsk_bool_t socket_disabled; tnet_transport_t* transport; + struct{ + uint16_t start; + uint16_t stop; + } port_range; } trtp_manager_t; TINYRTP_API trtp_manager_t* trtp_manager_create(tsk_bool_t enable_rtcp, const char* local_ip, tsk_bool_t ipv6); -TINYRTP_API int trtp_manager_prepare(trtp_manager_t*self); +TINYRTP_API int trtp_manager_prepare(trtp_manager_t* self); TINYRTP_API tsk_bool_t trtp_manager_is_prepared(trtp_manager_t* self); TINYRTP_API int trtp_manager_set_natt_ctx(trtp_manager_t* self, tnet_nat_context_handle_t* natt_ctx); TINYRTP_API int trtp_manager_set_rtp_callback(trtp_manager_t* self, trtp_manager_rtp_cb_f callback, const void* callback_data); @@ -95,6 +99,7 @@ TINYRTP_API int trtp_manager_set_payload_type(trtp_manager_t* self, uint8_t payl TINYRTP_API int trtp_manager_set_rtp_remote(trtp_manager_t* self, const char* remote_ip, tnet_port_t remote_port); TINYRTP_API int trtp_manager_set_rtp_remote(trtp_manager_t* self, const char* remote_ip, tnet_port_t remote_port); TINYRTP_API int trtp_manager_set_rtcp_remote(trtp_manager_t* self, const char* remote_ip, tnet_port_t remote_port); +TINYRTP_API int trtp_manager_set_port_range(trtp_manager_t* self, uint16_t start, uint16_t stop); TINYRTP_API int trtp_manager_start(trtp_manager_t* self); TINYRTP_API int trtp_manager_send_rtp(trtp_manager_t* self, const void* data, tsk_size_t size, uint32_t duration, tsk_bool_t marker, tsk_bool_t last_packet); TINYRTP_API int trtp_manager_send_rtp_2(trtp_manager_t* self, const struct trtp_rtp_packet_s* packet); diff --git a/branches/2.0/doubango/tinyRTP/src/trtp_manager.c b/branches/2.0/doubango/tinyRTP/src/trtp_manager.c index f0bf5689..2e8e8d99 100644 --- a/branches/2.0/doubango/tinyRTP/src/trtp_manager.c +++ b/branches/2.0/doubango/tinyRTP/src/trtp_manager.c @@ -38,6 +38,13 @@ #define BIG_RCVBUF (64 * 1024) #define BIG_SNDBUF (64 * 1024) +#if !defined(TRTP_PORT_RANGE_START) +# define TRTP_PORT_RANGE_START 1024 +#endif +#if !defined(TRTP_PORT_RANGE_STOP) +# define TRTP_PORT_RANGE_STOP 65535 +#endif + // TODO: Add support for outbound DTMF (http://www.ietf.org/rfc/rfc2833.txt) /* ======================= Transport callback ========================== */ @@ -158,7 +165,7 @@ int trtp_manager_prepare(trtp_manager_t* self) #if 0 tnet_port_t local_port = 6060; #else - tnet_port_t local_port = ((rand() % 64510) + 1025); + tnet_port_t local_port = ((rand() % (self->port_range.stop - self->port_range.start)) + self->port_range.start); #endif local_port = (local_port & 0xFFFE); /* turn to even number */ @@ -295,6 +302,17 @@ int trtp_manager_set_rtcp_remote(trtp_manager_t* self, const char* remote_ip, tn return 0; } +int trtp_manager_set_port_range(trtp_manager_t* self, uint16_t start, uint16_t stop) +{ + if(!self){ + TSK_DEBUG_ERROR("Invalid parameter"); + return -1; + } + self->port_range.start = start; + self->port_range.stop = stop; + return 0; +} + /** Starts the RTP/RTCP manager */ int trtp_manager_start(trtp_manager_t* self) { @@ -499,6 +517,9 @@ static tsk_object_t* trtp_manager_ctor(tsk_object_t * self, va_list * app) { trtp_manager_t *manager = self; if(manager){ + manager->port_range.start = TRTP_PORT_RANGE_START; + manager->port_range.stop = TRTP_PORT_RANGE_STOP; + /* rtp */ manager->rtp.timestamp = rand()^rand(); manager->rtp.seq_num = rand()^rand();