Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
liblinphone
Commits
d06d38f6
Commit
d06d38f6
authored
Jan 03, 2013
by
Guillaume Beraudo
Browse files
Merge branch 'master' of git.linphone.org:linphone into dev_gtk_new_ui
parents
beb2d66e
271e68f1
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
141 additions
and
169 deletions
+141
-169
build/android/common.mk
build/android/common.mk
+0
-5
coreapi/callbacks.c
coreapi/callbacks.c
+31
-22
coreapi/linphonecall.c
coreapi/linphonecall.c
+47
-1
coreapi/linphonecore.c
coreapi/linphonecore.c
+13
-9
coreapi/linphonecore_jni.cc
coreapi/linphonecore_jni.cc
+14
-5
coreapi/private.h
coreapi/private.h
+2
-0
coreapi/proxy.c
coreapi/proxy.c
+2
-2
coreapi/sal.c
coreapi/sal.c
+8
-0
coreapi/sal.h
coreapi/sal.h
+2
-1
java/common/org/linphone/core/LinphoneCore.java
java/common/org/linphone/core/LinphoneCore.java
+3
-1
java/common/org/linphone/core/LinphoneCoreFactory.java
java/common/org/linphone/core/LinphoneCoreFactory.java
+2
-1
java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java
java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java
+1
-1
java/impl/org/linphone/core/LinphoneCoreImpl.java
java/impl/org/linphone/core/LinphoneCoreImpl.java
+8
-2
java/impl/org/linphone/core/Log.java
java/impl/org/linphone/core/Log.java
+0
-112
mediastreamer2
mediastreamer2
+1
-1
oRTP
oRTP
+1
-1
tools/Makefile.am
tools/Makefile.am
+6
-5
No files found.
build/android/common.mk
View file @
d06d38f6
...
...
@@ -46,10 +46,6 @@ LOCAL_SRC_FILES := \
ec-calibrator.c
\
linphone_tunnel.cc
ifndef
MY_LOG_DOMAIN
MY_LOG_DOMAIN
=
\"
Linphone
\"
endif
ifndef
LINPHONE_VERSION
LINPHONE_VERSION
=
"Devel"
endif
...
...
@@ -64,7 +60,6 @@ LOCAL_CFLAGS += \
-DENABLE_TRACE
\
-DLINPHONE_VERSION
=
\"
$(LINPHONE_VERSION)
\"
\
-DLINPHONE_PLUGINS_DIR
=
\"\\
tmp
\"
\
-DLOG_DOMAIN
=
$(MY_LOG_DOMAIN)
\
-DHAVE_EXOSIP_TRYLOCK
=
1
\
-DHAVE_EXOSIP_TLS_VERIFY_CERTIFICATE
=
1
...
...
coreapi/callbacks.c
View file @
d06d38f6
...
...
@@ -104,31 +104,40 @@ void linphone_core_update_streams(LinphoneCore *lc, LinphoneCall *call, SalMedia
/* we already started media: check if we really need to restart it*/
if
(
oldmd
){
int
md_changed
=
media_parameters_changed
(
call
,
oldmd
,
new_md
);
if
((
md_changed
==
SAL_MEDIA_DESCRIPTION_UNCHANGED
)
&&
!
call
->
playing_ringbacktone
)
{
/*as nothing has changed, keep the oldmd */
call
->
resultdesc
=
oldmd
;
sal_media_description_unref
(
new_md
);
if
(
call
->
all_muted
){
ms_message
(
"Early media finished, unmuting inputs..."
);
/*we were in early media, now we want to enable real media */
linphone_call_enable_camera
(
call
,
linphone_call_camera_enabled
(
call
));
if
(
call
->
audiostream
)
linphone_core_mute_mic
(
lc
,
linphone_core_is_mic_muted
(
lc
));
if
((
md_changed
&
SAL_MEDIA_DESCRIPTION_CODEC_CHANGED
)
||
call
->
playing_ringbacktone
)
{
ms_message
(
"Media descriptions are different, need to restart the streams."
);
}
else
{
if
(
md_changed
==
SAL_MEDIA_DESCRIPTION_UNCHANGED
)
{
/*as nothing has changed, keep the oldmd */
call
->
resultdesc
=
oldmd
;
sal_media_description_unref
(
new_md
);
if
(
call
->
all_muted
){
ms_message
(
"Early media finished, unmuting inputs..."
);
/*we were in early media, now we want to enable real media */
linphone_call_enable_camera
(
call
,
linphone_call_camera_enabled
(
call
));
if
(
call
->
audiostream
)
linphone_core_mute_mic
(
lc
,
linphone_core_is_mic_muted
(
lc
));
#ifdef VIDEO_ENABLED
if
(
call
->
videostream
&&
call
->
camera_active
)
video_stream_change_camera
(
call
->
videostream
,
lc
->
video_conf
.
device
);
if
(
call
->
videostream
&&
call
->
camera_active
)
video_stream_change_camera
(
call
->
videostream
,
lc
->
video_conf
.
device
);
#endif
}
ms_message
(
"No need to restart streams, SDP is unchanged."
);
return
;
}
else
{
if
(
md_changed
&
SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED
)
{
ms_message
(
"Network parameters have changed, update them."
);
linphone_core_update_streams_destinations
(
lc
,
call
,
oldmd
,
new_md
);
}
if
(
md_changed
&
SAL_MEDIA_DESCRIPTION_CRYPTO_CHANGED
)
{
ms_message
(
"Crypto parameters have changed, update them."
);
linphone_call_update_crypto_parameters
(
call
,
oldmd
,
new_md
);
}
call
->
resultdesc
=
oldmd
;
sal_media_description_unref
(
new_md
);
return
;
}
ms_message
(
"No need to restart streams, SDP is unchanged."
);
return
;
}
else
if
((
md_changed
==
SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED
)
&&
!
call
->
playing_ringbacktone
)
{
call
->
resultdesc
=
oldmd
;
ms_message
(
"Network parameters have changed, update them."
);
linphone_core_update_streams_destinations
(
lc
,
call
,
oldmd
,
new_md
);
sal_media_description_unref
(
new_md
);
return
;
}
else
{
ms_message
(
"Media descriptions are different, need to restart the streams."
);
}
}
linphone_call_stop_media_streams
(
call
);
...
...
coreapi/linphonecall.c
View file @
d06d38f6
...
...
@@ -244,7 +244,7 @@ void linphone_call_make_local_media_description(LinphoneCore *lc, LinphoneCall *
else
md
->
streams
[
0
].
ptime
=
linphone_core_get_download_ptime
(
lc
);
l
=
make_codec_list
(
lc
,
lc
->
codecs_conf
.
audio_codecs
,
call
->
params
.
audio_bw
,
&
md
->
streams
[
0
].
max_rate
);
pt
=
payload_type_clone
(
rtp_profile_get_payload_from_mime
(
&
av
_profile
,
"telephone-event"
));
pt
=
payload_type_clone
(
rtp_profile_get_payload_from_mime
(
lc
->
default
_profile
,
"telephone-event"
));
l
=
ms_list_append
(
l
,
pt
);
md
->
streams
[
0
].
payloads
=
l
;
...
...
@@ -1658,6 +1658,52 @@ void linphone_call_stop_media_streams_for_ice_gathering(LinphoneCall *call){
#endif
}
void
linphone_call_update_crypto_parameters
(
LinphoneCall
*
call
,
SalMediaDescription
*
old_md
,
SalMediaDescription
*
new_md
)
{
SalStreamDescription
*
old_stream
;
SalStreamDescription
*
new_stream
;
int
i
;
old_stream
=
sal_media_description_find_stream
(
old_md
,
SalProtoRtpSavp
,
SalAudio
);
new_stream
=
sal_media_description_find_stream
(
new_md
,
SalProtoRtpSavp
,
SalAudio
);
if
(
old_stream
&&
new_stream
)
{
const
SalStreamDescription
*
local_st_desc
=
sal_media_description_find_stream
(
call
->
localdesc
,
SalProtoRtpSavp
,
SalAudio
);
int
crypto_idx
=
find_crypto_index_from_tag
(
local_st_desc
->
crypto
,
new_stream
->
crypto_local_tag
);
if
(
crypto_idx
>=
0
)
{
audio_stream_enable_strp
(
call
->
audiostream
,
new_stream
->
crypto
[
0
].
algo
,
local_st_desc
->
crypto
[
crypto_idx
].
master_key
,
new_stream
->
crypto
[
0
].
master_key
);
call
->
audiostream_encrypted
=
TRUE
;
}
else
{
ms_warning
(
"Failed to find local crypto algo with tag: %d"
,
new_stream
->
crypto_local_tag
);
call
->
audiostream_encrypted
=
FALSE
;
}
for
(
i
=
0
;
i
<
SAL_CRYPTO_ALGO_MAX
;
i
++
)
{
old_stream
->
crypto
[
i
].
tag
=
new_stream
->
crypto
[
i
].
tag
;
old_stream
->
crypto
[
i
].
algo
=
new_stream
->
crypto
[
i
].
algo
;
strncpy
(
old_stream
->
crypto
[
i
].
master_key
,
new_stream
->
crypto
[
i
].
master_key
,
sizeof
(
old_stream
->
crypto
[
i
].
master_key
)
-
1
);
}
}
#ifdef VIDEO_ENABLED
old_stream
=
sal_media_description_find_stream
(
old_md
,
SalProtoRtpSavp
,
SalVideo
);
new_stream
=
sal_media_description_find_stream
(
new_md
,
SalProtoRtpSavp
,
SalVideo
);
if
(
old_stream
&&
new_stream
)
{
const
SalStreamDescription
*
local_st_desc
=
sal_media_description_find_stream
(
call
->
localdesc
,
SalProtoRtpSavp
,
SalVideo
);
int
crypto_idx
=
find_crypto_index_from_tag
(
local_st_desc
->
crypto
,
new_stream
->
crypto_local_tag
);
if
(
crypto_idx
>=
0
)
{
video_stream_enable_strp
(
call
->
videostream
,
new_stream
->
crypto
[
0
].
algo
,
local_st_desc
->
crypto
[
crypto_idx
].
master_key
,
new_stream
->
crypto
[
0
].
master_key
);
call
->
videostream_encrypted
=
TRUE
;
}
else
{
ms_warning
(
"Failed to find local crypto algo with tag: %d"
,
new_stream
->
crypto_local_tag
);
call
->
videostream_encrypted
=
FALSE
;
}
for
(
i
=
0
;
i
<
SAL_CRYPTO_ALGO_MAX
;
i
++
)
{
old_stream
->
crypto
[
i
].
tag
=
new_stream
->
crypto
[
i
].
tag
;
old_stream
->
crypto
[
i
].
algo
=
new_stream
->
crypto
[
i
].
algo
;
strncpy
(
old_stream
->
crypto
[
i
].
master_key
,
new_stream
->
crypto
[
i
].
master_key
,
sizeof
(
old_stream
->
crypto
[
i
].
master_key
)
-
1
);
}
}
#endif
}
void
linphone_call_delete_ice_session
(
LinphoneCall
*
call
){
if
(
call
->
ice_session
!=
NULL
)
{
ice_session_destroy
(
call
->
ice_session
);
...
...
coreapi/linphonecore.c
View file @
d06d38f6
...
...
@@ -707,11 +707,12 @@ static PayloadType * find_payload(RtpProfile *prof, const char *mime_type, int c
return
candidate
;
}
static
bool_t
get_codec
(
L
pConfig
*
config
,
const
char
*
type
,
int
index
,
PayloadType
**
ret
){
static
bool_t
get_codec
(
L
inphoneCore
*
lc
,
const
char
*
type
,
int
index
,
PayloadType
**
ret
){
char
codeckey
[
50
];
const
char
*
mime
,
*
fmtp
;
int
rate
,
channels
,
enabled
;
PayloadType
*
pt
;
LpConfig
*
config
=
lc
->
config
;
*
ret
=
NULL
;
snprintf
(
codeckey
,
50
,
"%s_%i"
,
type
,
index
);
...
...
@@ -722,7 +723,7 @@ static bool_t get_codec(LpConfig *config, const char* type, int index, PayloadTy
fmtp
=
lp_config_get_string
(
config
,
codeckey
,
"recv_fmtp"
,
NULL
);
channels
=
lp_config_get_int
(
config
,
codeckey
,
"channels"
,
0
);
enabled
=
lp_config_get_int
(
config
,
codeckey
,
"enabled"
,
1
);
pt
=
find_payload
(
&
av
_profile
,
mime
,
rate
,
channels
,
fmtp
);
pt
=
find_payload
(
lc
->
default
_profile
,
mime
,
rate
,
channels
,
fmtp
);
if
(
pt
&&
enabled
)
pt
->
flags
|=
PAYLOAD_TYPE_ENABLED
;
//ms_message("Found codec %s/%i",pt->mime_type,pt->clock_rate);
if
(
pt
==
NULL
)
ms_warning
(
"Ignoring codec config %s/%i with fmtp=%s because unsupported"
,
...
...
@@ -768,10 +769,10 @@ static int codec_compare(const PayloadType *a, const PayloadType *b){
return
0
;
}
static
MSList
*
add_missing_codecs
(
SalStreamType
mtype
,
MSList
*
l
){
static
MSList
*
add_missing_codecs
(
LinphoneCore
*
lc
,
SalStreamType
mtype
,
MSList
*
l
){
int
i
;
for
(
i
=
0
;
i
<
RTP_PROFILE_MAX_PAYLOADS
;
++
i
){
PayloadType
*
pt
=
rtp_profile_get_payload
(
&
av
_profile
,
i
);
PayloadType
*
pt
=
rtp_profile_get_payload
(
lc
->
default
_profile
,
i
);
if
(
pt
){
if
(
mtype
==
SalVideo
&&
pt
->
type
!=
PAYLOAD_VIDEO
)
pt
=
NULL
;
...
...
@@ -812,22 +813,22 @@ static void codecs_config_read(LinphoneCore *lc)
PayloadType
*
pt
;
MSList
*
audio_codecs
=
NULL
;
MSList
*
video_codecs
=
NULL
;
for
(
i
=
0
;
get_codec
(
lc
->
config
,
"audio_codec"
,
i
,
&
pt
);
i
++
){
for
(
i
=
0
;
get_codec
(
lc
,
"audio_codec"
,
i
,
&
pt
);
i
++
){
if
(
pt
){
if
(
!
ms_filter_codec_supported
(
pt
->
mime_type
)){
ms_warning
(
"Codec %s is not supported by mediastreamer2, removed."
,
pt
->
mime_type
);
}
else
audio_codecs
=
codec_append_if_new
(
audio_codecs
,
pt
);
}
}
audio_codecs
=
add_missing_codecs
(
SalAudio
,
audio_codecs
);
for
(
i
=
0
;
get_codec
(
lc
->
config
,
"video_codec"
,
i
,
&
pt
);
i
++
){
audio_codecs
=
add_missing_codecs
(
lc
,
SalAudio
,
audio_codecs
);
for
(
i
=
0
;
get_codec
(
lc
,
"video_codec"
,
i
,
&
pt
);
i
++
){
if
(
pt
){
if
(
!
ms_filter_codec_supported
(
pt
->
mime_type
)){
ms_warning
(
"Codec %s is not supported by mediastreamer2, removed."
,
pt
->
mime_type
);
}
else
video_codecs
=
codec_append_if_new
(
video_codecs
,(
void
*
)
pt
);
}
}
video_codecs
=
add_missing_codecs
(
SalVideo
,
video_codecs
);
video_codecs
=
add_missing_codecs
(
lc
,
SalVideo
,
video_codecs
);
linphone_core_set_audio_codecs
(
lc
,
audio_codecs
);
linphone_core_set_video_codecs
(
lc
,
video_codecs
);
linphone_core_update_allocated_audio_bandwidth
(
lc
);
...
...
@@ -1074,7 +1075,7 @@ static void linphone_core_assign_payload_type(LinphoneCore *lc, PayloadType *con
ms_message
(
"assigning %s/%i payload type number %i"
,
pt
->
mime_type
,
pt
->
clock_rate
,
number
);
payload_type_set_number
(
pt
,
number
);
if
(
recv_fmtp
!=
NULL
)
payload_type_set_recv_fmtp
(
pt
,
recv_fmtp
);
rtp_profile_set_payload
(
&
av
_profile
,
number
,
pt
);
rtp_profile_set_payload
(
lc
->
default
_profile
,
number
,
pt
);
lc
->
payload_types
=
ms_list_append
(
lc
->
payload_types
,
pt
);
}
...
...
@@ -1092,6 +1093,8 @@ static void linphone_core_handle_static_payloads(LinphoneCore *lc){
}
static
void
linphone_core_free_payload_types
(
LinphoneCore
*
lc
){
rtp_profile_clear_all
(
lc
->
default_profile
);
rtp_profile_destroy
(
lc
->
default_profile
);
ms_list_for_each
(
lc
->
payload_types
,(
void
(
*
)(
void
*
))
payload_type_destroy
);
ms_list_free
(
lc
->
payload_types
);
lc
->
payload_types
=
NULL
;
...
...
@@ -1125,6 +1128,7 @@ static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vta
linphone_core_set_state
(
lc
,
LinphoneGlobalStartup
,
"Starting up"
);
ortp_init
();
lc
->
dyn_pt
=
96
;
lc
->
default_profile
=
rtp_profile_new
(
"default profile"
);
linphone_core_assign_payload_type
(
lc
,
&
payload_type_pcmu8000
,
0
,
NULL
);
linphone_core_assign_payload_type
(
lc
,
&
payload_type_gsm
,
3
,
NULL
);
linphone_core_assign_payload_type
(
lc
,
&
payload_type_pcma8000
,
8
,
NULL
);
...
...
coreapi/linphonecore_jni.cc
View file @
d06d38f6
...
...
@@ -52,6 +52,7 @@ extern "C" void libmsbcg729_init();
#endif
/*ANDROID*/
static
JavaVM
*
jvm
=
0
;
static
const
char
*
LogDomain
=
"Linphone"
;
#ifdef ANDROID
static
void
linphone_android_log_handler
(
OrtpLogLevel
lev
,
const
char
*
fmt
,
va_list
args
){
...
...
@@ -70,15 +71,15 @@ static void linphone_android_log_handler(OrtpLogLevel lev, const char *fmt, va_l
vsnprintf
(
str
,
sizeof
(
str
)
-
1
,
fmt
,
args
);
str
[
sizeof
(
str
)
-
1
]
=
'\0'
;
if
(
strlen
(
str
)
<
512
)
{
__android_log_write
(
prio
,
L
OG_DOMAIN
,
str
);
__android_log_write
(
prio
,
L
ogDomain
,
str
);
}
else
{
current
=
str
;
while
((
next
=
strchr
(
current
,
'\n'
))
!=
NULL
)
{
*
next
=
'\0'
;
__android_log_write
(
prio
,
L
OG_DOMAIN
,
current
);
__android_log_write
(
prio
,
L
ogDomain
,
current
);
current
=
next
+
1
;
}
__android_log_write
(
prio
,
L
OG_DOMAIN
,
current
);
__android_log_write
(
prio
,
L
ogDomain
,
current
);
}
}
...
...
@@ -100,8 +101,10 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *ajvm, void *reserved)
//LinphoneFactory
extern
"C"
void
Java_org_linphone_core_LinphoneCoreFactoryImpl_setDebugMode
(
JNIEnv
*
env
,
jobject
thiz
,
jboolean
isDebug
)
{
,
jboolean
isDebug
,
jstring
jdebugTag
)
{
if
(
isDebug
)
{
LogDomain
=
env
->
GetStringUTFChars
(
jdebugTag
,
NULL
);
linphone_core_enable_logs_with_cb
(
linphone_android_log_handler
);
}
else
{
linphone_core_disable_logs
();
...
...
@@ -1779,7 +1782,7 @@ extern "C" jstring Java_org_linphone_core_LinphoneCoreImpl_getStunServer(JNIEnv
//CallParams
extern
"C"
void
Java_org_linphone_core_LinphoneCallImpl_enableLowBandwidth
(
JNIEnv
*
env
,
jobject
thiz
,
jlong
cp
,
jboolean
enable
)
{
extern
"C"
void
Java_org_linphone_core_LinphoneCall
Params
Impl_enableLowBandwidth
(
JNIEnv
*
env
,
jobject
thiz
,
jlong
cp
,
jboolean
enable
)
{
linphone_call_params_enable_low_bandwidth
((
LinphoneCallParams
*
)
cp
,
enable
);
}
...
...
@@ -2165,6 +2168,12 @@ extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setVideoPolicy(JNIEnv *e
linphone_core_set_video_policy
((
LinphoneCore
*
)
lc
,
&
vpol
);
}
extern
"C"
void
Java_org_linphone_core_LinphoneCoreImpl_setStaticPicture
(
JNIEnv
*
env
,
jobject
thiz
,
jlong
lc
,
jstring
path
)
{
const
char
*
cpath
=
env
->
GetStringUTFChars
(
path
,
NULL
);
linphone_core_set_static_picture
((
LinphoneCore
*
)
lc
,
cpath
);
env
->
ReleaseStringUTFChars
(
path
,
cpath
);
}
extern
"C"
void
Java_org_linphone_core_LinphoneCoreImpl_setCpuCountNative
(
JNIEnv
*
env
,
jobject
thiz
,
jint
count
)
{
ms_set_cpu_count
(
count
);
}
...
...
coreapi/private.h
View file @
d06d38f6
...
...
@@ -285,6 +285,7 @@ void linphone_call_stop_video_stream(LinphoneCall *call);
void
linphone_call_stop_media_streams
(
LinphoneCall
*
call
);
void
linphone_call_delete_ice_session
(
LinphoneCall
*
call
);
void
linphone_call_stop_media_streams_for_ice_gathering
(
LinphoneCall
*
call
);
void
linphone_call_update_crypto_parameters
(
LinphoneCall
*
call
,
SalMediaDescription
*
old_md
,
SalMediaDescription
*
new_md
);
const
char
*
linphone_core_get_identity
(
LinphoneCore
*
lc
);
const
char
*
linphone_core_get_route
(
LinphoneCore
*
lc
);
...
...
@@ -502,6 +503,7 @@ struct _LinphoneCore
Sal
*
sal
;
LinphoneGlobalState
state
;
struct
_LpConfig
*
config
;
RtpProfile
*
default_profile
;
net_config_t
net_conf
;
sip_config_t
sip_conf
;
rtp_config_t
rtp_conf
;
...
...
coreapi/proxy.c
View file @
d06d38f6
...
...
@@ -625,7 +625,7 @@ int linphone_dial_plan_lookup_ccc_from_e164(const char* e164) {
found
++
;
}
}
}
while
(
found
>
1
||
found
==
0
);
}
while
(
(
found
>
1
||
found
==
0
)
&&
i
<
sizeof
(
dial_plan
->
ccc
))
;
if
(
found
==
1
)
{
return
atoi
(
elected_dial_plan
->
ccc
);
}
else
{
...
...
@@ -981,7 +981,7 @@ void linphone_proxy_config_write_to_config_file(LpConfig *config, LinphoneProxyC
lp_config_set_string
(
config
,
key
,
"reg_identity"
,
obj
->
reg_identity
);
}
if
(
obj
->
contact_params
!=
NULL
){
lp_config_set_string
(
config
,
key
,
"contact_params"
,
obj
->
contact_params
);
lp_config_set_string
(
config
,
key
,
"contact_param
eter
s"
,
obj
->
contact_params
);
}
lp_config_set_int
(
config
,
key
,
"reg_expires"
,
obj
->
expires
);
lp_config_set_int
(
config
,
key
,
"reg_sendregister"
,
obj
->
reg_sendregister
);
...
...
coreapi/sal.c
View file @
d06d38f6
...
...
@@ -189,10 +189,18 @@ static bool_t payload_list_equals(const MSList *l1, const MSList *l2){
int
sal_stream_description_equals
(
const
SalStreamDescription
*
sd1
,
const
SalStreamDescription
*
sd2
)
{
int
result
=
SAL_MEDIA_DESCRIPTION_UNCHANGED
;
int
i
;
/* A different proto should result in SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED but the encryption change
needs a stream restart for now, so use SAL_MEDIA_DESCRIPTION_CODEC_CHANGED */
if
(
sd1
->
proto
!=
sd2
->
proto
)
result
|=
SAL_MEDIA_DESCRIPTION_CODEC_CHANGED
;
for
(
i
=
0
;
i
<
SAL_CRYPTO_ALGO_MAX
;
i
++
)
{
if
((
sd1
->
crypto
[
i
].
tag
!=
sd2
->
crypto
[
i
].
tag
)
||
(
sd1
->
crypto
[
i
].
algo
!=
sd2
->
crypto
[
i
].
algo
)
||
(
strncmp
(
sd1
->
crypto
[
i
].
master_key
,
sd2
->
crypto
[
i
].
master_key
,
sizeof
(
sd1
->
crypto
[
i
].
master_key
)
-
1
)))
{
result
|=
SAL_MEDIA_DESCRIPTION_CRYPTO_CHANGED
;
}
}
if
(
sd1
->
type
!=
sd2
->
type
)
result
|=
SAL_MEDIA_DESCRIPTION_CODEC_CHANGED
;
if
(
strcmp
(
sd1
->
rtp_addr
,
sd2
->
rtp_addr
)
!=
0
)
result
|=
SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED
;
...
...
coreapi/sal.h
View file @
d06d38f6
...
...
@@ -56,7 +56,8 @@ typedef enum {
#define SAL_MEDIA_DESCRIPTION_UNCHANGED 0x00
#define SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED 0x01
#define SAL_MEDIA_DESCRIPTION_CODEC_CHANGED 0x02
#define SAL_MEDIA_DESCRIPTION_CHANGED (SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED | SAL_MEDIA_DESCRIPTION_CODEC_CHANGED)
#define SAL_MEDIA_DESCRIPTION_CRYPTO_CHANGED 0x04
#define SAL_MEDIA_DESCRIPTION_CHANGED (SAL_MEDIA_DESCRIPTION_NETWORK_CHANGED | SAL_MEDIA_DESCRIPTION_CODEC_CHANGED | SAL_MEDIA_DESCRIPTION_CRYPTO_CHANGED)
const
char
*
sal_transport_to_string
(
SalTransport
transport
);
SalTransport
sal_transport_parse
(
const
char
*
);
...
...
java/common/org/linphone/core/LinphoneCore.java
View file @
d06d38f6
...
...
@@ -786,7 +786,9 @@ public interface LinphoneCore {
LinphoneProxyConfig
[]
getProxyConfigList
();
void
setVideoPolicy
(
boolean
autoInitiate
,
boolean
autoAccept
);
void
setStaticPicture
(
String
path
);
void
setUserAgent
(
String
name
,
String
version
);
void
setCpuCount
(
int
count
);
...
...
java/common/org/linphone/core/LinphoneCoreFactory.java
View file @
d06d38f6
...
...
@@ -72,8 +72,9 @@ abstract public class LinphoneCoreFactory {
/**
* Enable verbose traces
* @param enable
* @param tag
*/
abstract
public
void
setDebugMode
(
boolean
enable
);
abstract
public
void
setDebugMode
(
boolean
enable
,
String
tag
);
abstract
public
void
setLogHandler
(
LinphoneLogHandler
handler
);
/**
...
...
java/impl/org/linphone/core/LinphoneCoreFactoryImpl.java
View file @
d06d38f6
...
...
@@ -131,7 +131,7 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory {
}
@Override
public
native
void
setDebugMode
(
boolean
enable
);
public
native
void
setDebugMode
(
boolean
enable
,
String
tag
);
@Override
public
void
setLogHandler
(
LinphoneLogHandler
handler
)
{
...
...
java/impl/org/linphone/core/LinphoneCoreImpl.java
View file @
d06d38f6
...
...
@@ -20,15 +20,17 @@ package org.linphone.core;
import
static
android
.
media
.
AudioManager
.
MODE_IN_CALL
;
import
static
android
.
media
.
AudioManager
.
MODE_RINGTONE
;
import
android.content.Context
;
import
android.media.AudioManager
;
import
java.io.File
;
import
java.io.IOException
;
import
org.linphone.core.LinphoneCall.State
;
import
org.linphone.mediastream.Log
;
import
org.linphone.mediastream.video.capture.hwconf.Hacks
;
import
android.content.Context
;
import
android.media.AudioManager
;
class
LinphoneCoreImpl
implements
LinphoneCore
{
...
...
@@ -754,6 +756,10 @@ class LinphoneCoreImpl implements LinphoneCore {
public
synchronized
void
setVideoPolicy
(
boolean
autoInitiate
,
boolean
autoAccept
)
{
setVideoPolicy
(
nativePtr
,
autoInitiate
,
autoAccept
);
}
private
native
void
setStaticPicture
(
long
nativePtr
,
String
path
);
public
void
setStaticPicture
(
String
path
)
{
setStaticPicture
(
nativePtr
,
path
);
}
private
native
void
setUserAgent
(
long
nativePtr
,
String
name
,
String
version
);
@Override
public
void
setUserAgent
(
String
name
,
String
version
)
{
...
...
java/impl/org/linphone/core/Log.java
deleted
100644 → 0
View file @
beb2d66e
/*
Log.java
Copyright (C) 2011 Belledonne Communications, Grenoble, France
This program 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 2
of the License, or (at your option) any later version.
This program 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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package
org.linphone.core
;
import
static
android
.
util
.
Log
.
DEBUG
;
import
static
android
.
util
.
Log
.
ERROR
;
import
static
android
.
util
.
Log
.
INFO
;
import
static
android
.
util
.
Log
.
WARN
;
/**
* Convenient wrapper for Android logs.
*
* @author Guillaume Beraudo
*/
public
final
class
Log
{
public
static
final
String
TAG
=
"Linphone"
;
private
static
final
boolean
useIsLoggable
=
false
;
@SuppressWarnings
(
value
=
"all"
)
private
static
boolean
isLoggable
(
int
level
)
{
return
!
useIsLoggable
||
android
.
util
.
Log
.
isLoggable
(
TAG
,
level
);
}
public
static
void
i
(
Object
...
objects
)
{
if
(
isLoggable
(
INFO
))
{
android
.
util
.
Log
.
i
(
TAG
,
toString
(
objects
));
}
}
public
static
void
i
(
Throwable
t
,
Object
...
objects
)
{
if
(
isLoggable
(
INFO
))
{
android
.
util
.
Log
.
i
(
TAG
,
toString
(
objects
),
t
);
}
}
public
static
void
d
(
Object
...
objects
)
{
if
(
isLoggable
(
DEBUG
))
{
android
.
util
.
Log
.
d
(
TAG
,
toString
(
objects
));
}
}
public
static
void
d
(
Throwable
t
,
Object
...
objects
)
{
if
(
isLoggable
(
DEBUG
))
{
android
.
util
.
Log
.
d
(
TAG
,
toString
(
objects
),
t
);
}
}
public
static
void
w
(
Object
...
objects
)
{
if
(
isLoggable
(
WARN
))
{
android
.
util
.
Log
.
w
(
TAG
,
toString
(
objects
));
}
}
public
static
void
w
(
Throwable
t
,
Object
...
objects
)
{
if
(
isLoggable
(
WARN
))
{
android
.
util
.
Log
.
w
(
TAG
,
toString
(
objects
),
t
);
}
}
public
static
void
e
(
Object
...
objects
)
{
if
(
isLoggable
(
ERROR
))
{
android
.
util
.
Log
.
e
(
TAG
,
toString
(
objects
));
}
}
public
static
void
e
(
Throwable
t
,
Object
...
objects
)
{
if
(
isLoggable
(
ERROR
))
{
android
.
util
.
Log
.
e
(
TAG
,
toString
(
objects
),
t
);
}
}
/**
* @throws RuntimeException always throw after logging the error message.
*/
public
static
void
f
(
Object
...
objects
)
{
if
(
isLoggable
(
ERROR
))
{
android
.
util
.
Log
.
e
(
TAG
,
toString
(
objects
));
throw
new
RuntimeException
(
"Fatal error : "
+
toString
(
objects
));
}
}
/**
* @throws RuntimeException always throw after logging the error message.
*/
public
static
void
f
(
Throwable
t
,
Object
...
objects
)
{
if
(
isLoggable
(
ERROR
))
{
android
.
util
.
Log
.
e
(
TAG
,
toString
(
objects
),
t
);
throw
new
RuntimeException
(
"Fatal error : "
+
toString
(
objects
),
t
);
}
}
private
static
String
toString
(
Object
...
objects
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
Object
o
:
objects
)
{
sb
.
append
(
o
);
}
return
sb
.
toString
();
}
}
mediastreamer2
@
22f54d40
Subproject commit
bd15866cec3c7b74b359e7a22598c017baf7043e
Subproject commit
22f54d4038fd4ba2897e506be776fe3c0956dd3d
oRTP
@
b1590514
Subproject commit
59ff6bb7a0c5047526b802d264f6db4faa2bd5c2
Subproject commit
b1590514c98d33e5464d46317fdeaec52f778de7
tools/Makefile.am
View file @
d06d38f6
...
...
@@ -7,9 +7,9 @@ AM_CPPFLAGS=\
COMMON_CFLAGS
=
\
-DIN_LINPHONE
\
$(LIBXML2_CFLAGS)
\
$(ORTP_CFLAGS)
\
$(STRICT_OPTIONS)
$(STRICT_OPTIONS)
\
$(LIBXML2_CFLAGS)
if
BUILD_TOOLS
...
...
@@ -21,8 +21,8 @@ libxml2lpc_la_SOURCES=\
libxml2lpc_la_CFLAGS
=
$(COMMON_CFLAGS)
libxml2lpc_la_LIBADD
=
\
$(
LIBXML2_LIBS)
\
$(
top_builddir)
/coreapi/liblinphone.la
$(
top_builddir)
/coreapi/liblinphone.la
\
$(
LIBXML2_LIBS)
libxml2lpc_la_LDFLAGS
=
-no-undefined
...
...
@@ -33,7 +33,8 @@ xml2lpc_test_SOURCES=\
xml2lpc_test_CFLAGS
=
$(COMMON_CFLAGS)
xml2lpc_test_LDADD
=
\
libxml2lpc.la
$(top_builddir)
/coreapi/liblinphone.la
\
libxml2lpc.la
endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment