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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/