account.hpp | account.hpp | |||
---|---|---|---|---|
/* $Id: account.hpp 4889 2014-08-18 09:09:18Z bennylp $ */ | /* $Id: account.hpp 4957 2014-11-04 08:00:15Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 84 | skipping to change at line 84 | |||
* default interval will be used (PJSUA_REG_INTERVAL, 300 seconds). | * default interval will be used (PJSUA_REG_INTERVAL, 300 seconds). | |||
*/ | */ | |||
unsigned timeoutSec; | unsigned timeoutSec; | |||
/** | /** | |||
* Specify interval of auto registration retry upon registration failur e | * Specify interval of auto registration retry upon registration failur e | |||
* (including caused by transport problem), in second. Set to 0 to | * (including caused by transport problem), in second. Set to 0 to | |||
* disable auto re-registration. Note that if the registration retry | * disable auto re-registration. Note that if the registration retry | |||
* occurs because of transport failure, the first retry will be done | * occurs because of transport failure, the first retry will be done | |||
* after \a firstRetryIntervalSec seconds instead. Also note that | * after \a firstRetryIntervalSec seconds instead. Also note that | |||
* the interval will be randomized slightly by approximately +/- ten | * the interval will be randomized slightly by some seconds (specified | |||
* seconds to avoid all clients re-registering at the same time. | * in \a reg_retry_random_interval) to avoid all clients re-registering | |||
* at the same time. | ||||
* | * | |||
* See also \a firstRetryIntervalSec setting. | * See also \a firstRetryIntervalSec and \a randomRetryIntervalSec | |||
* settings. | ||||
* | * | |||
* Default: PJSUA_REG_RETRY_INTERVAL | * Default: PJSUA_REG_RETRY_INTERVAL | |||
*/ | */ | |||
unsigned retryIntervalSec; | unsigned retryIntervalSec; | |||
/** | /** | |||
* This specifies the interval for the first registration retry. The | * This specifies the interval for the first registration retry. The | |||
* registration retry is explained in \a retryIntervalSec. Note that | * registration retry is explained in \a retryIntervalSec. Note that | |||
* the value here will also be randomized by +/- ten seconds. | * the value here will also be randomized by some seconds (specified | |||
* in \a reg_retry_random_interval) to avoid all clients re-registering | ||||
* at the same time. | ||||
* | ||||
* See also \a retryIntervalSec and \a randomRetryIntervalSec settings. | ||||
* | * | |||
* Default: 0 | * Default: 0 | |||
*/ | */ | |||
unsigned firstRetryIntervalSec; | unsigned firstRetryIntervalSec; | |||
/** | /** | |||
* This specifies maximum randomized value to be added/substracted | ||||
* to/from the registration retry interval specified in \a | ||||
* reg_retry_interval and \a reg_first_retry_interval, in second. | ||||
* This is useful to avoid all clients re-registering at the same time. | ||||
* For example, if the registration retry interval is set to 100 second | ||||
s | ||||
* and this is set to 10 seconds, the actual registration retry interva | ||||
l | ||||
* will be in the range of 90 to 110 seconds. | ||||
* | ||||
* See also \a retryIntervalSec and \a firstRetryIntervalSec settings. | ||||
* | ||||
* Default: 10 | ||||
*/ | ||||
unsigned randomRetryIntervalSec; | ||||
/** | ||||
* Specify the number of seconds to refresh the client registration | * Specify the number of seconds to refresh the client registration | |||
* before the registration expires. | * before the registration expires. | |||
* | * | |||
* Default: PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH, 5 seconds | * Default: PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH, 5 seconds | |||
*/ | */ | |||
unsigned delayBeforeRefreshSec; | unsigned delayBeforeRefreshSec; | |||
/** | /** | |||
* Specify whether calls of the configured account should be dropped | * Specify whether calls of the configured account should be dropped | |||
* after registration failure and an attempt of re-registration has | * after registration failure and an attempt of re-registration has | |||
skipping to change at line 125 | skipping to change at line 146 | |||
* Default: FALSE (disabled) | * Default: FALSE (disabled) | |||
*/ | */ | |||
bool dropCallsOnFail; | bool dropCallsOnFail; | |||
/** | /** | |||
* Specify the maximum time to wait for unregistration requests to | * Specify the maximum time to wait for unregistration requests to | |||
* complete during library shutdown sequence. | * complete during library shutdown sequence. | |||
* | * | |||
* Default: PJSUA_UNREG_TIMEOUT | * Default: PJSUA_UNREG_TIMEOUT | |||
*/ | */ | |||
unsigned unregWaitSec; | unsigned unregWaitMsec; | |||
/** | /** | |||
* Specify how the registration uses the outbound and account proxy | * Specify how the registration uses the outbound and account proxy | |||
* settings. This controls if and what Route headers will appear in | * settings. This controls if and what Route headers will appear in | |||
* the REGISTER request of this account. The value is bitmask combinati on | * the REGISTER request of this account. The value is bitmask combinati on | |||
* of PJSUA_REG_USE_OUTBOUND_PROXY and PJSUA_REG_USE_ACC_PROXY bits. | * of PJSUA_REG_USE_OUTBOUND_PROXY and PJSUA_REG_USE_ACC_PROXY bits. | |||
* If the value is set to 0, the REGISTER request will not use any prox y | * If the value is set to 0, the REGISTER request will not use any prox y | |||
* (i.e. it will not have any Route headers). | * (i.e. it will not have any Route headers). | |||
* | * | |||
* Default: 3 (PJSUA_REG_USE_OUTBOUND_PROXY | PJSUA_REG_USE_ACC_PROXY) | * Default: 3 (PJSUA_REG_USE_OUTBOUND_PROXY | PJSUA_REG_USE_ACC_PROXY) | |||
End of changes. 6 change blocks. | ||||
6 lines changed or deleted | 29 lines changed or added | |||
amr_helper.h | amr_helper.h | |||
---|---|---|---|---|
/* $Id: amr_helper.h 3841 2011-10-24 09:28:13Z ming $ */ | /* $Id: amr_helper.h 4932 2014-09-29 10:26:08Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 1142 | skipping to change at line 1142 | |||
TOC = (pj_uint8_t)((*r++ & 0x03) << 4); | TOC = (pj_uint8_t)((*r++ & 0x03) << 4); | |||
TOC |= *r >> 4; | TOC |= *r >> 4; | |||
r_bitptr = 4; | r_bitptr = 4; | |||
} | } | |||
F = (pj_uint8_t)(TOC >> 5); | F = (pj_uint8_t)(TOC >> 5); | |||
FT = (pj_uint8_t)((TOC >> 1) & 0x0F); | FT = (pj_uint8_t)((TOC >> 1) & 0x0F); | |||
Q = (pj_uint8_t)(TOC & 1); | Q = (pj_uint8_t)(TOC & 1); | |||
if (FT > SID_FT && FT < 14) { | if (FT > SID_FT && FT < 14) { | |||
pj_assert(!"Invalid AMR frametype, stream may be corrupted!"); | /* Discard the whole packet (RFC4867 4.3.2) */ | |||
//pj_assert(!"Invalid AMR frametype, stream may be corrupted!"); | ||||
cnt = 0; | ||||
PJ_LOG(4, ("AMR parser", "Invalid AMR frametype, stream may be " | ||||
"corrupted!")); | ||||
break; | break; | |||
} | } | |||
if (setting->octet_aligned) { | if (setting->octet_aligned) { | |||
++r; | ++r; | |||
r_bitptr = 0; | r_bitptr = 0; | |||
} | } | |||
/* Set frame attributes */ | /* Set frame attributes */ | |||
info = (pjmedia_codec_amr_bit_info*) &frames[cnt].bit_info; | info = (pjmedia_codec_amr_bit_info*) &frames[cnt].bit_info; | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 6 lines changed or added | |||
call.hpp | call.hpp | |||
---|---|---|---|---|
/* $Id: call.hpp 4780 2014-03-06 01:02:26Z ming $ */ | /* $Id: call.hpp 4996 2015-03-18 08:25:24Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2012-2013 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2012-2013 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 89 | skipping to change at line 89 | |||
*/ | */ | |||
MathStat(); | MathStat(); | |||
/** | /** | |||
* Convert from pjsip | * Convert from pjsip | |||
*/ | */ | |||
void fromPj(const pj_math_stat &prm); | void fromPj(const pj_math_stat &prm); | |||
}; | }; | |||
/** | /** | |||
* Types of loss detected. | ||||
*/ | ||||
struct LossType | ||||
{ | ||||
unsigned burst; /**< Burst/sequential packet lost detected | ||||
*/ | ||||
unsigned random; /**< Random packet lost detected. | ||||
*/ | ||||
}; | ||||
/** | ||||
* Unidirectional RTP stream statistics. | * Unidirectional RTP stream statistics. | |||
*/ | */ | |||
struct RtcpStreamStat | struct RtcpStreamStat | |||
{ | { | |||
TimeVal update; /**< Time of last update. */ | TimeVal update; /**< Time of last update. */ | |||
unsigned updateCount;/**< Number of updates (to calculate avg) */ | unsigned updateCount;/**< Number of updates (to calculate avg) */ | |||
unsigned pkt; /**< Total number of packets */ | unsigned pkt; /**< Total number of packets */ | |||
unsigned bytes; /**< Total number of payload/bytes */ | unsigned bytes; /**< Total number of payload/bytes */ | |||
unsigned discard; /**< Total number of discarded packets. */ | unsigned discard; /**< Total number of discarded packets. */ | |||
unsigned loss; /**< Total number of packets lost */ | unsigned loss; /**< Total number of packets lost */ | |||
unsigned reorder; /**< Total number of out of order packets */ | unsigned reorder; /**< Total number of out of order packets */ | |||
unsigned dup; /**< Total number of duplicates packets */ | unsigned dup; /**< Total number of duplicates packets */ | |||
MathStat lossPeriodUsec; /**< Loss period statistics */ | MathStat lossPeriodUsec; /**< Loss period statistics */ | |||
struct { | LossType lossType; /**< Types of loss detected. | |||
unsigned burst; /**< Burst/sequential packet lost detected | */ | |||
*/ | ||||
unsigned random; /**< Random packet lost detected. | ||||
*/ | ||||
} lossType; /**< Types of loss detected. | ||||
*/ | ||||
MathStat jitterUsec; /**< Jitter statistics */ | MathStat jitterUsec; /**< Jitter statistics */ | |||
public: | public: | |||
/** | /** | |||
* Convert from pjsip | * Convert from pjsip | |||
*/ | */ | |||
void fromPj(const pjmedia_rtcp_stream_stat &prm); | void fromPj(const pjmedia_rtcp_stream_stat &prm); | |||
}; | }; | |||
skipping to change at line 240 | skipping to change at line 246 | |||
/** | /** | |||
* This structure describes a media format changed event. | * This structure describes a media format changed event. | |||
*/ | */ | |||
struct MediaFmtChangedEvent | struct MediaFmtChangedEvent | |||
{ | { | |||
unsigned newWidth; /**< The new width. */ | unsigned newWidth; /**< The new width. */ | |||
unsigned newHeight; /**< The new height. */ | unsigned newHeight; /**< The new height. */ | |||
}; | }; | |||
/** | /** | |||
* Media event data. | ||||
*/ | ||||
typedef union MediaEventData { | ||||
/** | ||||
* Media format changed event data. | ||||
*/ | ||||
MediaFmtChangedEvent fmtChanged; | ||||
/** | ||||
* Pointer to storage to user event data, if it's outside | ||||
* this struct | ||||
*/ | ||||
GenericData ptr; | ||||
} MediaEventData; | ||||
/** | ||||
* This structure describes a media event. It corresponds to the | * This structure describes a media event. It corresponds to the | |||
* pjmedia_event structure. | * pjmedia_event structure. | |||
*/ | */ | |||
struct MediaEvent | struct MediaEvent | |||
{ | { | |||
/** | /** | |||
* The event type. | * The event type. | |||
*/ | */ | |||
pjmedia_event_type type; | pjmedia_event_type type; | |||
/** | /** | |||
* Additional data/parameters about the event. The type of data | * Additional data/parameters about the event. The type of data | |||
* will be specific to the event type being reported. | * will be specific to the event type being reported. | |||
*/ | */ | |||
union { | MediaEventData data; | |||
/** | ||||
* Media format changed event data. | ||||
*/ | ||||
MediaFmtChangedEvent fmtChanged; | ||||
/** | ||||
* Pointer to storage to user event data, if it's outside | ||||
* this struct | ||||
*/ | ||||
GenericData ptr; | ||||
} data; | ||||
/** | /** | |||
* Pointer to original pjmedia_event. Only valid when the struct | * Pointer to original pjmedia_event. Only valid when the struct | |||
* is converted from PJSIP's pjmedia_event. | * is converted from PJSIP's pjmedia_event. | |||
*/ | */ | |||
void *pjMediaEvent; | void *pjMediaEvent; | |||
public: | public: | |||
/** | /** | |||
* Convert from pjsip | * Convert from pjsip | |||
skipping to change at line 404 | skipping to change at line 416 | |||
*/ | */ | |||
int audioConfSlot; | int audioConfSlot; | |||
/** | /** | |||
* The window id for incoming video, if any, or | * The window id for incoming video, if any, or | |||
* PJSUA_INVALID_ID. Only valid if the media type is video. | * PJSUA_INVALID_ID. Only valid if the media type is video. | |||
*/ | */ | |||
pjsua_vid_win_id videoIncomingWindowId; | pjsua_vid_win_id videoIncomingWindowId; | |||
/** | /** | |||
* The video window instance for incoming video. Only valid if | ||||
* videoIncomingWindowId is not PJSUA_INVALID_ID and | ||||
* the media type is video. | ||||
*/ | ||||
VideoWindow videoWindow; | ||||
/** | ||||
* The video capture device for outgoing transmission, if any, | * The video capture device for outgoing transmission, if any, | |||
* or PJMEDIA_VID_INVALID_DEV. Only valid if the media type is video. | * or PJMEDIA_VID_INVALID_DEV. Only valid if the media type is video. | |||
*/ | */ | |||
pjmedia_vid_dev_index videoCapDev; | pjmedia_vid_dev_index videoCapDev; | |||
public: | public: | |||
/** | /** | |||
* Default constructor | * Default constructor | |||
*/ | */ | |||
CallMediaInfo(); | CallMediaInfo(); | |||
End of changes. 6 change blocks. | ||||
20 lines changed or deleted | 39 lines changed or added | |||
config.h | config.h | |||
---|---|---|---|---|
/* $Id: config.h 4913 2014-09-03 08:39:58Z nanang $ */ | /* $Id: config.h 5062 2015-04-13 02:45:03Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 659 | skipping to change at line 659 | |||
* set to value lower than FD_SETSIZE. | * set to value lower than FD_SETSIZE. | |||
*/ | */ | |||
#if PJ_FD_SETSIZE_SETABLE | #if PJ_FD_SETSIZE_SETABLE | |||
/* Only override FD_SETSIZE if the value has not been set */ | /* Only override FD_SETSIZE if the value has not been set */ | |||
# ifndef FD_SETSIZE | # ifndef FD_SETSIZE | |||
# define FD_SETSIZE PJ_IOQUEUE_MAX_HANDLES | # define FD_SETSIZE PJ_IOQUEUE_MAX_HANDLES | |||
# endif | # endif | |||
#else | #else | |||
/* When FD_SETSIZE is not changeable, check if PJ_IOQUEUE_MAX_HANDLES | /* When FD_SETSIZE is not changeable, check if PJ_IOQUEUE_MAX_HANDLES | |||
* is lower than FD_SETSIZE value. | * is lower than FD_SETSIZE value. | |||
* | ||||
* Update: Not all ioqueue backends require this (such as epoll), so | ||||
* this check will be done on the ioqueue implementation itself, such a | ||||
s | ||||
* ioqueue select. | ||||
*/ | */ | |||
/* | ||||
# ifdef FD_SETSIZE | # ifdef FD_SETSIZE | |||
# if PJ_IOQUEUE_MAX_HANDLES > FD_SETSIZE | # if PJ_IOQUEUE_MAX_HANDLES > FD_SETSIZE | |||
# error "PJ_IOQUEUE_MAX_HANDLES is greater than FD_SETSIZE" | # error "PJ_IOQUEUE_MAX_HANDLES is greater than FD_SETSIZE" | |||
# endif | # endif | |||
# endif | # endif | |||
*/ | ||||
#endif | #endif | |||
/** | /** | |||
* Specify whether #pj_enum_ip_interface() function should exclude | * Specify whether #pj_enum_ip_interface() function should exclude | |||
* loopback interfaces. | * loopback interfaces. | |||
* | * | |||
* Default: 1 | * Default: 1 | |||
*/ | */ | |||
#ifndef PJ_IP_HELPER_IGNORE_LOOPBACK_IF | #ifndef PJ_IP_HELPER_IGNORE_LOOPBACK_IF | |||
# define PJ_IP_HELPER_IGNORE_LOOPBACK_IF 1 | # define PJ_IP_HELPER_IGNORE_LOOPBACK_IF 1 | |||
skipping to change at line 1151 | skipping to change at line 1157 | |||
#if !defined(PJ_THREAD_ALLOCATE_STACK) | #if !defined(PJ_THREAD_ALLOCATE_STACK) | |||
# error "PJ_THREAD_ALLOCATE_STACK should be defined in compat/os_xx.h" | # error "PJ_THREAD_ALLOCATE_STACK should be defined in compat/os_xx.h" | |||
#endif | #endif | |||
PJ_BEGIN_DECL | PJ_BEGIN_DECL | |||
/** PJLIB version major number. */ | /** PJLIB version major number. */ | |||
#define PJ_VERSION_NUM_MAJOR 2 | #define PJ_VERSION_NUM_MAJOR 2 | |||
/** PJLIB version minor number. */ | /** PJLIB version minor number. */ | |||
#define PJ_VERSION_NUM_MINOR 3 | #define PJ_VERSION_NUM_MINOR 4 | |||
/** PJLIB version revision number. */ | /** PJLIB version revision number. */ | |||
#define PJ_VERSION_NUM_REV 0 | #define PJ_VERSION_NUM_REV 0 | |||
/** | /** | |||
* Extra suffix for the version (e.g. "-trunk"), or empty for | * Extra suffix for the version (e.g. "-trunk"), or empty for | |||
* web release version. | * web release version. | |||
*/ | */ | |||
#define PJ_VERSION_NUM_EXTRA "" | #define PJ_VERSION_NUM_EXTRA "" | |||
End of changes. 5 change blocks. | ||||
2 lines changed or deleted | 9 lines changed or added | |||
config_site_sample.h | config_site_sample.h | |||
---|---|---|---|---|
skipping to change at line 318 | skipping to change at line 318 | |||
/* We have our own native CoreAudio backend */ | /* We have our own native CoreAudio backend */ | |||
#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | |||
#define PJMEDIA_AUDIO_DEV_HAS_WMME 0 | #define PJMEDIA_AUDIO_DEV_HAS_WMME 0 | |||
#define PJMEDIA_AUDIO_DEV_HAS_COREAUDIO 1 | #define PJMEDIA_AUDIO_DEV_HAS_COREAUDIO 1 | |||
/* The CoreAudio backend has built-in echo canceller! */ | /* The CoreAudio backend has built-in echo canceller! */ | |||
#define PJMEDIA_HAS_SPEEX_AEC 0 | #define PJMEDIA_HAS_SPEEX_AEC 0 | |||
/* Disable some codecs */ | /* Disable some codecs */ | |||
#define PJMEDIA_HAS_L16_CODEC 0 | #define PJMEDIA_HAS_L16_CODEC 0 | |||
#define PJMEDIA_HAS_G722_CODEC 0 | //#define PJMEDIA_HAS_G722_CODEC 0 | |||
/* Use the built-in CoreAudio's iLBC codec (yay!) */ | /* Use the built-in CoreAudio's iLBC codec (yay!) */ | |||
#define PJMEDIA_HAS_ILBC_CODEC 1 | #define PJMEDIA_HAS_ILBC_CODEC 1 | |||
#define PJMEDIA_ILBC_CODEC_USE_COREAUDIO 1 | #define PJMEDIA_ILBC_CODEC_USE_COREAUDIO 1 | |||
/* Fine tune Speex's default settings for best performance/quality */ | /* Fine tune Speex's default settings for best performance/quality */ | |||
#define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | |||
/* | /* | |||
* PJSIP settings. | * PJSIP settings. | |||
skipping to change at line 384 | skipping to change at line 384 | |||
*/ | */ | |||
/* We have our own OpenSL ES backend */ | /* We have our own OpenSL ES backend */ | |||
#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | |||
#define PJMEDIA_AUDIO_DEV_HAS_WMME 0 | #define PJMEDIA_AUDIO_DEV_HAS_WMME 0 | |||
#define PJMEDIA_AUDIO_DEV_HAS_OPENSL 0 | #define PJMEDIA_AUDIO_DEV_HAS_OPENSL 0 | |||
#define PJMEDIA_AUDIO_DEV_HAS_ANDROID_JNI 1 | #define PJMEDIA_AUDIO_DEV_HAS_ANDROID_JNI 1 | |||
/* Disable some codecs */ | /* Disable some codecs */ | |||
#define PJMEDIA_HAS_L16_CODEC 0 | #define PJMEDIA_HAS_L16_CODEC 0 | |||
#define PJMEDIA_HAS_G722_CODEC 0 | //#define PJMEDIA_HAS_G722_CODEC 0 | |||
/* Fine tune Speex's default settings for best performance/quality */ | /* Fine tune Speex's default settings for best performance/quality */ | |||
#define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | |||
/* | /* | |||
* PJSIP settings. | * PJSIP settings. | |||
*/ | */ | |||
/* Increase allowable packet size, just in case */ | /* Increase allowable packet size, just in case */ | |||
//#define PJSIP_MAX_PKT_LEN 2000 | //#define PJSIP_MAX_PKT_LEN 2000 | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||
format.h | format.h | |||
---|---|---|---|---|
/* $Id: format.h 4785 2014-03-10 09:01:18Z nanang $ */ | /* $Id: format.h 4994 2015-03-17 04:02:44Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 179 | skipping to change at line 179 | |||
/** | /** | |||
* This is planar 4:2:0/12bpp YUV format, similar to I420 or IYUV but | * This is planar 4:2:0/12bpp YUV format, similar to I420 or IYUV but | |||
* the U (Cb) and V (Cr) planes order is switched, i.e: the second plan e | * the U (Cb) and V (Cr) planes order is switched, i.e: the second plan e | |||
* contains the V (Cb) samples and the third plane contains the V (Cr) | * contains the V (Cb) samples and the third plane contains the V (Cr) | |||
* samples. | * samples. | |||
*/ | */ | |||
PJMEDIA_FORMAT_YV12 = PJMEDIA_FORMAT_PACK('Y', 'V', '1', '2' ), | PJMEDIA_FORMAT_YV12 = PJMEDIA_FORMAT_PACK('Y', 'V', '1', '2' ), | |||
/** | /** | |||
* This is planar 4:2:0/12bpp YUV format, the data can be treated as | ||||
* two planes of color components, where the first plane contains | ||||
* only the Y samples, the second plane contains interleaved | ||||
* V (Cr) - U (Cb) samples. | ||||
*/ | ||||
PJMEDIA_FORMAT_NV21 = PJMEDIA_FORMAT_PACK('N', 'V', '2', '1' | ||||
), | ||||
/** | ||||
* This is planar 4:2:2/16bpp YUV format, the data can be treated as | * This is planar 4:2:2/16bpp YUV format, the data can be treated as | |||
* three planes of color components, where the first plane contains | * three planes of color components, where the first plane contains | |||
* only the Y samples, the second plane contains only the U (Cb) sample s, | * only the Y samples, the second plane contains only the U (Cb) sample s, | |||
* and the third plane contains only the V (Cr) sample. | * and the third plane contains only the V (Cr) sample. | |||
*/ | */ | |||
PJMEDIA_FORMAT_I422 = PJMEDIA_FORMAT_PACK('I', '4', '2', '2' ), | PJMEDIA_FORMAT_I422 = PJMEDIA_FORMAT_PACK('I', '4', '2', '2' ), | |||
/** | /** | |||
* The JPEG version of planar 4:2:0/12bpp YUV format. | * The JPEG version of planar 4:2:0/12bpp YUV format. | |||
*/ | */ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 10 lines changed or added | |||
g7221.h | g7221.h | |||
---|---|---|---|---|
/* $Id: g7221.h 3553 2011-05-05 06:14:19Z nanang $ */ | /* $Id: g7221.h 5058 2015-04-09 08:15:48Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 79 | skipping to change at line 79 | |||
* - for 7kHz audio bandwidth (16kHz sampling rate): 24kbps and 32kbps, | * - for 7kHz audio bandwidth (16kHz sampling rate): 24kbps and 32kbps, | |||
* - for 14kHz audio bandwidth (32kHz sampling rate): 24kbps, 32kbps, and | * - for 14kHz audio bandwidth (32kHz sampling rate): 24kbps, 32kbps, and | |||
* 48kbps. | * 48kbps. | |||
* | * | |||
* The usage of non-standard bitrates must follow these requirements: | * The usage of non-standard bitrates must follow these requirements: | |||
* - for 7kHz audio bandwidth (16kHz sampling rate): 16000 to 32000 bps, | * - for 7kHz audio bandwidth (16kHz sampling rate): 16000 to 32000 bps, | |||
* multiplication of 400 | * multiplication of 400 | |||
* - for 14kHz audio bandwidth (32kHz sampling rate): 24000 to 48000 bps, | * - for 14kHz audio bandwidth (32kHz sampling rate): 24000 to 48000 bps, | |||
* multiplication of 400 | * multiplication of 400 | |||
* | * | |||
* The bitrate is set via <tt>param.setting.dec_fmtp</tt>, if it does not | ||||
* contain bitrate info, the codec will check <tt>param.info.avg_bps</tt>. | ||||
* | ||||
* \note | * \note | |||
* Currently only up to two non-standard modes can be enabled. | * Currently only up to two non-standard modes can be enabled. | |||
* | * | |||
* \remark | * \remark | |||
* There is a flaw in the codec manager as currently it could not | * There is a flaw in the codec manager as currently it could not | |||
* differentiate G.722.1 codecs by bitrates, hence invoking | * differentiate G.722.1 codecs by bitrates, hence invoking | |||
* #pjmedia_codec_mgr_set_default_param() may only affect a G.722.1 codec | * #pjmedia_codec_mgr_set_default_param() may only affect a G.722.1 codec | |||
* with the highest priority (or first index found in codec enumeration | * with the highest priority (or first index found in codec enumeration | |||
* when they have same priority) and invoking | * when they have same priority) and invoking | |||
* #pjmedia_codec_mgr_set_codec_priority() will set priority of all G.722.1 | * #pjmedia_codec_mgr_set_codec_priority() will set priority of all G.722.1 | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 4 lines changed or added | |||
lock.h | lock.h | |||
---|---|---|---|---|
/* $Id: lock.h 4359 2013-02-21 11:18:36Z bennylp $ */ | /* $Id: lock.h 4992 2015-03-06 06:09:22Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 212 | skipping to change at line 212 | |||
* @param cfg Optional configuration. | * @param cfg Optional configuration. | |||
* @param p_grp_lock Pointer to receive the newly created group lock. | * @param p_grp_lock Pointer to receive the newly created group lock. | |||
* | * | |||
* @return PJ_SUCCESS or the appropriate error code. | * @return PJ_SUCCESS or the appropriate error code. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pj_grp_lock_create(pj_pool_t *pool, | PJ_DECL(pj_status_t) pj_grp_lock_create(pj_pool_t *pool, | |||
const pj_grp_lock_config *cfg, | const pj_grp_lock_config *cfg, | |||
pj_grp_lock_t **p_grp_lock); | pj_grp_lock_t **p_grp_lock); | |||
/** | /** | |||
* Create a group lock object, with the specified destructor handler, to be | ||||
* called by the group lock when it is about to be destroyed. Initially the | ||||
* group lock will have reference counter of one. | ||||
* | ||||
* @param pool The group lock only uses the pool parameter to get | ||||
* the pool factory, from which it will create its own | ||||
* pool. | ||||
* @param cfg Optional configuration. | ||||
* @param member A pointer to be passed to the handler. | ||||
* @param handler The destroy handler. | ||||
* @param p_grp_lock Pointer to receive the newly created group lock. | ||||
* | ||||
* @return PJ_SUCCESS or the appropriate error code. | ||||
*/ | ||||
PJ_DECL(pj_status_t) pj_grp_lock_create_w_handler(pj_pool_t *pool, | ||||
const pj_grp_lock_config * | ||||
cfg, | ||||
void *member, | ||||
void (*handler)(void *mem | ||||
ber), | ||||
pj_grp_lock_t **p_grp_lock | ||||
); | ||||
/** | ||||
* Forcibly destroy the group lock, ignoring the reference counter value. | * Forcibly destroy the group lock, ignoring the reference counter value. | |||
* | * | |||
* @param grp_lock The group lock. | * @param grp_lock The group lock. | |||
* | * | |||
* @return PJ_SUCCESS or the appropriate error code. | * @return PJ_SUCCESS or the appropriate error code. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pj_grp_lock_destroy( pj_grp_lock_t *grp_lock); | PJ_DECL(pj_status_t) pj_grp_lock_destroy( pj_grp_lock_t *grp_lock); | |||
/** | /** | |||
* Move the contents of the old lock to the new lock and destroy the | * Move the contents of the old lock to the new lock and destroy the | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 25 lines changed or added | |||
media.hpp | media.hpp | |||
---|---|---|---|---|
/* $Id: media.hpp 4845 2014-05-19 05:51:10Z bennylp $ */ | /* $Id: media.hpp 4996 2015-03-18 08:25:24Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 1327 | skipping to change at line 1327 | |||
*/ | */ | |||
~AudDevManager(); | ~AudDevManager(); | |||
void clearAudioDevList(); | void clearAudioDevList(); | |||
int getActiveDev(bool is_capture) const throw(Error); | int getActiveDev(bool is_capture) const throw(Error); | |||
friend class Endpoint; | friend class Endpoint; | |||
}; | }; | |||
/************************************************************************* | /************************************************************************* | |||
* Video media | ||||
*/ | ||||
/** | ||||
* Representation of media coordinate. | ||||
*/ | ||||
struct MediaCoordinate | ||||
{ | ||||
int x; /**< X position of the coordinate */ | ||||
int y; /**< Y position of the coordinate */ | ||||
}; | ||||
/** | ||||
* Representation of media size. | ||||
*/ | ||||
struct MediaSize | ||||
{ | ||||
unsigned w; /**< The width. */ | ||||
unsigned h; /**< The height. */ | ||||
}; | ||||
/** | ||||
* Window handle. | ||||
*/ | ||||
typedef struct WindowHandle { | ||||
void *window; /**< Window */ | ||||
void *display; /**< Display */ | ||||
} WindowHandle; | ||||
/** | ||||
* Video window handle. | ||||
*/ | ||||
struct VideoWindowHandle | ||||
{ | ||||
/** | ||||
* The window handle type. | ||||
*/ | ||||
pjmedia_vid_dev_hwnd_type type; | ||||
/** | ||||
* The window handle. | ||||
*/ | ||||
WindowHandle handle; | ||||
}; | ||||
/** | ||||
* This structure describes video window info. | ||||
*/ | ||||
typedef struct VideoWindowInfo | ||||
{ | ||||
/** | ||||
* Flag to indicate whether this window is a native window, | ||||
* such as created by built-in preview device. If this field is | ||||
* true, only the video window handle field of this | ||||
* structure is valid. | ||||
*/ | ||||
bool isNative; | ||||
/** | ||||
* Video window handle. | ||||
*/ | ||||
VideoWindowHandle winHandle; | ||||
/** | ||||
* Renderer device ID. | ||||
*/ | ||||
int renderDeviceId; | ||||
/** | ||||
* Window show status. The window is hidden if false. | ||||
*/ | ||||
bool show; | ||||
/** | ||||
* Window position. | ||||
*/ | ||||
MediaCoordinate pos; | ||||
/** | ||||
* Window size. | ||||
*/ | ||||
MediaSize size; | ||||
} VideoWindowInfo; | ||||
/** | ||||
* Video window. | ||||
*/ | ||||
class VideoWindow | ||||
{ | ||||
public: | ||||
/** | ||||
* Constructor | ||||
*/ | ||||
VideoWindow(int win_id); | ||||
/** | ||||
* Get window info. | ||||
* | ||||
* @return video window info. | ||||
*/ | ||||
VideoWindowInfo getInfo() const throw(Error); | ||||
/** | ||||
* Show or hide window. This operation is not valid for native windows | ||||
* (VideoWindowInfo.isNative=true), on which native windowing API | ||||
* must be used instead. | ||||
* | ||||
* @param show Set to true to show the window, false to | ||||
* hide the window. | ||||
* | ||||
*/ | ||||
void Show(bool show) throw(Error); | ||||
/** | ||||
* Set video window position. This operation is not valid for native wi | ||||
ndows | ||||
* (VideoWindowInfo.isNative=true), on which native windowing API | ||||
* must be used instead. | ||||
* | ||||
* @param pos The window position. | ||||
* | ||||
*/ | ||||
void setPos(const MediaCoordinate &pos) throw(Error); | ||||
/** | ||||
* Resize window. This operation is not valid for native windows | ||||
* (VideoWindowInfo.isNative=true), on which native windowing API | ||||
* must be used instead. | ||||
* | ||||
* @param size The new window size. | ||||
* | ||||
*/ | ||||
void setSize(const MediaSize &size) throw(Error); | ||||
/** | ||||
* Rotate the video window. This function will change the video orienta | ||||
tion | ||||
* and also possibly the video window size (width and height get swappe | ||||
d). | ||||
* This operation is not valid for native windows (VideoWindowInfo.isNa | ||||
tive | ||||
* =true), on which native windowing API must be used instead. | ||||
* | ||||
* @param angle The rotation angle in degrees, must be | ||||
* multiple of 90. | ||||
* Specify positive value for clockwise rotatio | ||||
n or | ||||
* negative value for counter-clockwise rotatio | ||||
n. | ||||
*/ | ||||
void rotate(int angle) throw(Error); | ||||
/** | ||||
* Set output window. This operation is valid only when the underlying | ||||
* video device supports PJMEDIA_VIDEO_DEV_CAP_OUTPUT_WINDOW capability | ||||
AND | ||||
* allows the output window to be changed on-the-fly, otherwise Error w | ||||
ill | ||||
* be thrown. Currently it is only supported on Android. | ||||
* | ||||
* @param win The new output window. | ||||
*/ | ||||
void setWindow(const VideoWindowHandle &win) throw(Error); | ||||
private: | ||||
pjsua_vid_win_id winId; | ||||
}; | ||||
/************************************************************************* | ||||
* Codec management | * Codec management | |||
*/ | */ | |||
/** | /** | |||
* This structure describes codec information. | * This structure describes codec information. | |||
*/ | */ | |||
struct CodecInfo | struct CodecInfo | |||
{ | { | |||
/** | /** | |||
* Codec unique identification. | * Codec unique identification. | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 171 lines changed or added | |||
opengl_dev.h | opengl_dev.h | |||
---|---|---|---|---|
/* $Id: opengl_dev.h 4821 2014-04-22 05:04:43Z ming $ */ | /* $Id: opengl_dev.h 4925 2014-09-22 07:03:25Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2013-2014 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2013-2014 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 43 | skipping to change at line 43 | |||
pjmedia_vid_dev_param *param, | pjmedia_vid_dev_param *param, | |||
const pjmedia_vid_dev_cb *cb, | const pjmedia_vid_dev_cb *cb, | |||
void *user_data, | void *user_data, | |||
pjmedia_vid_dev_stream **p_vid_str m); | pjmedia_vid_dev_stream **p_vid_str m); | |||
/************************************************************************** **/ | /************************************************************************** **/ | |||
/* OpenGL buffers opaque structure. */ | /* OpenGL buffers opaque structure. */ | |||
typedef struct gl_buffers gl_buffers; | typedef struct gl_buffers gl_buffers; | |||
/* Create OpenGL buffers. */ | /* Create OpenGL buffers. */ | |||
void pjmedia_vid_dev_opengl_create_buffers(pj_pool_t *pool, | void pjmedia_vid_dev_opengl_create_buffers(pj_pool_t *pool, pj_bool_ t direct, | |||
gl_buffers **glb); | gl_buffers **glb); | |||
/* Initialize OpenGL buffers. */ | /* Initialize OpenGL buffers. */ | |||
pj_status_t pjmedia_vid_dev_opengl_init_buffers(gl_buffers *glb); | pj_status_t pjmedia_vid_dev_opengl_init_buffers(gl_buffers *glb); | |||
/* Render a texture. */ | /* Render a texture. */ | |||
pj_status_t pjmedia_vid_dev_opengl_draw(gl_buffers *glb, | pj_status_t pjmedia_vid_dev_opengl_draw(gl_buffers *glb,unsigned int width, | |||
unsigned int texture, | unsigned int height, void *pixels); | |||
unsigned int name); | ||||
/* Destroy OpenGL buffers. */ | /* Destroy OpenGL buffers. */ | |||
void pjmedia_vid_dev_opengl_destroy_buffers(gl_buffers *glb); | void pjmedia_vid_dev_opengl_destroy_buffers(gl_buffers *glb); | |||
#endif /* PJMEDIA_VIDEODEV_OPENGL_DEV_H__ */ | #endif /* PJMEDIA_VIDEODEV_OPENGL_DEV_H__ */ | |||
End of changes. 3 change blocks. | ||||
5 lines changed or deleted | 4 lines changed or added | |||
os.h | os.h | |||
---|---|---|---|---|
/* $Id: os.h 4760 2014-02-24 08:49:40Z nanang $ */ | /* $Id: os.h 5012 2015-03-22 07:50:28Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 306 | skipping to change at line 306 | |||
/** | /** | |||
* Get the current thread. | * Get the current thread. | |||
* | * | |||
* @return Thread handle of current thread. | * @return Thread handle of current thread. | |||
*/ | */ | |||
PJ_DECL(pj_thread_t*) pj_thread_this(void); | PJ_DECL(pj_thread_t*) pj_thread_this(void); | |||
/** | /** | |||
* Join thread, and block the caller thread until the specified thread exit s. | * Join thread, and block the caller thread until the specified thread exit s. | |||
* If it is called from within the thread itself, it will return immediatel | ||||
y | ||||
* with failure status. | ||||
* If the specified thread has already been dead, or it does not exist, | * If the specified thread has already been dead, or it does not exist, | |||
* the function will return immediately with successfull status. | * the function will return immediately with successful status. | |||
* | * | |||
* @param thread The thread handle. | * @param thread The thread handle. | |||
* | * | |||
* @return PJ_SUCCESS on success. | * @return PJ_SUCCESS on success. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pj_thread_join(pj_thread_t *thread); | PJ_DECL(pj_status_t) pj_thread_join(pj_thread_t *thread); | |||
/** | /** | |||
* Destroy thread and release resources allocated for the thread. | * Destroy thread and release resources allocated for the thread. | |||
* However, the memory allocated for the pj_thread_t itself will only be re leased | * However, the memory allocated for the pj_thread_t itself will only be re leased | |||
End of changes. 3 change blocks. | ||||
2 lines changed or deleted | 5 lines changed or added | |||
pjsua_internal.h | pjsua_internal.h | |||
---|---|---|---|---|
/* $Id: pjsua_internal.h 4750 2014-02-19 04:11:43Z bennylp $ */ | /* $Id: pjsua_internal.h 4986 2015-03-02 09:43:20Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 143 | skipping to change at line 143 | |||
int secure_level;/**< Signaling security level. */ | int secure_level;/**< Signaling security level. */ | |||
pjsua_call_hold_type call_hold_type; /**< How to do call hold. */ | pjsua_call_hold_type call_hold_type; /**< How to do call hold. */ | |||
pj_bool_t local_hold;/**< Flag for call-hold by local. */ | pj_bool_t local_hold;/**< Flag for call-hold by local. */ | |||
void *hold_msg; /**< Outgoing hold tx_data. */ | void *hold_msg; /**< Outgoing hold tx_data. */ | |||
unsigned med_cnt; /**< Number of media in SDP. */ | unsigned med_cnt; /**< Number of media in SDP. */ | |||
pjsua_call_media media[PJSUA_MAX_CALL_MEDIA]; /**< Array of media */ | pjsua_call_media media[PJSUA_MAX_CALL_MEDIA]; /**< Array of media */ | |||
unsigned med_prov_cnt;/**< Number of provisional media. */ | unsigned med_prov_cnt;/**< Number of provisional media. */ | |||
pjsua_call_media media_prov[PJSUA_MAX_CALL_MEDIA]; | pjsua_call_media media_prov[PJSUA_MAX_CALL_MEDIA]; | |||
/**< Array of provisional media. */ | /**< Array of provisional media. */ | |||
pj_bool_t med_update_success; | ||||
/**< Is media update successful? | ||||
*/ | ||||
pj_bool_t hanging_up;/**< Is call in the process of hangup? | ||||
*/ | ||||
int audio_idx; /**< First active audio media. */ | int audio_idx; /**< First active audio media. */ | |||
pj_mutex_t *med_ch_mutex;/**< Media channel callback's mutex. */ | pj_mutex_t *med_ch_mutex;/**< Media channel callback's mutex. */ | |||
pjsua_med_tp_state_cb med_ch_cb;/**< Media channel callback. */ | pjsua_med_tp_state_cb med_ch_cb;/**< Media channel callback. */ | |||
pjsua_med_tp_state_info med_ch_info;/**< Media channel info. */ | pjsua_med_tp_state_info med_ch_info;/**< Media channel info. */ | |||
pjsip_evsub *xfer_sub; /**< Xfer server subscription, i f this | pjsip_evsub *xfer_sub; /**< Xfer server subscription, i f this | |||
call was triggered by xfer. */ | call was triggered by xfer. */ | |||
pj_stun_nat_type rem_nat_type; /**< NAT type of remote endpoint. */ | pj_stun_nat_type rem_nat_type; /**< NAT type of remote endpoint. */ | |||
skipping to change at line 219 | skipping to change at line 222 | |||
pj_bool_t valid; /**< Is this account valid? */ | pj_bool_t valid; /**< Is this account valid? */ | |||
int index; /**< Index in accounts array. */ | int index; /**< Index in accounts array. */ | |||
pj_str_t display; /**< Display name, if any. */ | pj_str_t display; /**< Display name, if any. */ | |||
pj_str_t user_part; /**< User part of local URI. */ | pj_str_t user_part; /**< User part of local URI. */ | |||
pj_bool_t is_sips; /**< Local URI uses "sips"? */ | pj_bool_t is_sips; /**< Local URI uses "sips"? */ | |||
pj_str_t contact; /**< Our Contact header. */ | pj_str_t contact; /**< Our Contact header. */ | |||
pj_str_t reg_contact; /**< Contact header for REGISTER. | pj_str_t reg_contact; /**< Contact header for REGISTER. | |||
It may be different than acc | It may be different than acc | |||
contact if outbound is used */ | contact if outbound is used */ | |||
pj_bool_t contact_rewritten; | ||||
/**< Contact rewrite has been done? */ | ||||
pjsip_host_port via_addr; /**< Address for Via header */ | pjsip_host_port via_addr; /**< Address for Via header */ | |||
pjsip_transport *via_tp; /**< Transport associated with | pjsip_transport *via_tp; /**< Transport associated with | |||
the Via address */ | the Via address */ | |||
pj_str_t srv_domain; /**< Host part of reg server. */ | pj_str_t srv_domain; /**< Host part of reg server. */ | |||
int srv_port; /**< Port number of reg server. */ | int srv_port; /**< Port number of reg server. */ | |||
pjsip_regc *regc; /**< Client registration session. */ | pjsip_regc *regc; /**< Client registration session. */ | |||
pj_status_t reg_last_err; /**< Last registration error. */ | pj_status_t reg_last_err; /**< Last registration error. */ | |||
int reg_last_code; /**< Last status last register. */ | int reg_last_code; /**< Last status last register. */ | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 8 lines changed or added | |||
pool_alt.h | pool_alt.h | |||
---|---|---|---|---|
/* $Id: pool_alt.h 3553 2011-05-05 06:14:19Z nanang $ */ | /* $Id: pool_alt.h 5061 2015-04-10 13:19:47Z riza $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 25 | skipping to change at line 25 | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A | |||
*/ | */ | |||
#ifndef __PJ_POOL_ALT_H__ | #ifndef __PJ_POOL_ALT_H__ | |||
#define __PJ_POOL_ALT_H__ | #define __PJ_POOL_ALT_H__ | |||
#define __PJ_POOL_H__ | #define __PJ_POOL_H__ | |||
PJ_BEGIN_DECL | ||||
/** | /** | |||
* The type for function to receive callback from the pool when it is unabl e | * The type for function to receive callback from the pool when it is unabl e | |||
* to allocate memory. The elegant way to handle this condition is to throw | * to allocate memory. The elegant way to handle this condition is to throw | |||
* exception, and this is what is expected by most of this library | * exception, and this is what is expected by most of this library | |||
* components. | * components. | |||
*/ | */ | |||
typedef void pj_pool_callback(pj_pool_t *pool, pj_size_t size); | typedef void pj_pool_callback(pj_pool_t *pool, pj_size_t size); | |||
struct pj_pool_mem | struct pj_pool_mem | |||
{ | { | |||
skipping to change at line 189 | skipping to change at line 191 | |||
/* just to make it compilable */ | /* just to make it compilable */ | |||
typedef struct pj_pool_block | typedef struct pj_pool_block | |||
{ | { | |||
int dummy; | int dummy; | |||
} pj_pool_block; | } pj_pool_block; | |||
#define pj_caching_pool_init( cp, pol, mac) | #define pj_caching_pool_init( cp, pol, mac) | |||
#define pj_caching_pool_destroy(cp) | #define pj_caching_pool_destroy(cp) | |||
#define pj_pool_factory_dump(pf, detail) | #define pj_pool_factory_dump(pf, detail) | |||
PJ_END_DECL | ||||
#endif /* __PJ_POOL_ALT_H__ */ | #endif /* __PJ_POOL_ALT_H__ */ | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 5 lines changed or added | |||
print_util.h | print_util.h | |||
---|---|---|---|---|
/* $Id: print_util.h 4537 2013-06-19 06:47:43Z riza $ */ | /* $Id: print_util.h 4979 2015-02-10 03:20:04Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 23 | skipping to change at line 23 | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A | |||
*/ | */ | |||
#ifndef __PJSIP_PRINT_H__ | #ifndef __PJSIP_PRINT_H__ | |||
#define __PJSIP_PRINT_H__ | #define __PJSIP_PRINT_H__ | |||
#define copy_advance_char_check(buf,chr) \ | ||||
do { \ | ||||
if (1 >= (endbuf-buf)) return -1; \ | ||||
*buf++ = chr; \ | ||||
} while (0) | ||||
#define copy_advance_check(buf,str) \ | #define copy_advance_check(buf,str) \ | |||
do { \ | do { \ | |||
if ((str).slen >= (endbuf-buf)) return -1; \ | if ((str).slen >= (endbuf-buf)) return -1; \ | |||
pj_memcpy(buf, (str).ptr, (str).slen); \ | pj_memcpy(buf, (str).ptr, (str).slen); \ | |||
buf += (str).slen; \ | buf += (str).slen; \ | |||
} while (0) | } while (0) | |||
#define copy_advance_pair_check(buf,str1,len1,str2) \ | #define copy_advance_pair_check(buf,str1,len1,str2) \ | |||
do { \ | do { \ | |||
if (str2.slen) { \ | if (str2.slen) { \ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 7 lines changed or added | |||
sip_config.h | sip_config.h | |||
---|---|---|---|---|
/* $Id: sip_config.h 4899 2014-08-21 05:58:36Z nanang $ */ | /* $Id: sip_config.h 4924 2014-09-17 12:11:45Z riza $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 1159 | skipping to change at line 1159 | |||
* Note that this feature will have slight impact on the performance as | * Note that this feature will have slight impact on the performance as | |||
* mutex is employed in updating the list, i.e: on creation and destruction | * mutex is employed in updating the list, i.e: on creation and destruction | |||
* of transmit data. | * of transmit data. | |||
* | * | |||
* Default: 0 (no) | * Default: 0 (no) | |||
*/ | */ | |||
#ifndef PJSIP_HAS_TX_DATA_LIST | #ifndef PJSIP_HAS_TX_DATA_LIST | |||
# define PJSIP_HAS_TX_DATA_LIST 0 | # define PJSIP_HAS_TX_DATA_LIST 0 | |||
#endif | #endif | |||
/** | ||||
* Specify whether to accept INVITE/re-INVITE with unknown content type, | ||||
* by default the stack will reject this type of message as specified in | ||||
* RFC3261 section 8.2.3. | ||||
* Application that wishes to process the body could set this to PJ_TRUE, | ||||
* be informed that SDP offer/answer will still be present. | ||||
* | ||||
* Default: PJ_FALSE | ||||
*/ | ||||
#ifndef PJSIP_INV_ACCEPT_UNKNOWN_BODY | ||||
# define PJSIP_INV_ACCEPT_UNKNOWN_BODY PJ_FALSE | ||||
#endif | ||||
PJ_END_DECL | PJ_END_DECL | |||
/** | /** | |||
* @} | * @} | |||
*/ | */ | |||
#include <pj/config.h> | #include <pj/config.h> | |||
#endif /* __PJSIP_SIP_CONFIG_H__ */ | #endif /* __PJSIP_SIP_CONFIG_H__ */ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 14 lines changed or added | |||
sip_endpoint.h | sip_endpoint.h | |||
---|---|---|---|---|
/* $Id: sip_endpoint.h 4275 2012-10-04 06:11:58Z bennylp $ */ | /* $Id: sip_endpoint.h 5055 2015-04-08 10:10:44Z riza $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 390 | skipping to change at line 390 | |||
* @param resv The resolver instance to be used by the SIP | * @param resv The resolver instance to be used by the SIP | |||
* endpoint. | * endpoint. | |||
* | * | |||
* @return PJ_SUCCESS on success, or the appropriate error | * @return PJ_SUCCESS on success, or the appropriate error | |||
* code. | * code. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pjsip_endpt_set_resolver(pjsip_endpoint *endpt, | PJ_DECL(pj_status_t) pjsip_endpt_set_resolver(pjsip_endpoint *endpt, | |||
pj_dns_resolver *resv); | pj_dns_resolver *resv); | |||
/** | /** | |||
* Set the DNS external resolver implementation to use in the SIP resolver. | ||||
* | ||||
* Note that naturally when implementing its own resolver, application woul | ||||
d not | ||||
* need the internal resolver, hence this function will also destroy the | ||||
* PJLIB-UTIL DNS resolver if any (e.g: set using #pjsip_endpt_set_resolver | ||||
()). | ||||
* Application that needs it, still be able create its own instance. | ||||
* | ||||
* @param res The SIP resolver engine. | ||||
* @param ext_res The external resolver implementation callback. This arg | ||||
ument | ||||
* can be NULL to reset the whole external implementation. | ||||
* However, it is prohibited to reset individual callback. | ||||
* | ||||
* @return PJ_SUCCESS on success, or the appropriate error code. | ||||
*/ | ||||
PJ_DECL(pj_status_t) pjsip_endpt_set_ext_resolver(pjsip_endpoint *endpt, | ||||
pjsip_ext_resolver *ext_re | ||||
s); | ||||
/** | ||||
* Get the DNS resolver being used by the SIP resolver. | * Get the DNS resolver being used by the SIP resolver. | |||
* | * | |||
* @param endpt The SIP endpoint instance. | * @param endpt The SIP endpoint instance. | |||
* | * | |||
* @return The DNS resolver instance currently being used | * @return The DNS resolver instance currently being used | |||
* by the SIP endpoint. | * by the SIP endpoint. | |||
*/ | */ | |||
PJ_DECL(pj_dns_resolver*) pjsip_endpt_get_resolver(pjsip_endpoint *endpt); | PJ_DECL(pj_dns_resolver*) pjsip_endpt_get_resolver(pjsip_endpoint *endpt); | |||
/** | /** | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 23 lines changed or added | |||
sip_inv.h | sip_inv.h | |||
---|---|---|---|---|
/* $Id: sip_inv.h 4653 2013-11-19 10:18:17Z bennylp $ */ | /* $Id: sip_inv.h 4985 2015-03-02 03:04:19Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 407 | skipping to change at line 407 | |||
unsigned options; /**< Options in use. */ | unsigned options; /**< Options in use. */ | |||
pjmedia_sdp_neg *neg; /**< Negotiator. */ | pjmedia_sdp_neg *neg; /**< Negotiator. */ | |||
unsigned sdp_neg_flags; /**< SDP neg flags. */ | unsigned sdp_neg_flags; /**< SDP neg flags. */ | |||
pjsip_transaction *invite_tsx; /**< 1st invite tsx. */ | pjsip_transaction *invite_tsx; /**< 1st invite tsx. */ | |||
pjsip_tx_data *invite_req; /**< Saved invite req */ | pjsip_tx_data *invite_req; /**< Saved invite req */ | |||
pjsip_tx_data *last_answer; /**< Last INVITE resp. */ | pjsip_tx_data *last_answer; /**< Last INVITE resp. */ | |||
pjsip_tx_data *last_ack; /**< Last ACK request */ | pjsip_tx_data *last_ack; /**< Last ACK request */ | |||
pj_int32_t last_ack_cseq; /**< CSeq of last ACK */ | pj_int32_t last_ack_cseq; /**< CSeq of last ACK */ | |||
void *mod_data[PJSIP_MAX_MODULE];/**< Modules data. */ | void *mod_data[PJSIP_MAX_MODULE];/**< Modules data. */ | |||
struct pjsip_timer *timer; /**< Session Timers. */ | struct pjsip_timer *timer; /**< Session Timers. */ | |||
pj_bool_t following_fork; /**< Internal, following | ||||
forked media? | ||||
*/ | ||||
}; | }; | |||
/** | /** | |||
* This structure represents SDP information in a pjsip_rx_data. Applicatio n | * This structure represents SDP information in a pjsip_rx_data. Applicatio n | |||
* retrieve this information by calling #pjsip_rdata_get_sdp_info(). This | * retrieve this information by calling #pjsip_rdata_get_sdp_info(). This | |||
* mechanism supports multipart message body. | * mechanism supports multipart message body. | |||
*/ | */ | |||
typedef struct pjsip_rdata_sdp_info | typedef struct pjsip_rdata_sdp_info | |||
{ | { | |||
/** | /** | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 4 lines changed or added | |||
sip_resolve.h | sip_resolve.h | |||
---|---|---|---|---|
/* $Id: sip_resolve.h 3553 2011-05-05 06:14:19Z nanang $ */ | /* $Id: sip_resolve.h 5055 2015-04-08 10:10:44Z riza $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 121 | skipping to change at line 121 | |||
* - The procedure in RFC 2782 is used to select server with the same | * - The procedure in RFC 2782 is used to select server with the same | |||
* priority to load-balance the servers load. | * priority to load-balance the servers load. | |||
* - A single function (#pjsip_resolve()) performs all server resolution | * - A single function (#pjsip_resolve()) performs all server resolution | |||
* works, from resolving the SRV records to getting the actual IP addres ses | * works, from resolving the SRV records to getting the actual IP addres ses | |||
* of the servers with DNS A (or AAAA) resolution. | * of the servers with DNS A (or AAAA) resolution. | |||
* - When multiple DNS SRV records are returned, parallel DNS A (or AAAA) | * - When multiple DNS SRV records are returned, parallel DNS A (or AAAA) | |||
* queries will be issued simultaneously. | * queries will be issued simultaneously. | |||
* - The PJLIB-UTIL DNS resolver provides additional functionality such as | * - The PJLIB-UTIL DNS resolver provides additional functionality such as | |||
* response caching, query aggregation, parallel nameservers, fallback | * response caching, query aggregation, parallel nameservers, fallback | |||
* nameserver, etc., which will be described below. | * nameserver, etc., which will be described below. | |||
* - Enable application to provide its own resolver implementation. | ||||
* | * | |||
* | * | |||
* \subsection PJSIP_RESOLVE_DNS_FEATURES DNS Resolver Features | * \subsection PJSIP_RESOLVE_DNS_FEATURES DNS Resolver Features | |||
* | * | |||
* The PJSIP server resolution framework uses PJLIB-UTIL DNS resolver engin e | * The PJSIP server resolution framework uses PJLIB-UTIL DNS resolver engin e | |||
* for performing the asynchronous DNS request. The PJLIB-UTIL DNS resolver | * for performing the asynchronous DNS request. The PJLIB-UTIL DNS resolver | |||
* has some useful features, such as: | * has some useful features, such as: | |||
* - queries are asynchronous with configurable timeout, | * - queries are asynchronous with configurable timeout, | |||
* - query aggregation to combine multiple pending queries to the same | * - query aggregation to combine multiple pending queries to the same | |||
* DNS target into a single DNS request (to save message round-trip and | * DNS target into a single DNS request (to save message round-trip and | |||
skipping to change at line 158 | skipping to change at line 159 | |||
* | * | |||
* Application can enable the SRV resolver by creating the PJLIB-UTIL DNS | * Application can enable the SRV resolver by creating the PJLIB-UTIL DNS | |||
* resolver with #pjsip_endpt_create_resolver(), configure the | * resolver with #pjsip_endpt_create_resolver(), configure the | |||
* nameservers of the PJLIB-UTIL DNS resolver object by calling | * nameservers of the PJLIB-UTIL DNS resolver object by calling | |||
* pj_dns_resolver_set_ns() function, and pass the DNS resolver object to | * pj_dns_resolver_set_ns() function, and pass the DNS resolver object to | |||
* #pjsip_resolver_set_resolver() function. | * #pjsip_resolver_set_resolver() function. | |||
* | * | |||
* Once the resolver is set, it will be used automatically by PJSIP everyti me | * Once the resolver is set, it will be used automatically by PJSIP everyti me | |||
* PJSIP needs to send SIP request/response messages. | * PJSIP needs to send SIP request/response messages. | |||
* | * | |||
* \section PJSIP_RESOLVE_EXT_RESOLVER External Resolver | ||||
* | ||||
* As an alternative to enabling PJLIB-UTIL DNS resolver, application can | ||||
* provide its own resolver implementation by defining the callback in | ||||
* pjsip_ext_resolver and pass the callback to | ||||
* #pjsip_resolver_set_ext_resolver() function. Please note that if the | ||||
* implementation needs feature from PJLIB-UTL DNS resolver, it has to crea | ||||
te | ||||
* its own PJLIB-UTL DNS resolver instance. | ||||
* | * | |||
* \section PJSIP_RESOLVE_REFERENCE Reference | * \section PJSIP_RESOLVE_REFERENCE Reference | |||
* | * | |||
* Reference: | * Reference: | |||
* - RFC 2782: A DNS RR for specifying the location of services (DNS SRV) | * - RFC 2782: A DNS RR for specifying the location of services (DNS SRV) | |||
* - RFC 3263: Locating SIP Servers | * - RFC 3263: Locating SIP Servers | |||
*/ | */ | |||
/** | /** | |||
* The server addresses returned by the resolver. | * The server addresses returned by the resolver. | |||
skipping to change at line 209 | skipping to change at line 218 | |||
* @param status The status of the operation, which is zero on success. | * @param status The status of the operation, which is zero on success. | |||
* @param token The token that was associated with the job when application | * @param token The token that was associated with the job when application | |||
* call the resolve function. | * call the resolve function. | |||
* @param addr The addresses resolved by the operation. | * @param addr The addresses resolved by the operation. | |||
*/ | */ | |||
typedef void pjsip_resolver_callback(pj_status_t status, | typedef void pjsip_resolver_callback(pj_status_t status, | |||
void *token, | void *token, | |||
const struct pjsip_server_addresses *ad dr); | const struct pjsip_server_addresses *ad dr); | |||
/** | /** | |||
* This structure describes application callback to receive various event f | ||||
rom | ||||
* the SIP resolver engine. Application can use this for its own resolver | ||||
* implementation. | ||||
*/ | ||||
typedef struct pjsip_ext_resolver | ||||
{ | ||||
/** | ||||
* Notify application when the resolution should begin. | ||||
* | ||||
* @param resolver The resolver engine. | ||||
* @param pool The pool to allocate resolver job. | ||||
* @param target The target specification to be resolved. | ||||
* @param token A user defined token to be passed back to callb | ||||
ack | ||||
* function. | ||||
* @param cb The callback function. | ||||
*/ | ||||
void (*resolve) (pjsip_resolver_t *resolver, pj_pool_t *pool, | ||||
const pjsip_host_info *target, void *token, | ||||
pjsip_resolver_callback *cb); | ||||
} pjsip_ext_resolver; | ||||
/** | ||||
* Create SIP resolver engine. Note that this function is normally called | * Create SIP resolver engine. Note that this function is normally called | |||
* internally by pjsip_endpoint instance. | * internally by pjsip_endpoint instance. | |||
* | * | |||
* @param pool Pool to allocate memory from. | * @param pool Pool to allocate memory from. | |||
* @param p_res Pointer to receive SIP resolver instance. | * @param p_res Pointer to receive SIP resolver instance. | |||
* | * | |||
* @return PJ_SUCCESS when resolver can be successfully created. | * @return PJ_SUCCESS when resolver can be successfully created. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pjsip_resolver_create(pj_pool_t *pool, | PJ_DECL(pj_status_t) pjsip_resolver_create(pj_pool_t *pool, | |||
pjsip_resolver_t **p_res); | pjsip_resolver_t **p_res); | |||
skipping to change at line 239 | skipping to change at line 271 | |||
* @param dns_res The DNS resolver instance to be used by the SIP resolve r. | * @param dns_res The DNS resolver instance to be used by the SIP resolve r. | |||
* This argument can be NULL to reset the internal DNS | * This argument can be NULL to reset the internal DNS | |||
* instance. | * instance. | |||
* | * | |||
* @return PJ_SUCCESS on success, or the appropriate error code. | * @return PJ_SUCCESS on success, or the appropriate error code. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pjsip_resolver_set_resolver(pjsip_resolver_t *res, | PJ_DECL(pj_status_t) pjsip_resolver_set_resolver(pjsip_resolver_t *res, | |||
pj_dns_resolver *dns_res); | pj_dns_resolver *dns_res); | |||
/** | /** | |||
* Set the DNS external resolver implementation to use in the SIP resolver | ||||
* engine. Naturally when implementing its own resolver, application would | ||||
not | ||||
* need the internal resolver, hence this function will also destroy the | ||||
* PJLIB-UTIL DNS resolver if any (e.g: set using | ||||
* #pjsip_resolver_set_resolver()). Application that needs it, still be abl | ||||
e | ||||
* create its own instance. | ||||
* | ||||
* Note that application normally will use #pjsip_endpt_set_ext_resolver() | ||||
* instead since it does not normally have access to the SIP resolver insta | ||||
nce. | ||||
* | ||||
* @param res The SIP resolver engine. | ||||
* @param ext_res The external resolver implementation callback. This arg | ||||
ument | ||||
* can be NULL to reset the whole external implementation. | ||||
* However, it is prohibited to reset individual callback. | ||||
* | ||||
* @return PJ_SUCCESS on success, or the appropriate error code. | ||||
*/ | ||||
PJ_DECL(pj_status_t) pjsip_resolver_set_ext_resolver( | ||||
pjsip_resolver_t *res, | ||||
pjsip_ext_resolver *ext_res) | ||||
; | ||||
/** | ||||
* Get the DNS resolver instance of the SIP resolver engine. | * Get the DNS resolver instance of the SIP resolver engine. | |||
* | * | |||
* Note that application normally will use #pjsip_endpt_get_resolver() inst ead | * Note that application normally will use #pjsip_endpt_get_resolver() inst ead | |||
* since it does not normally have access to the SIP resolver instance. | * since it does not normally have access to the SIP resolver instance. | |||
* | * | |||
* @param res The SIP resolver engine. | * @param res The SIP resolver engine. | |||
* | * | |||
* @return The DNS resolver instance (may be NULL) | * @return The DNS resolver instance (may be NULL) | |||
*/ | */ | |||
PJ_DECL(pj_dns_resolver*) pjsip_resolver_get_resolver(pjsip_resolver_t *res ); | PJ_DECL(pj_dns_resolver*) pjsip_resolver_get_resolver(pjsip_resolver_t *res ); | |||
End of changes. 5 change blocks. | ||||
1 lines changed or deleted | 63 lines changed or added | |||
sip_transport_tls.h | sip_transport_tls.h | |||
---|---|---|---|---|
/* $Id: sip_transport_tls.h 4860 2014-06-19 05:07:12Z riza $ */ | /* $Id: sip_transport_tls.h 4973 2015-01-15 06:55:02Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 56 | skipping to change at line 56 | |||
* The default SSL method to be used by PJSIP. | * The default SSL method to be used by PJSIP. | |||
* Default is PJSIP_TLSV1_METHOD | * Default is PJSIP_TLSV1_METHOD | |||
*/ | */ | |||
#ifndef PJSIP_SSL_DEFAULT_METHOD | #ifndef PJSIP_SSL_DEFAULT_METHOD | |||
# define PJSIP_SSL_DEFAULT_METHOD PJSIP_TLSV1_METHOD | # define PJSIP_SSL_DEFAULT_METHOD PJSIP_TLSV1_METHOD | |||
#endif | #endif | |||
/** SSL protocol method constants. */ | /** SSL protocol method constants. */ | |||
typedef enum pjsip_ssl_method | typedef enum pjsip_ssl_method | |||
{ | { | |||
PJSIP_SSL_UNSPECIFIED_METHOD= 0, /**< Default protocol method. */ | PJSIP_SSL_UNSPECIFIED_METHOD = 0, /**< Default protocol method. */ | |||
PJSIP_TLSV1_METHOD = 31, /**< Use SSLv1 method. */ | PJSIP_SSLV2_METHOD = 20, /**< Use SSLv2 method. */ | |||
PJSIP_SSLV2_METHOD = 20, /**< Use SSLv2 method. */ | PJSIP_SSLV3_METHOD = 30, /**< Use SSLv3 method. */ | |||
PJSIP_SSLV3_METHOD = 30, /**< Use SSLv3 method. */ | PJSIP_TLSV1_METHOD = 31, /**< Use TLSv1 method. */ | |||
PJSIP_SSLV23_METHOD = 23 /**< Use SSLv23 method. | PJSIP_TLSV1_1_METHOD = 32, /**< Use TLSv1_1 method. */ | |||
*/ | PJSIP_TLSV1_2_METHOD = 33, /**< Use TLSv1_2 method. */ | |||
PJSIP_SSLV23_METHOD = 23, /**< Use SSLv23 method. | ||||
*/ | ||||
} pjsip_ssl_method; | } pjsip_ssl_method; | |||
/** | /** | |||
* The default enabled SSL proto to be used. | ||||
* Default is all protocol above TLSv1 (TLSv1 & TLS v1.1 & TLS v1.2). | ||||
*/ | ||||
#ifndef PJSIP_SSL_DEFAULT_PROTO | ||||
# define PJSIP_SSL_DEFAULT_PROTO (PJ_SSL_SOCK_PROTO_TLS1 | \ | ||||
PJ_SSL_SOCK_PROTO_TLS1_1 | \ | ||||
PJ_SSL_SOCK_PROTO_TLS1_2) | ||||
#endif | ||||
/** | ||||
* TLS transport settings. | * TLS transport settings. | |||
*/ | */ | |||
typedef struct pjsip_tls_setting | typedef struct pjsip_tls_setting | |||
{ | { | |||
/** | /** | |||
* Certificate of Authority (CA) list file. | * Certificate of Authority (CA) list file. | |||
*/ | */ | |||
pj_str_t ca_list_file; | pj_str_t ca_list_file; | |||
/** | /** | |||
* Certificate of Authority (CA) list directory path. | ||||
*/ | ||||
pj_str_t ca_list_path; | ||||
/** | ||||
* Public endpoint certificate file, which will be used as client- | * Public endpoint certificate file, which will be used as client- | |||
* side certificate for outgoing TLS connection, and server-side | * side certificate for outgoing TLS connection, and server-side | |||
* certificate for incoming TLS connection. | * certificate for incoming TLS connection. | |||
*/ | */ | |||
pj_str_t cert_file; | pj_str_t cert_file; | |||
/** | /** | |||
* Optional private key of the endpoint certificate to be used. | * Optional private key of the endpoint certificate to be used. | |||
*/ | */ | |||
pj_str_t privkey_file; | pj_str_t privkey_file; | |||
/** | /** | |||
* Password to open private key. | * Password to open private key. | |||
*/ | */ | |||
pj_str_t password; | pj_str_t password; | |||
/** | /** | |||
* TLS protocol method from #pjsip_ssl_method, which can be: | * TLS protocol method from #pjsip_ssl_method. In the future, this fiel | |||
* - PJSIP_SSL_UNSPECIFIED_METHOD(0): default (which will use | d | |||
* PJSIP_SSL_DEFAULT_METHOD) | * might be deprecated in favor of <b>proto</b> field. For now, this fi | |||
* - PJSIP_TLSV1_METHOD(1): TLSv1 | eld | |||
* - PJSIP_SSLV2_METHOD(2): SSLv2 | * is only applicable only when <b>proto</b> field is set to zero. | |||
* - PJSIP_SSLV3_METHOD(3): SSL3 | ||||
* - PJSIP_SSLV23_METHOD(23): SSL23 | ||||
* | * | |||
* Default is PJSIP_SSL_UNSPECIFIED_METHOD (0), which in turn will | * Default is PJSIP_SSL_UNSPECIFIED_METHOD (0), which in turn will | |||
* use PJSIP_SSL_DEFAULT_METHOD, which default value is | * use PJSIP_SSL_DEFAULT_METHOD, which default value is PJSIP_TLSV1_MET | |||
* PJSIP_TLSV1_METHOD. | HOD. | |||
*/ | ||||
pjsip_ssl_method method; | ||||
/** | ||||
* TLS protocol type from #pj_ssl_sock_proto. Use this field to enable | ||||
* specific protocol type. Use bitwise OR operation to combine the prot | ||||
ocol | ||||
* type. | ||||
* | ||||
* Default is PJSIP_SSL_DEFAULT_PROTO. | ||||
*/ | */ | |||
int method; | pj_uint32_t proto; | |||
/** | /** | |||
* Number of ciphers contained in the specified cipher preference. | * Number of ciphers contained in the specified cipher preference. | |||
* If this is set to zero, then default cipher list of the backend | * If this is set to zero, then default cipher list of the backend | |||
* will be used. | * will be used. | |||
* | * | |||
* Default: 0 (zero). | * Default: 0 (zero). | |||
*/ | */ | |||
unsigned ciphers_num; | unsigned ciphers_num; | |||
skipping to change at line 249 | skipping to change at line 270 | |||
* | * | |||
* @param tls_opt The TLS setting to be initialized. | * @param tls_opt The TLS setting to be initialized. | |||
*/ | */ | |||
PJ_INLINE(void) pjsip_tls_setting_default(pjsip_tls_setting *tls_opt) | PJ_INLINE(void) pjsip_tls_setting_default(pjsip_tls_setting *tls_opt) | |||
{ | { | |||
pj_memset(tls_opt, 0, sizeof(*tls_opt)); | pj_memset(tls_opt, 0, sizeof(*tls_opt)); | |||
tls_opt->reuse_addr = PJSIP_TLS_TRANSPORT_REUSEADDR; | tls_opt->reuse_addr = PJSIP_TLS_TRANSPORT_REUSEADDR; | |||
tls_opt->qos_type = PJ_QOS_TYPE_BEST_EFFORT; | tls_opt->qos_type = PJ_QOS_TYPE_BEST_EFFORT; | |||
tls_opt->qos_ignore_error = PJ_TRUE; | tls_opt->qos_ignore_error = PJ_TRUE; | |||
tls_opt->sockopt_ignore_error = PJ_TRUE; | tls_opt->sockopt_ignore_error = PJ_TRUE; | |||
tls_opt->proto = PJSIP_SSL_DEFAULT_PROTO; | ||||
} | } | |||
/** | /** | |||
* Copy TLS setting. | * Copy TLS setting. | |||
* | * | |||
* @param pool The pool to duplicate strings etc. | * @param pool The pool to duplicate strings etc. | |||
* @param dst Destination structure. | * @param dst Destination structure. | |||
* @param src Source structure. | * @param src Source structure. | |||
*/ | */ | |||
PJ_INLINE(void) pjsip_tls_setting_copy(pj_pool_t *pool, | PJ_INLINE(void) pjsip_tls_setting_copy(pj_pool_t *pool, | |||
End of changes. 8 change blocks. | ||||
17 lines changed or deleted | 43 lines changed or added | |||
sip_util.h | sip_util.h | |||
---|---|---|---|---|
/* $Id: sip_util.h 4888 2014-08-18 08:54:43Z bennylp $ */ | /* $Id: sip_util.h 5059 2015-04-10 09:14:54Z riza $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 764 | skipping to change at line 764 | |||
/** | /** | |||
* Send outgoing request and initiate UAC transaction for the request. | * Send outgoing request and initiate UAC transaction for the request. | |||
* This is an auxiliary function to be used by application to send arbitrar y | * This is an auxiliary function to be used by application to send arbitrar y | |||
* requests outside a dialog. To send a request within a dialog, applicatio n | * requests outside a dialog. To send a request within a dialog, applicatio n | |||
* should use #pjsip_dlg_send_request instead. | * should use #pjsip_dlg_send_request instead. | |||
* | * | |||
* @param endpt The endpoint instance. | * @param endpt The endpoint instance. | |||
* @param tdata The transmit data to be sent. | * @param tdata The transmit data to be sent. | |||
* @param timeout Optional timeout for final response to be received, or -1 | * @param timeout Optional timeout for final response to be received, or -1 | |||
* if the transaction should not have a timeout restriction . | * if the transaction should not have a timeout restriction . | |||
* The value is in miliseconds. | * The value is in miliseconds. Note that this is not | |||
* implemented yet, so application needs to use its own tim | ||||
er | ||||
* to handle timeout. | ||||
* @param token Optional token to be associated with the transac tion, and | * @param token Optional token to be associated with the transac tion, and | |||
* to be passed to the callback. | * to be passed to the callback. | |||
* @param cb Optional callback to be called when the transaction has | * @param cb Optional callback to be called when the transaction has | |||
* received a final response. The callback will be called w ith | * received a final response. The callback will be called w ith | |||
* the previously registered token and the event that trigg ers | * the previously registered token and the event that trigg ers | |||
* the completion of the transaction. | * the completion of the transaction. | |||
* | * | |||
* @return PJ_SUCCESS, or the appropriate error code. | * @return PJ_SUCCESS, or the appropriate error code. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pjsip_endpt_send_request( pjsip_endpoint *endpt, | PJ_DECL(pj_status_t) pjsip_endpt_send_request( pjsip_endpoint *endpt, | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 5 lines changed or added | |||
siptypes.hpp | siptypes.hpp | |||
---|---|---|---|---|
/* $Id: siptypes.hpp 4704 2014-01-16 05:30:46Z ming $ */ | /* $Id: siptypes.hpp 4968 2014-12-18 04:40:35Z riza $ */ | |||
/* | /* | |||
* Copyright (C) 2032 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2032 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 147 | skipping to change at line 147 | |||
* Optional private key of the endpoint certificate to be used. | * Optional private key of the endpoint certificate to be used. | |||
*/ | */ | |||
string privKeyFile; | string privKeyFile; | |||
/** | /** | |||
* Password to open private key. | * Password to open private key. | |||
*/ | */ | |||
string password; | string password; | |||
/** | /** | |||
* TLS protocol method from pjsip_ssl_method. | * TLS protocol method from #pjsip_ssl_method. In the future, this fiel | |||
d | ||||
* might be deprecated in favor of <b>proto</b> field. For now, this fi | ||||
eld | ||||
* is only applicable only when <b>proto</b> field is set to zero. | ||||
* | * | |||
* Default is PJSIP_SSL_UNSPECIFIED_METHOD (0), which in turn will | * Default is PJSIP_SSL_UNSPECIFIED_METHOD (0), which in turn will | |||
* use PJSIP_SSL_DEFAULT_METHOD, which default value is | * use PJSIP_SSL_DEFAULT_METHOD, which default value is PJSIP_TLSV1_MET | |||
* PJSIP_TLSV1_METHOD. | HOD. | |||
*/ | */ | |||
pjsip_ssl_method method; | pjsip_ssl_method method; | |||
/** | /** | |||
* TLS protocol type from #pj_ssl_sock_proto. Use this field to enable | ||||
* specific protocol type. Use bitwise OR operation to combine the prot | ||||
ocol | ||||
* type. | ||||
* | ||||
* Default is PJSIP_SSL_DEFAULT_PROTO. | ||||
*/ | ||||
unsigned proto; | ||||
/** | ||||
* Ciphers and order preference. The Endpoint::utilSslGetAvailableCiphe rs() | * Ciphers and order preference. The Endpoint::utilSslGetAvailableCiphe rs() | |||
* can be used to check the available ciphers supported by backend. | * can be used to check the available ciphers supported by backend. | |||
* If the array is empty, then default cipher list of the backend | * If the array is empty, then default cipher list of the backend | |||
* will be used. | * will be used. | |||
*/ | */ | |||
IntVector ciphers; | IntVector ciphers; | |||
/** | /** | |||
* Specifies TLS transport behavior on the server TLS certificate | * Specifies TLS transport behavior on the server TLS certificate | |||
* verification result: | * verification result: | |||
skipping to change at line 525 | skipping to change at line 535 | |||
/** | /** | |||
* This structure describes timer event. | * This structure describes timer event. | |||
*/ | */ | |||
struct TimerEvent | struct TimerEvent | |||
{ | { | |||
TimerEntry entry; /**< The timer entry. */ | TimerEntry entry; /**< The timer entry. */ | |||
}; | }; | |||
/** | /** | |||
* This structure describes transaction state event source. | ||||
*/ | ||||
struct TsxStateEventSrc | ||||
{ | ||||
SipRxData rdata; /**< The incoming message. */ | ||||
SipTxData tdata; /**< The outgoing message. */ | ||||
TimerEntry timer; /**< The timer. */ | ||||
pj_status_t status; /**< Transport error status. */ | ||||
GenericData data; /**< Generic data. */ | ||||
}; | ||||
/** | ||||
* This structure describes transaction state changed event. | * This structure describes transaction state changed event. | |||
*/ | */ | |||
struct TsxStateEvent | struct TsxStateEvent | |||
{ | { | |||
struct | TsxStateEventSrc src; /**< Event source. */ | |||
{ | ||||
SipRxData rdata; /**< The incoming message. */ | ||||
SipTxData tdata; /**< The outgoing message. */ | ||||
TimerEntry timer; /**< The timer. */ | ||||
pj_status_t status; /**< Transport error status. */ | ||||
GenericData data; /**< Generic data. */ | ||||
} src; /**< Event source. */ | ||||
SipTransaction tsx; /**< The transaction. */ | SipTransaction tsx; /**< The transaction. */ | |||
pjsip_tsx_state_e prevState; /**< Previous state. */ | pjsip_tsx_state_e prevState; /**< Previous state. */ | |||
pjsip_event_id_e type; /**< Type of event source: | pjsip_event_id_e type; /**< Type of event source: | |||
* - PJSIP_EVENT_TX_MSG | * - PJSIP_EVENT_TX_MSG | |||
* - PJSIP_EVENT_RX_MSG, | * - PJSIP_EVENT_RX_MSG, | |||
* - PJSIP_EVENT_TRANSPORT_ERRO R | * - PJSIP_EVENT_TRANSPORT_ERRO R | |||
* - PJSIP_EVENT_TIMER | * - PJSIP_EVENT_TIMER | |||
* - PJSIP_EVENT_USER | * - PJSIP_EVENT_USER | |||
*/ | */ | |||
}; | }; | |||
skipping to change at line 585 | skipping to change at line 600 | |||
*/ | */ | |||
struct UserEvent | struct UserEvent | |||
{ | { | |||
GenericData user1; /**< User data 1. */ | GenericData user1; /**< User data 1. */ | |||
GenericData user2; /**< User data 2. */ | GenericData user2; /**< User data 2. */ | |||
GenericData user3; /**< User data 3. */ | GenericData user3; /**< User data 3. */ | |||
GenericData user4; /**< User data 4. */ | GenericData user4; /**< User data 4. */ | |||
}; | }; | |||
/** | /** | |||
* The event body. | ||||
*/ | ||||
struct SipEventBody | ||||
{ | ||||
/** | ||||
* Timer event. | ||||
*/ | ||||
TimerEvent timer; | ||||
/** | ||||
* Transaction state has changed event. | ||||
*/ | ||||
TsxStateEvent tsxState; | ||||
/** | ||||
* Message transmission event. | ||||
*/ | ||||
TxMsgEvent txMsg; | ||||
/** | ||||
* Transmission error event. | ||||
*/ | ||||
TxErrorEvent txError; | ||||
/** | ||||
* Message arrival event. | ||||
*/ | ||||
RxMsgEvent rxMsg; | ||||
/** | ||||
* User event. | ||||
*/ | ||||
UserEvent user; | ||||
}; | ||||
/** | ||||
* This structure describe event descriptor to fully identify a SIP event. It | * This structure describe event descriptor to fully identify a SIP event. It | |||
* corresponds to the pjsip_event structure in PJSIP library. | * corresponds to the pjsip_event structure in PJSIP library. | |||
*/ | */ | |||
struct SipEvent | struct SipEvent | |||
{ | { | |||
/** | /** | |||
* The event type, can be any value of \b pjsip_event_id_e. | * The event type, can be any value of \b pjsip_event_id_e. | |||
*/ | */ | |||
pjsip_event_id_e type; | pjsip_event_id_e type; | |||
/** | /** | |||
* The event body, which fields depends on the event type. | * The event body, which fields depends on the event type. | |||
*/ | */ | |||
struct | SipEventBody body; | |||
{ | ||||
/** | ||||
* Timer event. | ||||
*/ | ||||
TimerEvent timer; | ||||
/** | ||||
* Transaction state has changed event. | ||||
*/ | ||||
TsxStateEvent tsxState; | ||||
/** | ||||
* Message transmission event. | ||||
*/ | ||||
TxMsgEvent txMsg; | ||||
/** | ||||
* Transmission error event. | ||||
*/ | ||||
TxErrorEvent txError; | ||||
/** | ||||
* Message arrival event. | ||||
*/ | ||||
RxMsgEvent rxMsg; | ||||
/** | ||||
* User event. | ||||
*/ | ||||
UserEvent user; | ||||
} body; | ||||
/** | /** | |||
* Pointer to its original pjsip_event. Only valid when the struct is | * Pointer to its original pjsip_event. Only valid when the struct is | |||
* constructed from PJSIP's pjsip_event. | * constructed from PJSIP's pjsip_event. | |||
*/ | */ | |||
void *pjEvent; | void *pjEvent; | |||
public: | public: | |||
/** | /** | |||
* Default constructor. | * Default constructor. | |||
End of changes. 8 change blocks. | ||||
45 lines changed or deleted | 69 lines changed or added | |||
sound_port.h | sound_port.h | |||
---|---|---|---|---|
/* $Id: sound_port.h 4082 2012-04-24 13:09:14Z bennylp $ */ | /* $Id: sound_port.h 4982 2015-02-11 05:15:29Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 99 | skipping to change at line 99 | |||
/** | /** | |||
* Sound port creation options. | * Sound port creation options. | |||
*/ | */ | |||
unsigned options; | unsigned options; | |||
/** | /** | |||
* Echo cancellation options/flags. | * Echo cancellation options/flags. | |||
*/ | */ | |||
unsigned ec_options; | unsigned ec_options; | |||
/** | ||||
* Arbitrary user data for playback and record preview callbacks below. | ||||
*/ | ||||
void *user_data; | ||||
/** | ||||
* Optional callback for audio frame preview right before queued to | ||||
* the speaker. | ||||
* Notes: | ||||
* - application MUST NOT block or perform long operation in the callba | ||||
ck | ||||
* as the callback may be executed in sound device thread | ||||
* - when using software echo cancellation, application MUST NOT modify | ||||
* the audio data from within the callback, otherwise the echo cancel | ||||
ler | ||||
* will not work properly. | ||||
* - the return value of the callback will be ignored | ||||
*/ | ||||
pjmedia_aud_play_cb on_play_frame; | ||||
/** | ||||
* Optional callback for audio frame preview recorded from the micropho | ||||
ne | ||||
* before being processed by any media component such as software echo | ||||
* canceller. | ||||
* Notes: | ||||
* - application MUST NOT block or perform long operation in the callba | ||||
ck | ||||
* as the callback may be executed in sound device thread | ||||
* - when using software echo cancellation, application MUST NOT modify | ||||
* the audio data from within the callback, otherwise the echo cancel | ||||
ler | ||||
* will not work properly. | ||||
* - the return value of the callback will be ignored | ||||
*/ | ||||
pjmedia_aud_rec_cb on_rec_frame; | ||||
} pjmedia_snd_port_param; | } pjmedia_snd_port_param; | |||
/** | /** | |||
* Initialize pjmedia_snd_port_param with default values. | * Initialize pjmedia_snd_port_param with default values. | |||
* | * | |||
* @param prm The parameter. | * @param prm The parameter. | |||
*/ | */ | |||
PJ_DECL(void) pjmedia_snd_port_param_default(pjmedia_snd_port_param *prm); | PJ_DECL(void) pjmedia_snd_port_param_default(pjmedia_snd_port_param *prm); | |||
/** | /** | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 38 lines changed or added | |||
ssl_sock.h | ssl_sock.h | |||
---|---|---|---|---|
/* $Id: ssl_sock.h 4862 2014-06-19 09:42:02Z nanang $ */ | /* $Id: ssl_sock.h 4973 2015-01-15 06:55:02Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 200 | skipping to change at line 200 | |||
* @return PJ_SUCCESS when successful. | * @return PJ_SUCCESS when successful. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pj_ssl_cert_load_from_files(pj_pool_t *pool, | PJ_DECL(pj_status_t) pj_ssl_cert_load_from_files(pj_pool_t *pool, | |||
const pj_str_t *CA_file, | const pj_str_t *CA_file, | |||
const pj_str_t *cert_file, | const pj_str_t *cert_file, | |||
const pj_str_t *privkey_fil e, | const pj_str_t *privkey_fil e, | |||
const pj_str_t *privkey_pas s, | const pj_str_t *privkey_pas s, | |||
pj_ssl_cert_t **p_cert); | pj_ssl_cert_t **p_cert); | |||
/** | /** | |||
* Create credential from files. | ||||
* | ||||
* This is the same as pj_ssl_cert_load_from_files() but also | ||||
* accepts an additional param CA_path to load CA certificates from | ||||
* a directory. | ||||
* | ||||
* @param CA_file The file of trusted CA list. | ||||
* @param CA_path The path to a directory of trusted CA list. | ||||
* @param cert_file The file of certificate. | ||||
* @param privkey_file The file of private key. | ||||
* @param privkey_pass The password of private key, if any. | ||||
* @param p_cert Pointer to credential instance to be created. | ||||
* | ||||
* @return PJ_SUCCESS when successful. | ||||
*/ | ||||
PJ_DECL(pj_status_t) pj_ssl_cert_load_from_files2( | ||||
pj_pool_t *pool, | ||||
const pj_str_t *CA_file, | ||||
const pj_str_t *CA_path, | ||||
const pj_str_t *cert_file, | ||||
const pj_str_t *privkey_file | ||||
, | ||||
const pj_str_t *privkey_pass | ||||
, | ||||
pj_ssl_cert_t **p_cert); | ||||
/** | ||||
* Dump SSL certificate info. | * Dump SSL certificate info. | |||
* | * | |||
* @param ci The certificate info. | * @param ci The certificate info. | |||
* @param indent String for left indentation. | * @param indent String for left indentation. | |||
* @param buf The buffer where certificate info will be printed on . | * @param buf The buffer where certificate info will be printed on . | |||
* @param buf_size The buffer size. | * @param buf_size The buffer size. | |||
* | * | |||
* @return The length of the dump result, or -1 when buffer siz e | * @return The length of the dump result, or -1 when buffer siz e | |||
* is not sufficient. | * is not sufficient. | |||
*/ | */ | |||
skipping to change at line 475 | skipping to change at line 500 | |||
* @return Application may destroy the secure socket in the | * @return Application may destroy the secure socket in the | |||
* callback and return PJ_FALSE here. | * callback and return PJ_FALSE here. | |||
*/ | */ | |||
pj_bool_t (*on_connect_complete)(pj_ssl_sock_t *ssock, | pj_bool_t (*on_connect_complete)(pj_ssl_sock_t *ssock, | |||
pj_status_t status); | pj_status_t status); | |||
} pj_ssl_sock_cb; | } pj_ssl_sock_cb; | |||
/** | /** | |||
* Enumeration of secure socket protocol types. | * Enumeration of secure socket protocol types. | |||
* This can be combined using bitwise OR operation. | ||||
*/ | */ | |||
typedef enum pj_ssl_sock_proto | typedef enum pj_ssl_sock_proto | |||
{ | { | |||
PJ_SSL_SOCK_PROTO_DEFAULT, /**< Default protocol of backend. */ | /** | |||
PJ_SSL_SOCK_PROTO_TLS1, /**< TLSv1.0 protocol. */ | * Default protocol of backend. | |||
PJ_SSL_SOCK_PROTO_SSL3, /**< SSLv3.0 protocol. */ | */ | |||
PJ_SSL_SOCK_PROTO_SSL23, /**< SSLv3.0 but can roll back to | PJ_SSL_SOCK_PROTO_DEFAULT = 0, | |||
SSLv2.0. */ | ||||
PJ_SSL_SOCK_PROTO_SSL2, /**< SSLv2.0 protocol. */ | /** | |||
PJ_SSL_SOCK_PROTO_DTLS1 /**< DTLSv1.0 protocol. */ | * SSLv2.0 protocol. | |||
*/ | ||||
PJ_SSL_SOCK_PROTO_SSL2 = (1 << 0), | ||||
/** | ||||
* SSLv3.0 protocol. | ||||
*/ | ||||
PJ_SSL_SOCK_PROTO_SSL3 = (1 << 1), | ||||
/** | ||||
* TLSv1.0 protocol. | ||||
*/ | ||||
PJ_SSL_SOCK_PROTO_TLS1 = (1 << 2), | ||||
/** | ||||
* TLSv1.1 protocol. | ||||
*/ | ||||
PJ_SSL_SOCK_PROTO_TLS1_1 = (1 << 3), | ||||
/** | ||||
* TLSv1.2 protocol. | ||||
*/ | ||||
PJ_SSL_SOCK_PROTO_TLS1_2 = (1 << 4), | ||||
/** | ||||
* Certain backend implementation e.g:OpenSSL, has feature to enable al | ||||
l | ||||
* protocol. | ||||
*/ | ||||
PJ_SSL_SOCK_PROTO_SSL23 = (1 << 16) - 1, | ||||
/** | ||||
* DTLSv1.0 protocol. | ||||
*/ | ||||
PJ_SSL_SOCK_PROTO_DTLS1 = (1 << 16), | ||||
} pj_ssl_sock_proto; | } pj_ssl_sock_proto; | |||
/** | /** | |||
* Definition of secure socket info structure. | * Definition of secure socket info structure. | |||
*/ | */ | |||
typedef struct pj_ssl_sock_info | typedef struct pj_ssl_sock_info | |||
{ | { | |||
/** | /** | |||
* Describes whether secure socket connection is established, i.e: TLS/ SSL | * Describes whether secure socket connection is established, i.e: TLS/ SSL | |||
* handshaking has been done successfully. | * handshaking has been done successfully. | |||
*/ | */ | |||
pj_bool_t established; | pj_bool_t established; | |||
/** | /** | |||
* Describes secure socket protocol being used. | * Describes secure socket protocol being used, see #pj_ssl_sock_proto. | |||
* Use bitwise OR operation to combine the protocol type. | ||||
*/ | */ | |||
pj_ssl_sock_proto proto; | pj_uint32_t proto; | |||
/** | /** | |||
* Describes cipher suite being used, this will only be set when connec tion | * Describes cipher suite being used, this will only be set when connec tion | |||
* is established. | * is established. | |||
*/ | */ | |||
pj_ssl_cipher cipher; | pj_ssl_cipher cipher; | |||
/** | /** | |||
* Describes local address. | * Describes local address. | |||
*/ | */ | |||
skipping to change at line 600 | skipping to change at line 661 | |||
* Specify secure socket callbacks, see #pj_ssl_sock_cb. | * Specify secure socket callbacks, see #pj_ssl_sock_cb. | |||
*/ | */ | |||
pj_ssl_sock_cb cb; | pj_ssl_sock_cb cb; | |||
/** | /** | |||
* Specify secure socket user data. | * Specify secure socket user data. | |||
*/ | */ | |||
void *user_data; | void *user_data; | |||
/** | /** | |||
* Specify security protocol to use, see #pj_ssl_sock_proto. | * Specify security protocol to use, see #pj_ssl_sock_proto. Use bitwis | |||
e OR | ||||
* operation to combine the protocol type. | ||||
* | * | |||
* Default is PJ_SSL_SOCK_PROTO_DEFAULT. | * Default is PJ_SSL_SOCK_PROTO_DEFAULT. | |||
*/ | */ | |||
pj_ssl_sock_proto proto; | pj_uint32_t proto; | |||
/** | /** | |||
* Number of concurrent asynchronous operations that is to be supported | * Number of concurrent asynchronous operations that is to be supported | |||
* by the secure socket. This value only affects socket receive and | * by the secure socket. This value only affects socket receive and | |||
* accept operations -- the secure socket will issue one or more | * accept operations -- the secure socket will issue one or more | |||
* asynchronous read and accept operations based on the value of this | * asynchronous read and accept operations based on the value of this | |||
* field. Setting this field to more than one will allow more than one | * field. Setting this field to more than one will allow more than one | |||
* incoming data or incoming connections to be processed simultaneously | * incoming data or incoming connections to be processed simultaneously | |||
* on multiprocessor systems, when the ioqueue is polled by more than | * on multiprocessor systems, when the ioqueue is polled by more than | |||
* one threads. | * one threads. | |||
End of changes. 8 change blocks. | ||||
12 lines changed or deleted | 78 lines changed or added | |||
stun_transaction.h | stun_transaction.h | |||
---|---|---|---|---|
/* $Id: stun_transaction.h 4360 2013-02-21 11:26:35Z bennylp $ */ | /* $Id: stun_transaction.h 4983 2015-02-13 11:34:26Z ming $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org> | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
skipping to change at line 159 | skipping to change at line 159 | |||
* @param delay The delay interval before on_destroy() callb ack | * @param delay The delay interval before on_destroy() callb ack | |||
* is called. | * is called. | |||
* | * | |||
* @return PJ_SUCCESS on success, or the appropriate error code . | * @return PJ_SUCCESS on success, or the appropriate error code . | |||
*/ | */ | |||
PJ_DECL(pj_status_t) | PJ_DECL(pj_status_t) | |||
pj_stun_client_tsx_schedule_destroy(pj_stun_client_tsx *tsx, | pj_stun_client_tsx_schedule_destroy(pj_stun_client_tsx *tsx, | |||
const pj_time_val *delay); | const pj_time_val *delay); | |||
/** | /** | |||
* Destroy the STUN transaction immediately after the transaction is comple | ||||
te. | ||||
* Application normally calls this function in the on_complete() callback. | ||||
* | ||||
* @param tsx The STUN transaction. | ||||
* | ||||
* @return PJ_SUCCESS on success, or the appropriate error code | ||||
. | ||||
*/ | ||||
PJ_DECL(pj_status_t) pj_stun_client_tsx_destroy(pj_stun_client_tsx *tsx); | ||||
/** | ||||
* Stop the client transaction. | * Stop the client transaction. | |||
* | * | |||
* @param tsx The STUN transaction. | * @param tsx The STUN transaction. | |||
* | * | |||
* @return PJ_SUCCESS on success or PJ_EINVAL if the parameter | * @return PJ_SUCCESS on success or PJ_EINVAL if the parameter | |||
* is NULL. | * is NULL. | |||
*/ | */ | |||
PJ_DECL(pj_status_t) pj_stun_client_tsx_stop(pj_stun_client_tsx *tsx); | PJ_DECL(pj_status_t) pj_stun_client_tsx_stop(pj_stun_client_tsx *tsx); | |||
/** | /** | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 13 lines changed or added | |||
videodev.h | videodev.h | |||
---|---|---|---|---|
/* $Id: videodev.h 4704 2014-01-16 05:30:46Z ming $ */ | /* $Id: videodev.h 4994 2015-03-17 04:02:44Z nanang $ */ | |||
/* | /* | |||
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | * the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
skipping to change at line 60 | skipping to change at line 60 | |||
typedef enum pjmedia_vid_dev_hwnd_type | typedef enum pjmedia_vid_dev_hwnd_type | |||
{ | { | |||
/** | /** | |||
* Type none. | * Type none. | |||
*/ | */ | |||
PJMEDIA_VID_DEV_HWND_TYPE_NONE, | PJMEDIA_VID_DEV_HWND_TYPE_NONE, | |||
/** | /** | |||
* Native window handle on Windows. | * Native window handle on Windows. | |||
*/ | */ | |||
PJMEDIA_VID_DEV_HWND_TYPE_WINDOWS | PJMEDIA_VID_DEV_HWND_TYPE_WINDOWS, | |||
/** | ||||
* Native view on iOS. | ||||
*/ | ||||
PJMEDIA_VID_DEV_HWND_TYPE_IOS, | ||||
/** | ||||
* Native window handle on Android. | ||||
*/ | ||||
PJMEDIA_VID_DEV_HWND_TYPE_ANDROID | ||||
} pjmedia_vid_dev_hwnd_type; | } pjmedia_vid_dev_hwnd_type; | |||
/** | /** | |||
* Type for window handle. | * Type for window handle. | |||
*/ | */ | |||
typedef struct pjmedia_vid_dev_hwnd | typedef struct pjmedia_vid_dev_hwnd | |||
{ | { | |||
/** | /** | |||
* The window handle type. | * The window handle type. | |||
skipping to change at line 92 | skipping to change at line 102 | |||
struct { | struct { | |||
void *window; /**< Window */ | void *window; /**< Window */ | |||
void *display; /**< Display */ | void *display; /**< Display */ | |||
} x11; | } x11; | |||
struct { | struct { | |||
void *window; /**< Window */ | void *window; /**< Window */ | |||
} cocoa; | } cocoa; | |||
struct { | struct { | |||
void *window; /**< Window */ | void *window; /**< Window */ | |||
} ios; | } ios; | |||
struct { | ||||
void *window; /**< Native window */ | ||||
} android; | ||||
void *window; | void *window; | |||
} info; | } info; | |||
} pjmedia_vid_dev_hwnd; | } pjmedia_vid_dev_hwnd; | |||
/** | /** | |||
* Parameter for switching device with PJMEDIA_VID_DEV_CAP_SWITCH capabilit y. | * Parameter for switching device with PJMEDIA_VID_DEV_CAP_SWITCH capabilit y. | |||
* Initialize this with pjmedia_vid_dev_switch_param_default() | * Initialize this with pjmedia_vid_dev_switch_param_default() | |||
*/ | */ | |||
typedef struct pjmedia_vid_dev_switch_param | typedef struct pjmedia_vid_dev_switch_param | |||
skipping to change at line 218 | skipping to change at line 231 | |||
* PJ_TRUE or PJ_FALSE. | * PJ_TRUE or PJ_FALSE. | |||
*/ | */ | |||
PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE = 32, | PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE = 32, | |||
/** | /** | |||
* Support for native preview capability in capture devices. Value is | * Support for native preview capability in capture devices. Value is | |||
* pj_bool_t. With native preview, capture device can be instructed to | * pj_bool_t. With native preview, capture device can be instructed to | |||
* show or hide a preview window showing video directly from the camera | * show or hide a preview window showing video directly from the camera | |||
* by setting this capability to PJ_TRUE or PJ_FALSE. Once the preview | * by setting this capability to PJ_TRUE or PJ_FALSE. Once the preview | |||
* is started, application may use PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW | * is started, application may use PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW | |||
* capability to query the vidow window. | * capability to query the video window. | |||
* | * | |||
* The value of this capability is a pj_bool_t containing boolean | * The value of this capability is a pj_bool_t containing boolean | |||
* PJ_TRUE or PJ_FALSE. | * PJ_TRUE or PJ_FALSE. | |||
*/ | */ | |||
PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW = 64, | PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW = 64, | |||
/** | /** | |||
* Support for changing video orientation in renderer and querying | * Support for changing video orientation in renderer and querying | |||
* video orientation info in capture. Changing video orientation in | * video orientation info in capture. Changing video orientation in | |||
* a renderer will potentially affect the size of render window, | * a renderer will potentially affect the size of render window, | |||
End of changes. 4 change blocks. | ||||
3 lines changed or deleted | 16 lines changed or added | |||