- Allows setting max video down/up bandwidth
- Allows setting video motion rank - Allows enabling/disabling STUN for ICE per SIP stack
This commit is contained in:
parent
35e839e63d
commit
3217795f85
|
@ -293,11 +293,18 @@ tmedia_bandwidth_level_t MediaSessionMgr::defaultsGetBandwidthLevel() // @deprec
|
|||
{
|
||||
return tmedia_defaults_get_bl();
|
||||
}
|
||||
|
||||
bool MediaSessionMgr::defaultsSetVideoMotionRank(int32_t video_motion_rank)
|
||||
{
|
||||
return (tmedia_defaults_set_video_motion_rank(video_motion_rank) == 0);
|
||||
}
|
||||
bool MediaSessionMgr::defaultsSetBandwidthVideoUploadMax(int32_t bw_video_up_max_kbps)
|
||||
{
|
||||
return (tmedia_defaults_set_bandwidth_video_upload_max(bw_video_up_max_kbps) == 0);
|
||||
}
|
||||
bool MediaSessionMgr::defaultsSetBandwidthVideoDownloadMax(int32_t bw_video_down_max_kbps)
|
||||
{
|
||||
return (tmedia_defaults_set_bandwidth_video_download_max(bw_video_down_max_kbps) == 0);
|
||||
}
|
||||
|
||||
bool MediaSessionMgr::defaultsSetPrefVideoSize(tmedia_pref_video_size_t pref_video_size)
|
||||
{
|
||||
|
|
|
@ -97,7 +97,9 @@ public:
|
|||
static tmedia_profile_t defaultsGetProfile();
|
||||
static bool defaultsSetBandwidthLevel(tmedia_bandwidth_level_t bl); // @deprecated
|
||||
static tmedia_bandwidth_level_t defaultsGetBandwidthLevel(); // @deprecated
|
||||
static bool defaultsSetVideoMotionRank(int32_t video_motion_rank);
|
||||
static bool defaultsSetBandwidthVideoUploadMax(int32_t bw_video_up_max_kbps);
|
||||
static bool defaultsSetBandwidthVideoDownloadMax(int32_t bw_video_down_max_kbps);
|
||||
static bool defaultsSetPrefVideoSize(tmedia_pref_video_size_t pref_video_size);
|
||||
static bool defaultsSetJbMargin(uint32_t jb_margin_ms);
|
||||
static bool defaultsSetJbMaxLateRate(uint32_t jb_late_rate_percent);
|
||||
|
|
|
@ -234,6 +234,14 @@ bool SipStack::removeSigCompCompartment(const char* compId)
|
|||
TSIP_STACK_SET_NULL()) == 0);
|
||||
}
|
||||
|
||||
bool SipStack::setSTUNEnabledForICE(bool enabled)
|
||||
{
|
||||
tsk_bool_t _enabled = enabled ? tsk_true : tsk_false;
|
||||
return (tsip_stack_set(m_pHandle,
|
||||
TSIP_STACK_SET_ICE_STUN_ENABLED(_enabled),
|
||||
TSIP_STACK_SET_NULL()) == 0);
|
||||
}
|
||||
|
||||
bool SipStack::setSTUNServer(const char* ip, unsigned short port)
|
||||
{
|
||||
unsigned _port = port;//promote
|
||||
|
|
|
@ -65,6 +65,7 @@ public: /* API functions */
|
|||
bool addSigCompCompartment(const char* compId);
|
||||
bool removeSigCompCompartment(const char* compId);
|
||||
|
||||
bool setSTUNEnabledForICE(bool enabled);
|
||||
bool setSTUNServer(const char* ip, unsigned short port);
|
||||
bool setSTUNCred(const char* login, const char* password);
|
||||
bool setSTUNEnabled(bool enabled);
|
||||
|
|
|
@ -119,11 +119,21 @@ public class MediaSessionMgr : IDisposable {
|
|||
return ret;
|
||||
}
|
||||
|
||||
public static bool defaultsSetVideoMotionRank(int video_motion_rank) {
|
||||
bool ret = tinyWRAPPINVOKE.MediaSessionMgr_defaultsSetVideoMotionRank(video_motion_rank);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static bool defaultsSetBandwidthVideoUploadMax(int bw_video_up_max_kbps) {
|
||||
bool ret = tinyWRAPPINVOKE.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(bw_video_up_max_kbps);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static bool defaultsSetBandwidthVideoDownloadMax(int bw_video_down_max_kbps) {
|
||||
bool ret = tinyWRAPPINVOKE.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(bw_video_down_max_kbps);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static bool defaultsSetPrefVideoSize(tmedia_pref_video_size_t pref_video_size) {
|
||||
bool ret = tinyWRAPPINVOKE.MediaSessionMgr_defaultsSetPrefVideoSize((int)pref_video_size);
|
||||
return ret;
|
||||
|
|
|
@ -158,6 +158,11 @@ public class SipStack : SafeObject {
|
|||
return ret;
|
||||
}
|
||||
|
||||
public bool setSTUNEnabledForICE(bool enabled) {
|
||||
bool ret = tinyWRAPPINVOKE.SipStack_setSTUNEnabledForICE(swigCPtr, enabled);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public bool setSTUNServer(string ip, ushort port) {
|
||||
bool ret = tinyWRAPPINVOKE.SipStack_setSTUNServer(swigCPtr, ip, port);
|
||||
return ret;
|
||||
|
@ -168,8 +173,8 @@ public class SipStack : SafeObject {
|
|||
return ret;
|
||||
}
|
||||
|
||||
public bool setSTUNEnabled(bool bEnabled) {
|
||||
bool ret = tinyWRAPPINVOKE.SipStack_setSTUNEnabled(swigCPtr, bEnabled);
|
||||
public bool setSTUNEnabled(bool enabled) {
|
||||
bool ret = tinyWRAPPINVOKE.SipStack_setSTUNEnabled(swigCPtr, enabled);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -336,9 +336,15 @@ class tinyWRAPPINVOKE {
|
|||
[DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsGetBandwidthLevel")]
|
||||
public static extern int MediaSessionMgr_defaultsGetBandwidthLevel();
|
||||
|
||||
[DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsSetVideoMotionRank")]
|
||||
public static extern bool MediaSessionMgr_defaultsSetVideoMotionRank(int jarg1);
|
||||
|
||||
[DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax")]
|
||||
public static extern bool MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(int jarg1);
|
||||
|
||||
[DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax")]
|
||||
public static extern bool MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(int jarg1);
|
||||
|
||||
[DllImport("tinyWRAP", EntryPoint="CSharp_MediaSessionMgr_defaultsSetPrefVideoSize")]
|
||||
public static extern bool MediaSessionMgr_defaultsSetPrefVideoSize(int jarg1);
|
||||
|
||||
|
@ -1656,6 +1662,9 @@ class tinyWRAPPINVOKE {
|
|||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_removeSigCompCompartment")]
|
||||
public static extern bool SipStack_removeSigCompCompartment(HandleRef jarg1, string jarg2);
|
||||
|
||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setSTUNEnabledForICE")]
|
||||
public static extern bool SipStack_setSTUNEnabledForICE(HandleRef jarg1, bool jarg2);
|
||||
|
||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setSTUNServer")]
|
||||
public static extern bool SipStack_setSTUNServer(HandleRef jarg1, string jarg2, ushort jarg3);
|
||||
|
||||
|
|
|
@ -1806,6 +1806,18 @@ SWIGEXPORT int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsGetBandwidthLevel() {
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetVideoMotionRank(int jarg1) {
|
||||
unsigned int jresult ;
|
||||
int32_t arg1 ;
|
||||
bool result;
|
||||
|
||||
arg1 = (int32_t)jarg1;
|
||||
result = (bool)MediaSessionMgr::defaultsSetVideoMotionRank(arg1);
|
||||
jresult = result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(int jarg1) {
|
||||
unsigned int jresult ;
|
||||
int32_t arg1 ;
|
||||
|
@ -1818,6 +1830,18 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetBandwidthV
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(int jarg1) {
|
||||
unsigned int jresult ;
|
||||
int32_t arg1 ;
|
||||
bool result;
|
||||
|
||||
arg1 = (int32_t)jarg1;
|
||||
result = (bool)MediaSessionMgr::defaultsSetBandwidthVideoDownloadMax(arg1);
|
||||
jresult = result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_MediaSessionMgr_defaultsSetPrefVideoSize(int jarg1) {
|
||||
unsigned int jresult ;
|
||||
tmedia_pref_video_size_t arg1 ;
|
||||
|
@ -7398,6 +7422,20 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_removeSigCompCompartment(voi
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setSTUNEnabledForICE(void * jarg1, unsigned int jarg2) {
|
||||
unsigned int jresult ;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
bool arg2 ;
|
||||
bool result;
|
||||
|
||||
arg1 = (SipStack *)jarg1;
|
||||
arg2 = jarg2 ? true : false;
|
||||
result = (bool)(arg1)->setSTUNEnabledForICE(arg2);
|
||||
jresult = result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setSTUNServer(void * jarg1, char * jarg2, unsigned short jarg3) {
|
||||
unsigned int jresult ;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
|
|
|
@ -98,10 +98,18 @@ public class MediaSessionMgr {
|
|||
return tmedia_bandwidth_level_t.swigToEnum(tinyWRAPJNI.MediaSessionMgr_defaultsGetBandwidthLevel());
|
||||
}
|
||||
|
||||
public static boolean defaultsSetVideoMotionRank(int video_motion_rank) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetVideoMotionRank(video_motion_rank);
|
||||
}
|
||||
|
||||
public static boolean defaultsSetBandwidthVideoUploadMax(int bw_video_up_max_kbps) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(bw_video_up_max_kbps);
|
||||
}
|
||||
|
||||
public static boolean defaultsSetBandwidthVideoDownloadMax(int bw_video_down_max_kbps) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(bw_video_down_max_kbps);
|
||||
}
|
||||
|
||||
public static boolean defaultsSetPrefVideoSize(tmedia_pref_video_size_t pref_video_size) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetPrefVideoSize(pref_video_size.swigValue());
|
||||
}
|
||||
|
|
|
@ -131,6 +131,10 @@ public class SipStack extends SafeObject {
|
|||
return tinyWRAPJNI.SipStack_removeSigCompCompartment(swigCPtr, this, compId);
|
||||
}
|
||||
|
||||
public boolean setSTUNEnabledForICE(boolean enabled) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNEnabledForICE(swigCPtr, this, enabled);
|
||||
}
|
||||
|
||||
public boolean setSTUNServer(String ip, int port) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNServer(swigCPtr, this, ip, port);
|
||||
}
|
||||
|
@ -139,8 +143,8 @@ public class SipStack extends SafeObject {
|
|||
return tinyWRAPJNI.SipStack_setSTUNCred(swigCPtr, this, login, password);
|
||||
}
|
||||
|
||||
public boolean setSTUNEnabled(boolean bEnabled) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNEnabled(swigCPtr, this, bEnabled);
|
||||
public boolean setSTUNEnabled(boolean enabled) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNEnabled(swigCPtr, this, enabled);
|
||||
}
|
||||
|
||||
public boolean setTLSSecAgree(boolean enabled) {
|
||||
|
|
|
@ -98,10 +98,18 @@ public class MediaSessionMgr {
|
|||
return tmedia_bandwidth_level_t.swigToEnum(tinyWRAPJNI.MediaSessionMgr_defaultsGetBandwidthLevel());
|
||||
}
|
||||
|
||||
public static boolean defaultsSetVideoMotionRank(int video_motion_rank) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetVideoMotionRank(video_motion_rank);
|
||||
}
|
||||
|
||||
public static boolean defaultsSetBandwidthVideoUploadMax(int bw_video_up_max_kbps) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(bw_video_up_max_kbps);
|
||||
}
|
||||
|
||||
public static boolean defaultsSetBandwidthVideoDownloadMax(int bw_video_down_max_kbps) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(bw_video_down_max_kbps);
|
||||
}
|
||||
|
||||
public static boolean defaultsSetPrefVideoSize(tmedia_pref_video_size_t pref_video_size) {
|
||||
return tinyWRAPJNI.MediaSessionMgr_defaultsSetPrefVideoSize(pref_video_size.swigValue());
|
||||
}
|
||||
|
|
|
@ -131,6 +131,10 @@ public class SipStack extends SafeObject {
|
|||
return tinyWRAPJNI.SipStack_removeSigCompCompartment(swigCPtr, this, compId);
|
||||
}
|
||||
|
||||
public boolean setSTUNEnabledForICE(boolean enabled) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNEnabledForICE(swigCPtr, this, enabled);
|
||||
}
|
||||
|
||||
public boolean setSTUNServer(String ip, int port) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNServer(swigCPtr, this, ip, port);
|
||||
}
|
||||
|
@ -139,8 +143,8 @@ public class SipStack extends SafeObject {
|
|||
return tinyWRAPJNI.SipStack_setSTUNCred(swigCPtr, this, login, password);
|
||||
}
|
||||
|
||||
public boolean setSTUNEnabled(boolean bEnabled) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNEnabled(swigCPtr, this, bEnabled);
|
||||
public boolean setSTUNEnabled(boolean enabled) {
|
||||
return tinyWRAPJNI.SipStack_setSTUNEnabled(swigCPtr, this, enabled);
|
||||
}
|
||||
|
||||
public boolean setTLSSecAgree(boolean enabled) {
|
||||
|
|
|
@ -59,7 +59,9 @@ public class tinyWRAPJNI {
|
|||
public final static native int MediaSessionMgr_defaultsGetProfile();
|
||||
public final static native boolean MediaSessionMgr_defaultsSetBandwidthLevel(int jarg1);
|
||||
public final static native int MediaSessionMgr_defaultsGetBandwidthLevel();
|
||||
public final static native boolean MediaSessionMgr_defaultsSetVideoMotionRank(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetPrefVideoSize(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetJbMargin(long jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetJbMaxLateRate(long jarg1);
|
||||
|
@ -506,6 +508,7 @@ public class tinyWRAPJNI {
|
|||
public final static native boolean SipStack_setSigCompParams(long jarg1, SipStack jarg1_, long jarg2, long jarg3, long jarg4, boolean jarg5);
|
||||
public final static native boolean SipStack_addSigCompCompartment(long jarg1, SipStack jarg1_, String jarg2);
|
||||
public final static native boolean SipStack_removeSigCompCompartment(long jarg1, SipStack jarg1_, String jarg2);
|
||||
public final static native boolean SipStack_setSTUNEnabledForICE(long jarg1, SipStack jarg1_, boolean jarg2);
|
||||
public final static native boolean SipStack_setSTUNServer(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
||||
public final static native boolean SipStack_setSTUNCred(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
|
||||
public final static native boolean SipStack_setSTUNEnabled(long jarg1, SipStack jarg1_, boolean jarg2);
|
||||
|
|
|
@ -2841,6 +2841,20 @@ SWIGEXPORT jint JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetVideoMotionRank(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
int32_t arg1 ;
|
||||
bool result;
|
||||
|
||||
(void)jenv;
|
||||
(void)jcls;
|
||||
arg1 = (int32_t)jarg1;
|
||||
result = (bool)MediaSessionMgr::defaultsSetVideoMotionRank(arg1);
|
||||
jresult = (jboolean)result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetBandwidthVideoUploadMax(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
int32_t arg1 ;
|
||||
|
@ -2855,6 +2869,20 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionM
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetBandwidthVideoDownloadMax(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
int32_t arg1 ;
|
||||
bool result;
|
||||
|
||||
(void)jenv;
|
||||
(void)jcls;
|
||||
arg1 = (int32_t)jarg1;
|
||||
result = (bool)MediaSessionMgr::defaultsSetBandwidthVideoDownloadMax(arg1);
|
||||
jresult = (jboolean)result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetPrefVideoSize(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
tmedia_pref_video_size_t arg1 ;
|
||||
|
@ -10464,6 +10492,23 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1rem
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNEnabledForICE(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) {
|
||||
jboolean jresult = 0 ;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
bool arg2 ;
|
||||
bool result;
|
||||
|
||||
(void)jenv;
|
||||
(void)jcls;
|
||||
(void)jarg1_;
|
||||
arg1 = *(SipStack **)&jarg1;
|
||||
arg2 = jarg2 ? true : false;
|
||||
result = (bool)(arg1)->setSTUNEnabledForICE(arg2);
|
||||
jresult = (jboolean)result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNServer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) {
|
||||
jboolean jresult = 0 ;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
|
|
|
@ -59,7 +59,9 @@ public class tinyWRAPJNI {
|
|||
public final static native int MediaSessionMgr_defaultsGetProfile();
|
||||
public final static native boolean MediaSessionMgr_defaultsSetBandwidthLevel(int jarg1);
|
||||
public final static native int MediaSessionMgr_defaultsGetBandwidthLevel();
|
||||
public final static native boolean MediaSessionMgr_defaultsSetVideoMotionRank(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetPrefVideoSize(int jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetJbMargin(long jarg1);
|
||||
public final static native boolean MediaSessionMgr_defaultsSetJbMaxLateRate(long jarg1);
|
||||
|
@ -506,6 +508,7 @@ public class tinyWRAPJNI {
|
|||
public final static native boolean SipStack_setSigCompParams(long jarg1, SipStack jarg1_, long jarg2, long jarg3, long jarg4, boolean jarg5);
|
||||
public final static native boolean SipStack_addSigCompCompartment(long jarg1, SipStack jarg1_, String jarg2);
|
||||
public final static native boolean SipStack_removeSigCompCompartment(long jarg1, SipStack jarg1_, String jarg2);
|
||||
public final static native boolean SipStack_setSTUNEnabledForICE(long jarg1, SipStack jarg1_, boolean jarg2);
|
||||
public final static native boolean SipStack_setSTUNServer(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
||||
public final static native boolean SipStack_setSTUNCred(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
|
||||
public final static native boolean SipStack_setSTUNEnabled(long jarg1, SipStack jarg1_, boolean jarg2);
|
||||
|
|
|
@ -2841,6 +2841,20 @@ SWIGEXPORT jint JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetVideoMotionRank(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
int32_t arg1 ;
|
||||
bool result;
|
||||
|
||||
(void)jenv;
|
||||
(void)jcls;
|
||||
arg1 = (int32_t)jarg1;
|
||||
result = (bool)MediaSessionMgr::defaultsSetVideoMotionRank(arg1);
|
||||
jresult = (jboolean)result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetBandwidthVideoUploadMax(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
int32_t arg1 ;
|
||||
|
@ -2855,6 +2869,20 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionM
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetBandwidthVideoDownloadMax(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
int32_t arg1 ;
|
||||
bool result;
|
||||
|
||||
(void)jenv;
|
||||
(void)jcls;
|
||||
arg1 = (int32_t)jarg1;
|
||||
result = (bool)MediaSessionMgr::defaultsSetBandwidthVideoDownloadMax(arg1);
|
||||
jresult = (jboolean)result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_MediaSessionMgr_1defaultsSetPrefVideoSize(JNIEnv *jenv, jclass jcls, jint jarg1) {
|
||||
jboolean jresult = 0 ;
|
||||
tmedia_pref_video_size_t arg1 ;
|
||||
|
@ -10464,6 +10492,23 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1rem
|
|||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNEnabledForICE(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) {
|
||||
jboolean jresult = 0 ;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
bool arg2 ;
|
||||
bool result;
|
||||
|
||||
(void)jenv;
|
||||
(void)jcls;
|
||||
(void)jarg1_;
|
||||
arg1 = *(SipStack **)&jarg1;
|
||||
arg2 = jarg2 ? true : false;
|
||||
result = (bool)(arg1)->setSTUNEnabledForICE(arg2);
|
||||
jresult = (jboolean)result;
|
||||
return jresult;
|
||||
}
|
||||
|
||||
|
||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNServer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) {
|
||||
jboolean jresult = 0 ;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
|
|
|
@ -246,7 +246,9 @@ sub DESTROY {
|
|||
*defaultsGetProfile = *tinyWRAPc::MediaSessionMgr_defaultsGetProfile;
|
||||
*defaultsSetBandwidthLevel = *tinyWRAPc::MediaSessionMgr_defaultsSetBandwidthLevel;
|
||||
*defaultsGetBandwidthLevel = *tinyWRAPc::MediaSessionMgr_defaultsGetBandwidthLevel;
|
||||
*defaultsSetVideoMotionRank = *tinyWRAPc::MediaSessionMgr_defaultsSetVideoMotionRank;
|
||||
*defaultsSetBandwidthVideoUploadMax = *tinyWRAPc::MediaSessionMgr_defaultsSetBandwidthVideoUploadMax;
|
||||
*defaultsSetBandwidthVideoDownloadMax = *tinyWRAPc::MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax;
|
||||
*defaultsSetPrefVideoSize = *tinyWRAPc::MediaSessionMgr_defaultsSetPrefVideoSize;
|
||||
*defaultsSetJbMargin = *tinyWRAPc::MediaSessionMgr_defaultsSetJbMargin;
|
||||
*defaultsSetJbMaxLateRate = *tinyWRAPc::MediaSessionMgr_defaultsSetJbMaxLateRate;
|
||||
|
@ -1957,6 +1959,7 @@ sub DESTROY {
|
|||
*setSigCompParams = *tinyWRAPc::SipStack_setSigCompParams;
|
||||
*addSigCompCompartment = *tinyWRAPc::SipStack_addSigCompCompartment;
|
||||
*removeSigCompCompartment = *tinyWRAPc::SipStack_removeSigCompCompartment;
|
||||
*setSTUNEnabledForICE = *tinyWRAPc::SipStack_setSTUNEnabledForICE;
|
||||
*setSTUNServer = *tinyWRAPc::SipStack_setSTUNServer;
|
||||
*setSTUNCred = *tinyWRAPc::SipStack_setSTUNCred;
|
||||
*setSTUNEnabled = *tinyWRAPc::SipStack_setSTUNEnabled;
|
||||
|
|
|
@ -3976,6 +3976,34 @@ XS(_wrap_MediaSessionMgr_defaultsGetBandwidthLevel) {
|
|||
}
|
||||
|
||||
|
||||
XS(_wrap_MediaSessionMgr_defaultsSetVideoMotionRank) {
|
||||
{
|
||||
int32_t arg1 ;
|
||||
int val1 ;
|
||||
int ecode1 = 0 ;
|
||||
int argvi = 0;
|
||||
bool result;
|
||||
dXSARGS;
|
||||
|
||||
if ((items < 1) || (items > 1)) {
|
||||
SWIG_croak("Usage: MediaSessionMgr_defaultsSetVideoMotionRank(video_motion_rank);");
|
||||
}
|
||||
ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
|
||||
if (!SWIG_IsOK(ecode1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "MediaSessionMgr_defaultsSetVideoMotionRank" "', argument " "1"" of type '" "int32_t""'");
|
||||
}
|
||||
arg1 = static_cast< int32_t >(val1);
|
||||
result = (bool)MediaSessionMgr::defaultsSetVideoMotionRank(arg1);
|
||||
ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ;
|
||||
|
||||
XSRETURN(argvi);
|
||||
fail:
|
||||
|
||||
SWIG_croak_null();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
XS(_wrap_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax) {
|
||||
{
|
||||
int32_t arg1 ;
|
||||
|
@ -4004,6 +4032,34 @@ XS(_wrap_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax) {
|
|||
}
|
||||
|
||||
|
||||
XS(_wrap_MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax) {
|
||||
{
|
||||
int32_t arg1 ;
|
||||
int val1 ;
|
||||
int ecode1 = 0 ;
|
||||
int argvi = 0;
|
||||
bool result;
|
||||
dXSARGS;
|
||||
|
||||
if ((items < 1) || (items > 1)) {
|
||||
SWIG_croak("Usage: MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(bw_video_down_max_kbps);");
|
||||
}
|
||||
ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
|
||||
if (!SWIG_IsOK(ecode1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax" "', argument " "1"" of type '" "int32_t""'");
|
||||
}
|
||||
arg1 = static_cast< int32_t >(val1);
|
||||
result = (bool)MediaSessionMgr::defaultsSetBandwidthVideoDownloadMax(arg1);
|
||||
ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ;
|
||||
|
||||
XSRETURN(argvi);
|
||||
fail:
|
||||
|
||||
SWIG_croak_null();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
XS(_wrap_MediaSessionMgr_defaultsSetPrefVideoSize) {
|
||||
{
|
||||
tmedia_pref_video_size_t arg1 ;
|
||||
|
@ -21987,6 +22043,44 @@ XS(_wrap_SipStack_removeSigCompCompartment) {
|
|||
}
|
||||
|
||||
|
||||
XS(_wrap_SipStack_setSTUNEnabledForICE) {
|
||||
{
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
bool arg2 ;
|
||||
void *argp1 = 0 ;
|
||||
int res1 = 0 ;
|
||||
bool val2 ;
|
||||
int ecode2 = 0 ;
|
||||
int argvi = 0;
|
||||
bool result;
|
||||
dXSARGS;
|
||||
|
||||
if ((items < 2) || (items > 2)) {
|
||||
SWIG_croak("Usage: SipStack_setSTUNEnabledForICE(self,enabled);");
|
||||
}
|
||||
res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SipStack, 0 | 0 );
|
||||
if (!SWIG_IsOK(res1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SipStack_setSTUNEnabledForICE" "', argument " "1"" of type '" "SipStack *""'");
|
||||
}
|
||||
arg1 = reinterpret_cast< SipStack * >(argp1);
|
||||
ecode2 = SWIG_AsVal_bool SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
|
||||
if (!SWIG_IsOK(ecode2)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SipStack_setSTUNEnabledForICE" "', argument " "2"" of type '" "bool""'");
|
||||
}
|
||||
arg2 = static_cast< bool >(val2);
|
||||
result = (bool)(arg1)->setSTUNEnabledForICE(arg2);
|
||||
ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ;
|
||||
|
||||
|
||||
XSRETURN(argvi);
|
||||
fail:
|
||||
|
||||
|
||||
SWIG_croak_null();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
XS(_wrap_SipStack_setSTUNServer) {
|
||||
{
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
|
@ -22099,7 +22193,7 @@ XS(_wrap_SipStack_setSTUNEnabled) {
|
|||
dXSARGS;
|
||||
|
||||
if ((items < 2) || (items > 2)) {
|
||||
SWIG_croak("Usage: SipStack_setSTUNEnabled(self,bEnabled);");
|
||||
SWIG_croak("Usage: SipStack_setSTUNEnabled(self,enabled);");
|
||||
}
|
||||
res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SipStack, 0 | 0 );
|
||||
if (!SWIG_IsOK(res1)) {
|
||||
|
@ -27260,7 +27354,9 @@ static swig_command_info swig_commands[] = {
|
|||
{"tinyWRAPc::MediaSessionMgr_defaultsGetProfile", _wrap_MediaSessionMgr_defaultsGetProfile},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetBandwidthLevel", _wrap_MediaSessionMgr_defaultsSetBandwidthLevel},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsGetBandwidthLevel", _wrap_MediaSessionMgr_defaultsGetBandwidthLevel},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetVideoMotionRank", _wrap_MediaSessionMgr_defaultsSetVideoMotionRank},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetBandwidthVideoUploadMax", _wrap_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax", _wrap_MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetPrefVideoSize", _wrap_MediaSessionMgr_defaultsSetPrefVideoSize},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetJbMargin", _wrap_MediaSessionMgr_defaultsSetJbMargin},
|
||||
{"tinyWRAPc::MediaSessionMgr_defaultsSetJbMaxLateRate", _wrap_MediaSessionMgr_defaultsSetJbMaxLateRate},
|
||||
|
@ -27601,6 +27697,7 @@ static swig_command_info swig_commands[] = {
|
|||
{"tinyWRAPc::SipStack_setSigCompParams", _wrap_SipStack_setSigCompParams},
|
||||
{"tinyWRAPc::SipStack_addSigCompCompartment", _wrap_SipStack_addSigCompCompartment},
|
||||
{"tinyWRAPc::SipStack_removeSigCompCompartment", _wrap_SipStack_removeSigCompCompartment},
|
||||
{"tinyWRAPc::SipStack_setSTUNEnabledForICE", _wrap_SipStack_setSTUNEnabledForICE},
|
||||
{"tinyWRAPc::SipStack_setSTUNServer", _wrap_SipStack_setSTUNServer},
|
||||
{"tinyWRAPc::SipStack_setSTUNCred", _wrap_SipStack_setSTUNCred},
|
||||
{"tinyWRAPc::SipStack_setSTUNEnabled", _wrap_SipStack_setSTUNEnabled},
|
||||
|
|
|
@ -199,8 +199,12 @@ class MediaSessionMgr(_object):
|
|||
if _newclass:defaultsSetBandwidthLevel = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetBandwidthLevel)
|
||||
__swig_getmethods__["defaultsGetBandwidthLevel"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsGetBandwidthLevel
|
||||
if _newclass:defaultsGetBandwidthLevel = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsGetBandwidthLevel)
|
||||
__swig_getmethods__["defaultsSetVideoMotionRank"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetVideoMotionRank
|
||||
if _newclass:defaultsSetVideoMotionRank = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetVideoMotionRank)
|
||||
__swig_getmethods__["defaultsSetBandwidthVideoUploadMax"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax
|
||||
if _newclass:defaultsSetBandwidthVideoUploadMax = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax)
|
||||
__swig_getmethods__["defaultsSetBandwidthVideoDownloadMax"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax
|
||||
if _newclass:defaultsSetBandwidthVideoDownloadMax = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax)
|
||||
__swig_getmethods__["defaultsSetPrefVideoSize"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetPrefVideoSize
|
||||
if _newclass:defaultsSetPrefVideoSize = staticmethod(_tinyWRAP.MediaSessionMgr_defaultsSetPrefVideoSize)
|
||||
__swig_getmethods__["defaultsSetJbMargin"] = lambda x: _tinyWRAP.MediaSessionMgr_defaultsSetJbMargin
|
||||
|
@ -330,10 +334,18 @@ def MediaSessionMgr_defaultsGetBandwidthLevel():
|
|||
return _tinyWRAP.MediaSessionMgr_defaultsGetBandwidthLevel()
|
||||
MediaSessionMgr_defaultsGetBandwidthLevel = _tinyWRAP.MediaSessionMgr_defaultsGetBandwidthLevel
|
||||
|
||||
def MediaSessionMgr_defaultsSetVideoMotionRank(*args):
|
||||
return _tinyWRAP.MediaSessionMgr_defaultsSetVideoMotionRank(*args)
|
||||
MediaSessionMgr_defaultsSetVideoMotionRank = _tinyWRAP.MediaSessionMgr_defaultsSetVideoMotionRank
|
||||
|
||||
def MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(*args):
|
||||
return _tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(*args)
|
||||
MediaSessionMgr_defaultsSetBandwidthVideoUploadMax = _tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoUploadMax
|
||||
|
||||
def MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(*args):
|
||||
return _tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(*args)
|
||||
MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax = _tinyWRAP.MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax
|
||||
|
||||
def MediaSessionMgr_defaultsSetPrefVideoSize(*args):
|
||||
return _tinyWRAP.MediaSessionMgr_defaultsSetPrefVideoSize(*args)
|
||||
MediaSessionMgr_defaultsSetPrefVideoSize = _tinyWRAP.MediaSessionMgr_defaultsSetPrefVideoSize
|
||||
|
@ -1494,6 +1506,7 @@ class SipStack(SafeObject):
|
|||
def setSigCompParams(self, *args): return _tinyWRAP.SipStack_setSigCompParams(self, *args)
|
||||
def addSigCompCompartment(self, *args): return _tinyWRAP.SipStack_addSigCompCompartment(self, *args)
|
||||
def removeSigCompCompartment(self, *args): return _tinyWRAP.SipStack_removeSigCompCompartment(self, *args)
|
||||
def setSTUNEnabledForICE(self, *args): return _tinyWRAP.SipStack_setSTUNEnabledForICE(self, *args)
|
||||
def setSTUNServer(self, *args): return _tinyWRAP.SipStack_setSTUNServer(self, *args)
|
||||
def setSTUNCred(self, *args): return _tinyWRAP.SipStack_setSTUNCred(self, *args)
|
||||
def setSTUNEnabled(self, *args): return _tinyWRAP.SipStack_setSTUNEnabled(self, *args)
|
||||
|
|
|
@ -6993,6 +6993,28 @@ fail:
|
|||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_MediaSessionMgr_defaultsSetVideoMotionRank(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
|
||||
PyObject *resultobj = 0;
|
||||
int32_t arg1 ;
|
||||
int val1 ;
|
||||
int ecode1 = 0 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
bool result;
|
||||
|
||||
if (!PyArg_ParseTuple(args,(char *)"O:MediaSessionMgr_defaultsSetVideoMotionRank",&obj0)) SWIG_fail;
|
||||
ecode1 = SWIG_AsVal_int(obj0, &val1);
|
||||
if (!SWIG_IsOK(ecode1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "MediaSessionMgr_defaultsSetVideoMotionRank" "', argument " "1"" of type '" "int32_t""'");
|
||||
}
|
||||
arg1 = static_cast< int32_t >(val1);
|
||||
result = (bool)MediaSessionMgr::defaultsSetVideoMotionRank(arg1);
|
||||
resultobj = SWIG_From_bool(static_cast< bool >(result));
|
||||
return resultobj;
|
||||
fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
|
||||
PyObject *resultobj = 0;
|
||||
int32_t arg1 ;
|
||||
|
@ -7015,6 +7037,28 @@ fail:
|
|||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
|
||||
PyObject *resultobj = 0;
|
||||
int32_t arg1 ;
|
||||
int val1 ;
|
||||
int ecode1 = 0 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
bool result;
|
||||
|
||||
if (!PyArg_ParseTuple(args,(char *)"O:MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax",&obj0)) SWIG_fail;
|
||||
ecode1 = SWIG_AsVal_int(obj0, &val1);
|
||||
if (!SWIG_IsOK(ecode1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax" "', argument " "1"" of type '" "int32_t""'");
|
||||
}
|
||||
arg1 = static_cast< int32_t >(val1);
|
||||
result = (bool)MediaSessionMgr::defaultsSetBandwidthVideoDownloadMax(arg1);
|
||||
resultobj = SWIG_From_bool(static_cast< bool >(result));
|
||||
return resultobj;
|
||||
fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_MediaSessionMgr_defaultsSetPrefVideoSize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
|
||||
PyObject *resultobj = 0;
|
||||
tmedia_pref_video_size_t arg1 ;
|
||||
|
@ -21556,6 +21600,37 @@ fail:
|
|||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_SipStack_setSTUNEnabledForICE(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
|
||||
PyObject *resultobj = 0;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
bool arg2 ;
|
||||
void *argp1 = 0 ;
|
||||
int res1 = 0 ;
|
||||
bool val2 ;
|
||||
int ecode2 = 0 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
PyObject * obj1 = 0 ;
|
||||
bool result;
|
||||
|
||||
if (!PyArg_ParseTuple(args,(char *)"OO:SipStack_setSTUNEnabledForICE",&obj0,&obj1)) SWIG_fail;
|
||||
res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SipStack, 0 | 0 );
|
||||
if (!SWIG_IsOK(res1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SipStack_setSTUNEnabledForICE" "', argument " "1"" of type '" "SipStack *""'");
|
||||
}
|
||||
arg1 = reinterpret_cast< SipStack * >(argp1);
|
||||
ecode2 = SWIG_AsVal_bool(obj1, &val2);
|
||||
if (!SWIG_IsOK(ecode2)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SipStack_setSTUNEnabledForICE" "', argument " "2"" of type '" "bool""'");
|
||||
}
|
||||
arg2 = static_cast< bool >(val2);
|
||||
result = (bool)(arg1)->setSTUNEnabledForICE(arg2);
|
||||
resultobj = SWIG_From_bool(static_cast< bool >(result));
|
||||
return resultobj;
|
||||
fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_SipStack_setSTUNServer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
|
||||
PyObject *resultobj = 0;
|
||||
SipStack *arg1 = (SipStack *) 0 ;
|
||||
|
@ -25717,7 +25792,9 @@ static PyMethodDef SwigMethods[] = {
|
|||
{ (char *)"MediaSessionMgr_defaultsGetProfile", _wrap_MediaSessionMgr_defaultsGetProfile, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetBandwidthLevel", _wrap_MediaSessionMgr_defaultsSetBandwidthLevel, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsGetBandwidthLevel", _wrap_MediaSessionMgr_defaultsGetBandwidthLevel, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetVideoMotionRank", _wrap_MediaSessionMgr_defaultsSetVideoMotionRank, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetBandwidthVideoUploadMax", _wrap_MediaSessionMgr_defaultsSetBandwidthVideoUploadMax, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax", _wrap_MediaSessionMgr_defaultsSetBandwidthVideoDownloadMax, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetPrefVideoSize", _wrap_MediaSessionMgr_defaultsSetPrefVideoSize, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetJbMargin", _wrap_MediaSessionMgr_defaultsSetJbMargin, METH_VARARGS, NULL},
|
||||
{ (char *)"MediaSessionMgr_defaultsSetJbMaxLateRate", _wrap_MediaSessionMgr_defaultsSetJbMaxLateRate, METH_VARARGS, NULL},
|
||||
|
@ -26107,6 +26184,7 @@ static PyMethodDef SwigMethods[] = {
|
|||
{ (char *)"SipStack_setSigCompParams", _wrap_SipStack_setSigCompParams, METH_VARARGS, NULL},
|
||||
{ (char *)"SipStack_addSigCompCompartment", _wrap_SipStack_addSigCompCompartment, METH_VARARGS, NULL},
|
||||
{ (char *)"SipStack_removeSigCompCompartment", _wrap_SipStack_removeSigCompCompartment, METH_VARARGS, NULL},
|
||||
{ (char *)"SipStack_setSTUNEnabledForICE", _wrap_SipStack_setSTUNEnabledForICE, METH_VARARGS, NULL},
|
||||
{ (char *)"SipStack_setSTUNServer", _wrap_SipStack_setSTUNServer, METH_VARARGS, NULL},
|
||||
{ (char *)"SipStack_setSTUNCred", _wrap_SipStack_setSTUNCred, METH_VARARGS, NULL},
|
||||
{ (char *)"SipStack_setSTUNEnabled", _wrap_SipStack_setSTUNEnabled, METH_VARARGS, NULL},
|
||||
|
|
|
@ -57,6 +57,9 @@ typedef struct tdav_session_av_s
|
|||
tmedia_srtp_type_t srtp_type;
|
||||
tmedia_srtp_mode_t srtp_mode;
|
||||
|
||||
int32_t bandwidth_max_upload;
|
||||
int32_t bandwidth_max_download;
|
||||
|
||||
/* sdp capabilities (RFC 5939) */
|
||||
struct tdav_sdp_caps_s* sdp_caps;
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ static void tdav_codec_vp8_rtp_callback(tdav_codec_vp8_t *self, const void *data
|
|||
static int tdav_codec_vp8_set(tmedia_codec_t* self, const tmedia_param_t* param)
|
||||
{
|
||||
tdav_codec_vp8_t* vp8 = (tdav_codec_vp8_t*)self;
|
||||
vpx_codec_err_t vpx_ret;
|
||||
vpx_codec_err_t vpx_ret = VPX_CODEC_OK;
|
||||
|
||||
if(!vp8->encoder.initialized){
|
||||
TSK_DEBUG_ERROR("Codec not initialized");
|
||||
|
@ -138,14 +138,14 @@ static int tdav_codec_vp8_set(tmedia_codec_t* self, const tmedia_param_t* param)
|
|||
}
|
||||
case tmedia_codec_action_bw_down:
|
||||
{
|
||||
vp8->encoder.cfg.rc_target_bitrate = ((vp8->encoder.cfg.rc_target_bitrate << 1) / 3);
|
||||
vp8->encoder.cfg.rc_target_bitrate = TSK_CLAMP(0, (int32_t)((vp8->encoder.cfg.rc_target_bitrate << 1) / 3), TMEDIA_CODEC(vp8)->bandwidth_max_upload);
|
||||
TSK_DEBUG_INFO("New target bitrate = %d kbps", vp8->encoder.cfg.rc_target_bitrate);
|
||||
reconf = tsk_true;
|
||||
break;
|
||||
}
|
||||
case tmedia_codec_action_bw_up:
|
||||
{
|
||||
vp8->encoder.cfg.rc_target_bitrate = ((vp8->encoder.cfg.rc_target_bitrate * 3) >> 1);
|
||||
vp8->encoder.cfg.rc_target_bitrate = TSK_CLAMP(0, (int32_t)((vp8->encoder.cfg.rc_target_bitrate * 3) >> 1), TMEDIA_CODEC(vp8)->bandwidth_max_upload);
|
||||
TSK_DEBUG_INFO("New target bitrate = %d kbps", vp8->encoder.cfg.rc_target_bitrate);
|
||||
reconf = tsk_true;
|
||||
break;
|
||||
|
@ -157,10 +157,17 @@ static int tdav_codec_vp8_set(tmedia_codec_t* self, const tmedia_param_t* param)
|
|||
TSK_DEBUG_ERROR("vpx_codec_enc_config_set failed with error =%s", vpx_codec_err_to_string(vpx_ret));
|
||||
}
|
||||
}
|
||||
return (vpx_ret == VPX_CODEC_OK) ? 0 : -2;
|
||||
}
|
||||
else if(tsk_striequals(param->key, "bandwidth-max-upload")){
|
||||
int32_t bw_max_upload = *((int32_t*)param->value);
|
||||
TSK_DEBUG_INFO("VP8 codec: bandwidth-max-upload=%d", bw_max_upload);
|
||||
TMEDIA_CODEC(vp8)->bandwidth_max_upload = bw_max_upload;
|
||||
return 0;
|
||||
}
|
||||
else if(tsk_striequals(param->key, "rotation")){
|
||||
// IMPORTANT: changing resolution requires at least libvpx v1.1.0 "Eider"
|
||||
int rotation = *((int32_t*)param->value);
|
||||
int32_t rotation = *((int32_t*)param->value);
|
||||
if(vp8->encoder.rotation != rotation){
|
||||
vp8->encoder.rotation = rotation;
|
||||
if(vp8->encoder.initialized){
|
||||
|
@ -665,7 +672,11 @@ int tdav_codec_vp8_open_encoder(tdav_codec_vp8_t* self)
|
|||
}
|
||||
self->encoder.cfg.g_timebase.num = 1;
|
||||
self->encoder.cfg.g_timebase.den = TMEDIA_CODEC_VIDEO(self)->out.fps;
|
||||
self->encoder.cfg.rc_target_bitrate = self->encoder.target_bitrate = TSK_CLAMP(0, (int32_t)(TMEDIA_CODEC_VIDEO(self)->out.width * TMEDIA_CODEC_VIDEO(self)->out.height * 256 / 352 / 288), self->encoder.max_bw_kpbs);
|
||||
self->encoder.cfg.rc_target_bitrate = self->encoder.target_bitrate = TSK_CLAMP(
|
||||
0,
|
||||
tmedia_get_video_bandwidth_kbps_2(TMEDIA_CODEC_VIDEO(self)->out.width, TMEDIA_CODEC_VIDEO(self)->out.height, TMEDIA_CODEC_VIDEO(self)->out.fps),
|
||||
self->encoder.max_bw_kpbs
|
||||
);
|
||||
self->encoder.cfg.g_w = (self->encoder.rotation == 90 || self->encoder.rotation == 270) ? TMEDIA_CODEC_VIDEO(self)->out.height : TMEDIA_CODEC_VIDEO(self)->out.width;
|
||||
self->encoder.cfg.g_h = (self->encoder.rotation == 90 || self->encoder.rotation == 270) ? TMEDIA_CODEC_VIDEO(self)->out.width : TMEDIA_CODEC_VIDEO(self)->out.height;
|
||||
self->encoder.cfg.kf_mode = VPX_KF_AUTO;
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "tls/tnet_dtls.h"
|
||||
|
||||
#include <math.h> /* log10 */
|
||||
#include <limits.h> /* INT_MAX */
|
||||
|
||||
|
||||
#if HAVE_SRTP
|
||||
|
@ -211,6 +212,8 @@ int tdav_session_av_init(tdav_session_av_t* self, tmedia_type_t media_type)
|
|||
self->use_rtcp = tmedia_defaults_get_rtcp_enabled();
|
||||
self->use_rtcpmux = tmedia_defaults_get_rtcpmux_enabled();
|
||||
self->use_avpf = (profile == tmedia_profile_rtcweb); // negotiate if not RTCWeb profile or RFC5939 is in action
|
||||
self->bandwidth_max_upload = (media_type == tmedia_video ? tmedia_defaults_get_bandwidth_video_upload_max() : INT_MAX); // INT_MAX or <=0 means undefined
|
||||
self->bandwidth_max_download = (media_type == tmedia_video ? tmedia_defaults_get_bandwidth_video_download_max() : INT_MAX); // INT_MAX or <=0 means undefined
|
||||
#if HAVE_SRTP
|
||||
// this is the default value and can be updated by the user using "session_set('srtp-mode', mode_e)"
|
||||
self->srtp_type = (profile == tmedia_profile_rtcweb) ? tmedia_srtp_type_sdes : tmedia_defaults_get_srtp_type();
|
||||
|
@ -500,10 +503,11 @@ int tdav_session_av_start(tdav_session_av_t* self, const tmedia_codec_t* best_co
|
|||
ret = trtp_manager_set_dtls_callback(self->rtp_manager, self, _tdav_session_av_srtp_dtls_cb);
|
||||
#endif /* HAVE_SRTP */
|
||||
|
||||
// these information will be updated when the RTP manager starts if ICE is enabled
|
||||
// network information will be updated when the RTP manager starts if ICE is enabled
|
||||
ret = trtp_manager_set_rtp_remote(self->rtp_manager, self->remote_ip, self->remote_port);
|
||||
ret = trtp_manager_set_payload_type(self->rtp_manager, best_codec->neg_format ? atoi(best_codec->neg_format) : atoi(best_codec->format));
|
||||
self->rtp_manager->use_rtcpmux = self->use_rtcpmux;
|
||||
ret = trtp_manager_set_payload_type(self->rtp_manager, best_codec->neg_format ? atoi(best_codec->neg_format) : atoi(best_codec->format));
|
||||
ret = trtp_manager_set_app_bandwidth_max(self->rtp_manager, self->bandwidth_max_upload, self->bandwidth_max_download);
|
||||
ret = trtp_manager_start(self->rtp_manager);
|
||||
|
||||
// because of AudioUnit under iOS => prepare both consumer and producer then start() at the same time
|
||||
|
@ -707,6 +711,12 @@ const tsdp_header_M_t* tdav_session_av_get_lo(tdav_session_av_t* self, tsk_bool_
|
|||
TSDP_HEADER_A_VA_ARGS("rtcp-fb", "* nack pli"),
|
||||
TSDP_HEADER_A_VA_ARGS("rtcp-fb", "* ccm fir"),
|
||||
tsk_null);
|
||||
// http://tools.ietf.org/html/rfc3556
|
||||
if(self->bandwidth_max_download > 0 && self->bandwidth_max_download != INT_MAX){ // INT_MAX or <=0 means undefined
|
||||
tsdp_header_M_add_headers(base->M.lo,
|
||||
TSDP_HEADER_B_VA_ARGS("AS", self->bandwidth_max_download),
|
||||
tsk_null);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -570,7 +570,9 @@ static int tdav_session_video_rtcp_cb(const void* callback_data, const trtp_rtcp
|
|||
case trtp_rtcp_psfb_fci_type_afb:
|
||||
{
|
||||
if(psfb->afb.type == trtp_rtcp_psfb_afb_type_remb){
|
||||
TSK_DEBUG_INFO("Receiving RTCP-AFB-REMB (%u), exp=%u, mantissa=%u", ((const trtp_rtcp_report_fb_t*)psfb)->ssrc_media, psfb->afb.remb.exp, psfb->afb.remb.mantissa);
|
||||
uint32_t bandwidth = ((psfb->afb.remb.mantissa << psfb->afb.remb.exp) / 1024);
|
||||
TSK_DEBUG_INFO("Receiving RTCP-AFB-REMB (%u), exp=%u, mantissa=%u, bandwidth = %ukbps", ((const trtp_rtcp_report_fb_t*)psfb)->ssrc_media, psfb->afb.remb.exp, psfb->afb.remb.mantissa, bandwidth);
|
||||
// for now we just don't respect the requested bandwidth
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -226,6 +226,10 @@ typedef struct tmedia_codec_s
|
|||
char* format;
|
||||
//! bandwidth level
|
||||
tmedia_bandwidth_level_t bl; // @deprecated
|
||||
//! maximum bandwidth to use for outgoing RTP (INT_MAX or <=0 means undefined)
|
||||
int32_t bandwidth_max_upload;
|
||||
//! maximum bandwidth to use for incoming RTP (INT_MAX or <=0 means undefined)
|
||||
int32_t bandwidth_max_download;
|
||||
//! the negociated format (only useful for codecs with dyn. payload type)
|
||||
char* neg_format;
|
||||
//! whether this is a passthrough codec
|
||||
|
|
|
@ -252,6 +252,8 @@ TINYMEDIA_API int tmedia_parse_video_imageattr(const char* imageattr, tmedia_pre
|
|||
TINYMEDIA_API char* tmedia_get_video_fmtp(tmedia_pref_video_size_t pref_vs);
|
||||
TINYMEDIA_API char* tmedia_get_video_imageattr(tmedia_pref_video_size_t pref_vs, unsigned in_width, unsigned in_height, unsigned out_width, unsigned out_height);
|
||||
TINYMEDIA_API int tmedia_get_video_quality(tmedia_bandwidth_level_t bl);
|
||||
TINYMEDIA_API int32_t tmedia_get_video_bandwidth_kbps(unsigned width, unsigned height, unsigned fps, unsigned motion_rank);
|
||||
TINYMEDIA_API int32_t tmedia_get_video_bandwidth_kbps_2(unsigned width, unsigned height, unsigned fps);
|
||||
#define tmedia_get_video_qscale tmedia_get_video_quality
|
||||
|
||||
TMEDIA_END_DECLS
|
||||
|
|
|
@ -33,8 +33,12 @@ TINYMEDIA_API int tmedia_defaults_set_profile(tmedia_profile_t profile);
|
|||
TINYMEDIA_API tmedia_profile_t tmedia_defaults_get_profile();
|
||||
TINYMEDIA_API int tmedia_defaults_set_bl(tmedia_bandwidth_level_t bl); // @deprecated
|
||||
TINYMEDIA_API tmedia_bandwidth_level_t tmedia_defaults_get_bl(); // @deprecated
|
||||
TINYMEDIA_API int tmedia_defaults_set_video_motion_rank(int32_t video_motion_rank);
|
||||
TINYMEDIA_API int32_t tmedia_defaults_get_video_motion_rank();
|
||||
TINYMEDIA_API int tmedia_defaults_set_bandwidth_video_upload_max(int32_t bw_video_up_max_kbps);
|
||||
TINYMEDIA_API int32_t tmedia_defaults_get_bandwidth_video_upload_max();
|
||||
TINYMEDIA_API int tmedia_defaults_set_bandwidth_video_download_max(int32_t bw_video_down_max_kbps);
|
||||
TINYMEDIA_API int32_t tmedia_defaults_get_bandwidth_video_download_max();
|
||||
TINYMEDIA_API int tmedia_defaults_set_pref_video_size(tmedia_pref_video_size_t pref_video_size);
|
||||
TINYMEDIA_API tmedia_pref_video_size_t tmedia_defaults_get_pref_video_size();
|
||||
TINYMEDIA_API int tmedia_defaults_set_jb_margin(int32_t jb_margin_ms);
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
#include "tsk_memory.h"
|
||||
#include "tsk_debug.h"
|
||||
|
||||
#include <limits.h> /* INT_MAX */
|
||||
|
||||
/**@defgroup tmedia_codec_group Codecs
|
||||
*/
|
||||
|
||||
|
@ -80,6 +82,8 @@ int tmedia_codec_init(tmedia_codec_t* self, tmedia_type_t type, const char* name
|
|||
tsk_strupdate(&self->name, name);
|
||||
tsk_strupdate(&self->desc,desc);
|
||||
tsk_strupdate(&self->format, format);
|
||||
if(!self->bandwidth_max_upload) self->bandwidth_max_upload = (type == tmedia_video ? tmedia_defaults_get_bandwidth_video_upload_max() : INT_MAX); // INT_MAX or <=0 means undefined
|
||||
if(!self->bandwidth_max_download) self->bandwidth_max_download = (type == tmedia_video ? tmedia_defaults_get_bandwidth_video_download_max() : INT_MAX); // INT_MAX or <=0 means undefined
|
||||
if(!self->in.rate) self->in.rate = self->plugin->rate;
|
||||
if(!self->out.rate) self->out.rate = self->plugin->rate;
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
#include "tinymedia/tmedia_session.h"
|
||||
#include "tinymedia/tmedia_imageattr.h"
|
||||
#include "tinymedia/tmedia_defaults.h"
|
||||
|
||||
#include "tsk_params.h"
|
||||
#include "tsk_debug.h"
|
||||
|
@ -313,4 +314,14 @@ int tmedia_get_video_quality(tmedia_bandwidth_level_t bl)
|
|||
case tmedia_bl_hight: return 5;
|
||||
case tmedia_bl_unrestricted: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t tmedia_get_video_bandwidth_kbps(unsigned width, unsigned height, unsigned fps, unsigned motion_rank)
|
||||
{
|
||||
return (int32_t)((width * height * fps * motion_rank * 0.07) / 1024);
|
||||
}
|
||||
|
||||
int32_t tmedia_get_video_bandwidth_kbps_2(unsigned width, unsigned height, unsigned fps)
|
||||
{
|
||||
return tmedia_get_video_bandwidth_kbps(width, height, fps, tmedia_defaults_get_video_motion_rank());
|
||||
}
|
|
@ -30,7 +30,9 @@
|
|||
|
||||
static tmedia_profile_t __profile = tmedia_profile_default;
|
||||
static tmedia_bandwidth_level_t __bl = tmedia_bl_unrestricted;
|
||||
static int32_t __video_motion_rank = 2; // allowed values: 1(low), 2(medium) or 4(high)
|
||||
static int32_t __bw_video_up_max_kbps = INT_MAX; // <= 0: unrestricted, Unit: kbps
|
||||
static int32_t __bw_video_down_max_kbps = INT_MAX; // <= 0: unrestricted, Unit: kbps
|
||||
static tmedia_pref_video_size_t __pref_video_size = tmedia_pref_video_size_cif; // 352 x 288: Android, iOS, WP7
|
||||
static int32_t __jb_margin_ms = -1; // disable
|
||||
static int32_t __jb_max_late_rate_percent = -1; // -1: disable 4: default for speex
|
||||
|
@ -93,6 +95,16 @@ tmedia_bandwidth_level_t tmedia_defaults_get_bl(){
|
|||
return __bl;
|
||||
}
|
||||
|
||||
int tmedia_defaults_set_video_motion_rank(int32_t video_motion_rank){
|
||||
switch(video_motion_rank){
|
||||
case 1/*low*/: case 2/*medium*/: case 4/*high*/: __video_motion_rank = video_motion_rank; return 0;
|
||||
default: TSK_DEBUG_ERROR("%d not valid for video motion rank. Must be 1, 2 or 4", video_motion_rank); return -1;
|
||||
}
|
||||
}
|
||||
int32_t tmedia_defaults_get_video_motion_rank(){
|
||||
return __video_motion_rank;
|
||||
}
|
||||
|
||||
int tmedia_defaults_set_bandwidth_video_upload_max(int32_t bw_video_up_max_kbps){
|
||||
__bw_video_up_max_kbps = bw_video_up_max_kbps > 0 ? bw_video_up_max_kbps : INT_MAX;
|
||||
return 0;
|
||||
|
@ -101,6 +113,14 @@ int32_t tmedia_defaults_get_bandwidth_video_upload_max(){
|
|||
return __bw_video_up_max_kbps;
|
||||
}
|
||||
|
||||
int tmedia_defaults_set_bandwidth_video_download_max(int32_t bw_video_down_max_kbps){
|
||||
__bw_video_down_max_kbps = bw_video_down_max_kbps > 0 ? bw_video_down_max_kbps : INT_MAX;
|
||||
return 0;
|
||||
}
|
||||
int32_t tmedia_defaults_get_bandwidth_video_download_max(){
|
||||
return __bw_video_down_max_kbps;
|
||||
}
|
||||
|
||||
int tmedia_defaults_set_pref_video_size(tmedia_pref_video_size_t pref_video_size){
|
||||
__pref_video_size = pref_video_size;
|
||||
return 0;
|
||||
|
|
|
@ -48,6 +48,7 @@ int trtp_rtcp_session_set_callback(struct trtp_rtcp_session_s* self, trtp_rtcp_c
|
|||
#if HAVE_SRTP
|
||||
int trtp_rtcp_session_set_srtp_sess(struct trtp_rtcp_session_s* self, const srtp_t* session);
|
||||
#endif
|
||||
int trtp_rtcp_session_set_app_bandwidth_max(struct trtp_rtcp_session_s* self, int32_t bw_upload_kbps, int32_t bw_download_kbps);
|
||||
int trtp_rtcp_session_start(struct trtp_rtcp_session_s* self, tnet_fd_t local_fd, const struct sockaddr* remote_addr);
|
||||
int trtp_rtcp_session_stop(struct trtp_rtcp_session_s* self);
|
||||
int trtp_rtcp_session_process_rtp_out(struct trtp_rtcp_session_s* self, const struct trtp_rtp_packet_s* packet_rtp, tsk_size_t size);
|
||||
|
|
|
@ -53,6 +53,8 @@ typedef struct trtp_manager_s
|
|||
tsk_bool_t is_force_symetric_rtp;
|
||||
tsk_bool_t is_symetric_rtp_checked;
|
||||
tsk_bool_t is_symetric_rtcp_checked;
|
||||
int32_t app_bw_max_upload; // application specific (kbps)
|
||||
int32_t app_bw_max_download; // application specific (kbps)
|
||||
|
||||
tnet_transport_t* transport;
|
||||
|
||||
|
@ -200,6 +202,7 @@ TINYRTP_API int trtp_manager_start(trtp_manager_t* self);
|
|||
TINYRTP_API tsk_size_t 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 tsk_size_t trtp_manager_send_rtp_packet(trtp_manager_t* self, const struct trtp_rtp_packet_s* packet, tsk_bool_t bypass_encrypt);
|
||||
TINYRTP_API tsk_size_t trtp_manager_send_rtp_raw(trtp_manager_t* self, const void* data, tsk_size_t size);
|
||||
TINYRTP_API int trtp_manager_set_app_bandwidth_max(trtp_manager_t* self, int32_t bw_upload_kbps, int32_t bw_download_kbps);
|
||||
TINYRTP_API int trtp_manager_signal_pkt_loss(trtp_manager_t* self, uint32_t ssrc_media, const uint16_t* seq_nums, tsk_size_t count);
|
||||
TINYRTP_API int trtp_manager_signal_frame_corrupted(trtp_manager_t* self, uint32_t ssrc_media);
|
||||
TINYRTP_API int trtp_manager_signal_jb_error(trtp_manager_t* self, uint32_t ssrc_media);
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h> /* INT_MAX */
|
||||
|
||||
#ifdef _MSC_VER
|
||||
static double drand48() { return (((double)rand()) / RAND_MAX); }
|
||||
|
@ -269,6 +270,9 @@ typedef struct trtp_rtcp_session_s
|
|||
const void* callback_data;
|
||||
trtp_rtcp_cb_f callback;
|
||||
|
||||
int32_t app_bw_max_upload; // application specific (kbps)
|
||||
int32_t app_bw_max_download; // application specific (kbps)
|
||||
|
||||
struct{
|
||||
tsk_timer_manager_handle_t* handle_global;
|
||||
tsk_timer_id_t id_report;
|
||||
|
@ -325,6 +329,8 @@ static tsk_object_t* trtp_rtcp_session_ctor(tsk_object_t * self, va_list * app)
|
|||
{
|
||||
trtp_rtcp_session_t *session = self;
|
||||
if(session){
|
||||
session->app_bw_max_upload = INT_MAX; // INT_MAX or <=0 means undefined
|
||||
session->app_bw_max_download = INT_MAX; // INT_MAX or <=0 means undefined
|
||||
session->sources = tsk_list_create();
|
||||
session->timer.id_report = TSK_INVALID_TIMER_ID;
|
||||
session->timer.id_bye = TSK_INVALID_TIMER_ID;
|
||||
|
@ -432,6 +438,17 @@ int trtp_rtcp_session_set_srtp_sess(trtp_rtcp_session_t* self, const srtp_t* ses
|
|||
}
|
||||
#endif
|
||||
|
||||
int trtp_rtcp_session_set_app_bandwidth_max(trtp_rtcp_session_t* self, int32_t bw_upload_kbps, int32_t bw_download_kbps)
|
||||
{
|
||||
if(!self){
|
||||
TSK_DEBUG_ERROR("Invalid parameter");
|
||||
return -1;
|
||||
}
|
||||
self->app_bw_max_upload = bw_upload_kbps;
|
||||
self->app_bw_max_download = bw_download_kbps;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int trtp_rtcp_session_start(trtp_rtcp_session_t* self, tnet_fd_t local_fd, const struct sockaddr * remote_addr)
|
||||
{
|
||||
int ret;
|
||||
|
@ -1167,32 +1184,15 @@ static tsk_size_t SendRTCPReport(trtp_rtcp_session_t* session, event_ e)
|
|||
}
|
||||
}
|
||||
|
||||
// RFC 4885 - 3.1. Compound RTCP Feedback Packets
|
||||
// The FB message(s) MUST be placed in the compound packet after RR and
|
||||
// SDES RTCP packets defined in [1]. The ordering with respect to other
|
||||
// RTCP extensions is not defined.
|
||||
// RFC 5104 Full Intra Request (FIR)
|
||||
if(packet_lost){
|
||||
#if 0 // Will be managed by the jitter buffer
|
||||
trtp_rtcp_report_psfb_t* psfb_fir = trtp_rtcp_report_psfb_create_fir(session->fir_seqnr++, session->source_local->ssrc, source->ssrc);
|
||||
if(psfb_fir){
|
||||
trtp_rtcp_packet_add_packet((trtp_rtcp_packet_t*)sr, (trtp_rtcp_packet_t*)psfb_fir, tsk_false);
|
||||
TSK_OBJECT_SAFE_FREE(psfb_fir);
|
||||
}
|
||||
TSK_DEBUG_INFO("RTCP Packet Lost (Sending FIR)");
|
||||
#endif
|
||||
}
|
||||
|
||||
#if 0
|
||||
// draft-alvestrand-rmcat-remb-02
|
||||
{
|
||||
trtp_rtcp_report_psfb_t* psfb_afb_remb = trtp_rtcp_report_psfb_create_afb_remb(session->source_local->ssrc, source->ssrc, 150000);
|
||||
if(session->app_bw_max_download > 0 && session->app_bw_max_download != INT_MAX){ // INT_MAX or <=0 means undefined
|
||||
// app_bw_max_download unit is kbps while create_afb_remb() expect bps
|
||||
trtp_rtcp_report_psfb_t* psfb_afb_remb = trtp_rtcp_report_psfb_create_afb_remb(session->source_local->ssrc, source->ssrc, (session->app_bw_max_download * 1024));
|
||||
if(psfb_afb_remb){
|
||||
trtp_rtcp_packet_add_packet((trtp_rtcp_packet_t*)sr, (trtp_rtcp_packet_t*)psfb_afb_remb, tsk_false);
|
||||
TSK_OBJECT_SAFE_FREE(psfb_afb_remb);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// serialize and send the packet
|
||||
ret = _trtp_rtcp_session_send_pkt(session, (trtp_rtcp_packet_t*)sr);
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
#include "tsk_md5.h"
|
||||
#include "tsk_debug.h"
|
||||
|
||||
#include <limits.h> /* INT_MAX */
|
||||
|
||||
#if !defined(TRTP_TRANSPORT_NAME)
|
||||
# define TRTP_TRANSPORT_NAME "RTP/RTCP Manager"
|
||||
#endif
|
||||
|
@ -1285,6 +1287,7 @@ int trtp_manager_start(trtp_manager_t* self)
|
|||
}
|
||||
if(self->rtcp.session){
|
||||
ret = trtp_rtcp_session_set_callback(self->rtcp.session, self->rtcp.cb.fun, self->rtcp.cb.usrdata);
|
||||
ret = trtp_rtcp_session_set_app_bandwidth_max(self->rtcp.session, self->app_bw_max_upload, self->app_bw_max_download);
|
||||
if((ret = trtp_rtcp_session_start(self->rtcp.session, local_rtcp_fd, (const struct sockaddr *)&self->rtcp.remote_addr))){
|
||||
TSK_DEBUG_ERROR("Failed to start RTCP session");
|
||||
goto bail;
|
||||
|
@ -1464,6 +1467,18 @@ tsk_size_t trtp_manager_send_rtp_raw(trtp_manager_t* self, const void* data, tsk
|
|||
return 0;
|
||||
}
|
||||
|
||||
int trtp_manager_set_app_bandwidth_max(trtp_manager_t* self, int32_t bw_upload_kbps, int32_t bw_download_kbps)
|
||||
{
|
||||
if(self){
|
||||
self->app_bw_max_upload = bw_upload_kbps;
|
||||
self->app_bw_max_download = bw_download_kbps;
|
||||
if(self->rtcp.session){
|
||||
return trtp_rtcp_session_set_app_bandwidth_max(self->rtcp.session, bw_upload_kbps, bw_download_kbps);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
int trtp_manager_signal_pkt_loss(trtp_manager_t* self, uint32_t ssrc_media, const uint16_t* seq_nums, tsk_size_t count)
|
||||
{
|
||||
if(self && self->rtcp.session){
|
||||
|
@ -1551,6 +1566,8 @@ static tsk_object_t* trtp_manager_ctor(tsk_object_t * self, va_list * app)
|
|||
manager->port_range.start = tmedia_defaults_get_rtp_port_range_start();
|
||||
manager->port_range.stop = tmedia_defaults_get_rtp_port_range_stop();
|
||||
manager->is_force_symetric_rtp = tmedia_defaults_get_rtp_symetric_enabled();
|
||||
manager->app_bw_max_upload = INT_MAX; // INT_MAX or <=0 means undefined
|
||||
manager->app_bw_max_download = INT_MAX; // INT_MAX or <=0 means undefined
|
||||
|
||||
/* srtp */
|
||||
#if HAVE_SRTP
|
||||
|
|
Loading…
Reference in New Issue