Fix issue 77

This commit is contained in:
bossiel 2011-10-13 22:38:16 +00:00
parent fb7efc2e43
commit 5bef56ad5e
21 changed files with 234 additions and 34 deletions

View File

@ -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;
}

View File

@ -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:

View File

@ -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;
}
}
}

View File

@ -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);

View File

@ -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 ;

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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_);

View File

@ -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 ;

View File

@ -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_);

View File

@ -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 ;

View File

@ -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);

View File

@ -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},

View File

@ -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)

View File

@ -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},

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;
}

View File

@ -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);

View File

@ -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();