2015-08-16 23:56:35 +00:00
/*
* Copyright ( C ) 2010 - 2011 Mamadou Diop .
*
* Contact : Mamadou Diop < diopmamadou ( at ) doubango [ dot ] org >
2016-02-23 21:00:35 +00:00
*
2015-08-16 23:56:35 +00:00
* This file is part of Open Source Doubango Framework .
*
* DOUBANGO is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
2016-02-23 21:00:35 +00:00
*
2015-08-16 23:56:35 +00:00
* DOUBANGO is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
2016-02-23 21:00:35 +00:00
*
2015-08-16 23:56:35 +00:00
* You should have received a copy of the GNU General Public License
* along with DOUBANGO .
*
*/
# include "tinymedia/tmedia_defaults.h"
# include "tsk_string.h"
# include "tsk_debug.h"
# include <limits.h> /* INT_MAX */
// /!\ These are global values shared by all sessions and stacks. Could be set (update) per session using "session_set()"
static tmedia_profile_t __profile = tmedia_profile_default ;
static tmedia_bandwidth_level_t __bl = tmedia_bl_unrestricted ;
2016-02-23 21:00:35 +00:00
static tsk_bool_t __congestion_ctrl_enabled = tsk_true ;
2015-08-16 23:56:35 +00:00
static int32_t __video_fps = 15 ; // allowed values: ]0 - 120]
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
2016-02-23 21:00:35 +00:00
static tmedia_pref_video_size_t __pref_video_size = tmedia_pref_video_size_cif ; // 352 x 288: Android, iOS, WP7
static tmedia_pref_video_size_t __pref_video_size_range_min = tmedia_pref_video_size_cif ;
static tmedia_pref_video_size_t __pref_video_size_range_max = tmedia_pref_video_size_cif ;
static tsk_bool_t __pref_video_size_range_enabled = tsk_false ;
2015-08-16 23:56:35 +00:00
static int32_t __jb_margin_ms = - 1 ; // disable
static int32_t __jb_max_late_rate_percent = - 1 ; // -1: disable 4: default for speex
static uint32_t __echo_tail = 100 ;
static uint32_t __echo_skew = 0 ;
static tsk_bool_t __echo_supp_enabled ;
static tsk_bool_t __agc_enabled = tsk_false ;
static float __agc_level = 8000.0f ;
static tsk_bool_t __vad_enabled = tsk_false ;
static tsk_bool_t __noise_supp_enabled = tsk_true ;
static int32_t __noise_supp_level = - 30 ;
2018-09-06 19:08:02 +00:00
static tsk_bool_t __cond_ringing_enabled = tsk_false ; // Whether to let the user decide if sending ringing is needed or not -> If enabled then, the state machine will hang on "PreChecking" state until "accept" request is received from the end-user
2015-08-16 23:56:35 +00:00
static tsk_bool_t __100rel_enabled = tsk_true ;
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 int32_t __audio_channels_playback = 1 ;
static int32_t __audio_channels_record = 1 ;
static int32_t __audio_ptime = 20 ;
static uint16_t __rtp_port_range_start = 1024 ;
static uint16_t __rtp_port_range_stop = 65535 ;
static tsk_bool_t __rtp_symetric_enabled = tsk_false ; // This option is force symetric RTP for remote size. Local: always ON
static tmedia_type_t __media_type = tmedia_audio ;
static int32_t __volume = 100 ;
static char * __producer_friendly_name [ 3 ] = { tsk_null /*audio*/ , tsk_null /*video*/ , tsk_null /*bfcpvideo*/ } ; // pref. camera(index=1) and sound card(index=0) friendly names (e.g. Logitech HD Pro Webcam C920).
static int32_t __inv_session_expires = 0 ; // Session Timers: 0: disabled
static char * __inv_session_refresher = tsk_null ;
static tmedia_srtp_mode_t __srtp_mode = tmedia_srtp_mode_none ;
static tmedia_srtp_type_t __srtp_type = tmedia_srtp_type_sdes ;
static tsk_bool_t __rtcp_enabled = tsk_true ;
static tsk_bool_t __rtcpmux_enabled = tsk_true ;
static tsk_bool_t __ice_enabled = tsk_false ;
static char * __stun_server_ip = tsk_null ; // STUN/TURN server IP address
static uint16_t __stun_server_port = 3478 ; // STUN for SIP headers (Contact, Via...)
static char * __stun_usr_name = tsk_null ; // STUN/TURN credentials
static char * __stun_usr_pwd = tsk_null ; // STUN/TURN credentials
static tsk_bool_t __stun_enabled = tsk_false ; // Whether STUN for SIP headers is enabled
static tsk_bool_t __icestun_enabled = tsk_true ; // Whether STUN for ICE (reflexive candidates) is enabled
static tsk_bool_t __iceturn_enabled = tsk_false ; // Whether TURN for ICE (relay candidates) is enabled
static tsk_bool_t __bypass_encoding_enabled = tsk_false ;
static tsk_bool_t __bypass_decoding_enabled = tsk_false ;
static tsk_bool_t __videojb_enabled = tsk_true ;
static tsk_bool_t __video_zeroartifacts_enabled = tsk_false ; // Requires from remote parties to support AVPF (RTCP-FIR/NACK/PLI)
static tsk_size_t __rtpbuff_size = 0x1FFFE ; // Network buffer size used for RTP (SO_RCVBUF, SO_SNDBUF)
static tsk_size_t __avpf_tail_min = 20 ; // Min size for tail used to honor RTCP-NACK requests
static tsk_size_t __avpf_tail_max = 160 ; // Max size for tail used to honor RTCP-NACK requests
static tmedia_mode_t __avpf_mode = tmedia_mode_optional ; // Whether to use AVPF instead of AVP or negotiate. FIXME
static uint32_t __opus_maxcapturerate = 16000 ; // supported: 8k,12k,16k,24k,48k. IMPORTANT: only 8k and 16k will work with WebRTC AEC
static uint32_t __opus_maxplaybackrate = 48000 ; // supported: 8k,12k,16k,24k,48k
static char * __ssl_certs_priv_path = tsk_null ;
static char * __ssl_certs_pub_path = tsk_null ;
static char * __ssl_certs_ca_path = tsk_null ;
static tsk_bool_t __ssl_certs_verify = tsk_false ;
static tsk_size_t __max_fds = 0 ; // Maximum number of FDs this process is allowed to open. Zero to disable.
static tsk_bool_t __webproxy_auto_detect = tsk_false ;
static char * __webproxy_type = tsk_null ;
static char * __webproxy_host = tsk_null ;
static unsigned short __webproxy_port = 0 ;
static char * __webproxy_login = tsk_null ;
static char * __webproxy_password = tsk_null ;
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_profile ( tmedia_profile_t profile )
{
__profile = profile ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tmedia_profile_t tmedia_defaults_get_profile ( )
{
return __profile ;
2015-08-16 23:56:35 +00:00
}
// @deprecated
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_bl ( tmedia_bandwidth_level_t bl )
{
__bl = bl ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
// @deprecated
2016-02-23 21:00:35 +00:00
tmedia_bandwidth_level_t tmedia_defaults_get_bl ( )
{
return __bl ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_congestion_ctrl_enabled ( tsk_bool_t enabled )
{
__congestion_ctrl_enabled = enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_congestion_ctrl_enabled ( )
{
return __congestion_ctrl_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_video_fps ( int32_t video_fps )
{
if ( video_fps > 0 & & video_fps < = 120 ) {
__video_fps = video_fps ;
return 0 ;
}
TSK_DEBUG_ERROR ( " %d not valid for video fps " , video_fps ) ;
return - 1 ;
}
int32_t tmedia_defaults_get_video_fps ( )
{
return __video_fps ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
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 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
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 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_bandwidth_video_upload_max ( )
{
return __bw_video_up_max_kbps ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
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 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_bandwidth_video_download_max ( )
{
return __bw_video_down_max_kbps ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_pref_video_size ( tmedia_pref_video_size_t pref_video_size )
{
__pref_video_size = pref_video_size ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tmedia_pref_video_size_t tmedia_defaults_get_pref_video_size ( )
{
return __pref_video_size ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_pref_video_size_range ( tmedia_pref_video_size_t min , tmedia_pref_video_size_t max )
{
if ( min < = max ) {
__pref_video_size_range_min = min ;
__pref_video_size_range_max = max ;
return 0 ;
}
return - 1 ;
}
int tmedia_defaults_get_pref_video_size_range ( tmedia_pref_video_size_t * min , tmedia_pref_video_size_t * max )
{
if ( min ) {
* min = __pref_video_size_range_min ;
}
if ( max ) {
* max = __pref_video_size_range_max ;
}
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_adapt_video_size_range_enabled ( tsk_bool_t enabled )
{
__pref_video_size_range_enabled = enabled ;
return 0 ;
}
tsk_bool_t tmedia_defaults_get_adapt_video_size_range_enabled ( )
{
return __pref_video_size_range_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_jb_margin ( int32_t jb_margin_ms )
{
__jb_margin_ms = jb_margin_ms ;
return __jb_margin_ms ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_jb_margin ( )
{
return __jb_margin_ms ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_jb_max_late_rate ( int32_t jb_max_late_rate_percent )
{
__jb_max_late_rate_percent = jb_max_late_rate_percent ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_jb_max_late_rate ( )
{
return __jb_max_late_rate_percent ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_echo_tail ( uint32_t echo_tail )
{
__echo_tail = echo_tail ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_echo_skew ( uint32_t echo_skew )
{
__echo_skew = echo_skew ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
uint32_t tmedia_defaults_get_echo_tail ( )
{
2016-02-23 21:00:35 +00:00
return __echo_tail ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
uint32_t tmedia_defaults_get_echo_skew ( )
{
return __echo_skew ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_echo_supp_enabled ( tsk_bool_t echo_supp_enabled )
{
__echo_supp_enabled = echo_supp_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_echo_supp_enabled ( )
{
return __echo_supp_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_agc_enabled ( tsk_bool_t agc_enabled )
{
__agc_enabled = agc_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_agc_enabled ( )
{
return __agc_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_agc_level ( float agc_level )
{
__agc_level = agc_level ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
float tmedia_defaults_get_agc_level ( )
{
2016-02-23 21:00:35 +00:00
return __agc_level ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_vad_enabled ( tsk_bool_t vad_enabled )
{
__vad_enabled = vad_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_vad_enabled ( )
{
return __vad_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_noise_supp_enabled ( tsk_bool_t noise_supp_enabled )
{
__noise_supp_enabled = noise_supp_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_noise_supp_enabled ( )
{
return __noise_supp_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_noise_supp_level ( int32_t noise_supp_level )
{
__noise_supp_level = noise_supp_level ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_noise_supp_level ( )
{
return __noise_supp_level ;
2015-08-16 23:56:35 +00:00
}
2018-09-06 19:08:02 +00:00
int tmedia_defaults_set_conditional_ringing_enabled ( tsk_bool_t _cond_ringing_enabled )
{
__cond_ringing_enabled = _cond_ringing_enabled ;
return 0 ;
}
tsk_bool_t tmedia_defaults_get_conditional_ringing_enabled ( )
{
return __cond_ringing_enabled ;
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_100rel_enabled ( tsk_bool_t _100rel_enabled )
{
__100rel_enabled = _100rel_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_100rel_enabled ( )
{
return __100rel_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_screen_size ( int32_t sx , int32_t sy )
{
__sx = sx ;
__sy = sy ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_screen_x ( )
{
return __sx ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_screen_y ( )
{
return __sy ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_audio_ptime ( int32_t audio_ptime )
{
if ( audio_ptime > 0 ) {
__audio_ptime = audio_ptime ;
return 0 ;
}
TSK_DEBUG_ERROR ( " Invalid parameter " ) ;
return - 1 ;
}
int32_t tmedia_defaults_get_audio_ptime ( )
{
return __audio_ptime ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_audio_channels ( int32_t channels_playback , int32_t channels_record )
{
if ( channels_playback ! = 1 & & channels_playback ! = 2 ) {
TSK_DEBUG_ERROR ( " Invalid parameter " ) ;
return - 1 ;
}
if ( channels_record ! = 1 & & channels_record ! = 2 ) {
TSK_DEBUG_ERROR ( " Invalid parameter " ) ;
return - 1 ;
}
__audio_channels_playback = channels_playback ;
__audio_channels_record = channels_record ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_audio_channels_playback ( )
{
return __audio_channels_playback ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_audio_channels_record ( )
{
return __audio_channels_record ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_audio_gain ( int32_t audio_producer_gain , int32_t audio_consumer_gain )
{
__audio_producer_gain = audio_producer_gain ;
__audio_consumer_gain = audio_consumer_gain ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_audio_producer_gain ( )
{
return __audio_producer_gain ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_audio_consumer_gain ( )
{
return __audio_consumer_gain ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
uint16_t tmedia_defaults_get_rtp_port_range_start ( )
{
return __rtp_port_range_start ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
uint16_t tmedia_defaults_get_rtp_port_range_stop ( )
{
return __rtp_port_range_stop ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
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 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_rtp_symetric_enabled ( tsk_bool_t enabled )
{
__rtp_symetric_enabled = enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_rtp_symetric_enabled ( )
{
return __rtp_symetric_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tmedia_type_t tmedia_defaults_get_media_type ( )
{
return __media_type ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_media_type ( tmedia_type_t media_type )
{
__media_type = media_type ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_volume ( int32_t volume )
{
__volume = TSK_CLAMP ( 0 , volume , 100 ) ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_volume ( )
{
return __volume ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_producer_set_friendly_name ( tmedia_type_t media_type , const char * friendly_name )
{
if ( media_type ! = tmedia_audio & & media_type ! = tmedia_video & & media_type ! = tmedia_bfcp_video ) {
TSK_DEBUG_ERROR ( " Invalid parameter " ) ;
return - 1 ;
}
tsk_strupdate ( & __producer_friendly_name [ ( media_type = = tmedia_audio ) ? 0 : ( media_type = = tmedia_bfcp_video ? 2 : 1 ) ] , friendly_name ) ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
const char * tmedia_producer_get_friendly_name ( tmedia_type_t media_type )
{
if ( media_type ! = tmedia_audio & & media_type ! = tmedia_video & & media_type ! = tmedia_bfcp_video ) {
TSK_DEBUG_ERROR ( " Invalid parameter " ) ;
return tsk_null ;
}
return __producer_friendly_name [ ( media_type = = tmedia_audio ) ? 0 : ( media_type = = tmedia_bfcp_video ? 2 : 1 ) ] ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int32_t tmedia_defaults_get_inv_session_expires ( )
{
return __inv_session_expires ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_inv_session_expires ( int32_t timeout )
{
if ( timeout > = 0 ) {
__inv_session_expires = timeout ;
return 0 ;
}
TSK_DEBUG_ERROR ( " Invalid parameter " ) ;
return - 1 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
const char * tmedia_defaults_get_inv_session_refresher ( )
{
return __inv_session_refresher ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_inv_session_refresher ( const char * refresher )
{
tsk_strupdate ( & __inv_session_refresher , refresher ) ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tmedia_srtp_mode_t tmedia_defaults_get_srtp_mode ( )
{
return __srtp_mode ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_srtp_mode ( tmedia_srtp_mode_t mode )
{
__srtp_mode = mode ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tmedia_srtp_type_t tmedia_defaults_get_srtp_type ( )
{
return __srtp_type ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_srtp_type ( tmedia_srtp_type_t srtp_type )
{
__srtp_type = srtp_type ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_rtcp_enabled ( )
{
return __rtcp_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_rtcp_enabled ( tsk_bool_t rtcp_enabled )
{
__rtcp_enabled = rtcp_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_rtcpmux_enabled ( )
{
return __rtcpmux_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_rtcpmux_enabled ( tsk_bool_t rtcpmux_enabled )
{
__rtcpmux_enabled = rtcpmux_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_stun_server ( const char * server_ip , uint16_t server_port )
{
tsk_strupdate ( & __stun_server_ip , server_ip ) ;
__stun_server_port = server_port ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_get_stun_server ( const char * * server_ip , uint16_t * const server_port )
{
static const char * __stun_server_ip_default = " numb.viagenie.ca " ; // default server for backward compatibility
if ( server_ip ) {
* server_ip = tsk_strnullORempty ( __stun_server_ip ) ? __stun_server_ip_default : __stun_server_ip ;
}
if ( server_port ) {
* server_port = __stun_server_port ;
}
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_stun_cred ( const char * usr_name , const char * usr_pwd )
{
tsk_strupdate ( & __stun_usr_name , usr_name ) ;
tsk_strupdate ( & __stun_usr_pwd , usr_pwd ) ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_get_stun_cred ( const char * * usr_name , const char * * usr_pwd )
{
if ( usr_name ) {
* usr_name = __stun_usr_name ;
}
if ( usr_pwd ) {
* usr_pwd = __stun_usr_pwd ;
}
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_stun_enabled ( tsk_bool_t stun_enabled )
{
__stun_enabled = stun_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_stun_enabled ( )
{
return __stun_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_icestun_enabled ( tsk_bool_t icestun_enabled )
{
__icestun_enabled = icestun_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_icestun_enabled ( )
{
return __icestun_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_iceturn_enabled ( tsk_bool_t iceturn_enabled )
{
__iceturn_enabled = iceturn_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_iceturn_enabled ( )
{
return __iceturn_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_ice_enabled ( tsk_bool_t ice_enabled )
{
__ice_enabled = ice_enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_ice_enabled ( )
{
return __ice_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_bypass_encoding ( tsk_bool_t enabled )
{
__bypass_encoding_enabled = enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_bypass_encoding ( )
{
return __bypass_encoding_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_bypass_decoding ( tsk_bool_t enabled )
{
__bypass_decoding_enabled = enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_bypass_decoding ( )
{
return __bypass_decoding_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_videojb_enabled ( tsk_bool_t enabled )
{
__videojb_enabled = enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_videojb_enabled ( )
{
return __videojb_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_video_zeroartifacts_enabled ( tsk_bool_t enabled )
{
__video_zeroartifacts_enabled = enabled ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_video_zeroartifacts_enabled ( )
{
return __video_zeroartifacts_enabled ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_rtpbuff_size ( tsk_size_t rtpbuff_size )
{
__rtpbuff_size = rtpbuff_size ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_size_t tmedia_defaults_get_rtpbuff_size ( )
{
return __rtpbuff_size ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_avpf_tail ( tsk_size_t tail_min , tsk_size_t tail_max )
{
__avpf_tail_min = tail_min ;
__avpf_tail_max = tail_max ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_size_t tmedia_defaults_get_avpf_tail_min ( )
{
return __avpf_tail_min ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_size_t tmedia_defaults_get_avpf_tail_max ( )
{
return __avpf_tail_max ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_avpf_mode ( enum tmedia_mode_e mode )
{
__avpf_mode = mode ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
enum tmedia_mode_e tmedia_defaults_get_avpf_mode ( )
{
return __avpf_mode ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_opus_maxcapturerate ( uint32_t opus_maxcapturerate )
{
switch ( opus_maxcapturerate ) {
case 8000 :
case 12000 :
case 16000 :
case 24000 :
case 48000 :
__opus_maxcapturerate = opus_maxcapturerate ;
return 0 ;
default :
TSK_DEBUG_ERROR ( " %u not valid for opus_maxcapturerate " , opus_maxcapturerate ) ;
return - 1 ;
}
}
uint32_t tmedia_defaults_get_opus_maxcapturerate ( )
{
return __opus_maxcapturerate ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_opus_maxplaybackrate ( uint32_t opus_maxplaybackrate )
{
switch ( opus_maxplaybackrate ) {
case 8000 :
case 12000 :
case 16000 :
case 24000 :
case 48000 :
__opus_maxplaybackrate = opus_maxplaybackrate ;
return 0 ;
default :
TSK_DEBUG_ERROR ( " %u not valid for opus_maxplaybackrate " , opus_maxplaybackrate ) ;
return - 1 ;
}
}
uint32_t tmedia_defaults_get_opus_maxplaybackrate ( )
{
return __opus_maxplaybackrate ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_ssl_certs ( const char * priv_path , const char * pub_path , const char * ca_path , tsk_bool_t verify )
{
tsk_strupdate ( & __ssl_certs_priv_path , priv_path ) ;
tsk_strupdate ( & __ssl_certs_pub_path , pub_path ) ;
tsk_strupdate ( & __ssl_certs_ca_path , ca_path ) ;
__ssl_certs_verify = verify ;
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_get_ssl_certs ( const char * * priv_path , const char * * pub_path , const char * * ca_path , tsk_bool_t * verify )
{
if ( priv_path ) {
* priv_path = __ssl_certs_priv_path ;
}
if ( pub_path ) {
* pub_path = __ssl_certs_pub_path ;
}
if ( ca_path ) {
* ca_path = __ssl_certs_ca_path ;
}
if ( verify ) {
* verify = __ssl_certs_verify ;
}
return 0 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_max_fds ( int32_t max_fds )
{
if ( max_fds > 0 & & max_fds < 0xFFFF ) {
__max_fds = ( tsk_size_t ) max_fds ;
return 0 ;
}
return - 1 ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
tsk_size_t tmedia_defaults_get_max_fds ( )
{
return __max_fds ;
2015-08-16 23:56:35 +00:00
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_webproxy_auto_detect ( tsk_bool_t auto_detect )
{
2015-08-16 23:56:35 +00:00
__webproxy_auto_detect = auto_detect ;
return 0 ;
}
2016-02-23 21:00:35 +00:00
tsk_bool_t tmedia_defaults_get_webproxy_auto_detect ( )
{
2015-08-16 23:56:35 +00:00
return __webproxy_auto_detect ;
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_set_webproxy_info ( const char * type , const char * host , unsigned short port , const char * login , const char * password )
{
2015-08-16 23:56:35 +00:00
tsk_strupdate ( & __webproxy_type , type ) ;
tsk_strupdate ( & __webproxy_host , host ) ;
tsk_strupdate ( & __webproxy_login , login ) ;
tsk_strupdate ( & __webproxy_password , password ) ;
__webproxy_port = port ;
return 0 ;
}
2016-02-23 21:00:35 +00:00
int tmedia_defaults_get_webproxy_info ( const char * * type , const char * * host , unsigned short * port , const char * * login , const char * * password )
{
if ( type ) {
* type = __webproxy_type ;
}
if ( host ) {
* host = __webproxy_host ;
}
if ( port ) {
* port = __webproxy_port ;
}
if ( login ) {
* login = __webproxy_login ;
}
if ( password ) {
* password = __webproxy_password ;
}
2015-08-16 23:56:35 +00:00
return 0 ;
}