| audiodev.h | | audiodev.h | |
|
| /* $Id: audiodev.h 2506 2009-03-12 18:11:37Z bennylp $ */ | | /* $Id: audiodev.h 3174 2010-05-17 12:51:06Z ming $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 201 | | skipping to change at line 201 | |
| */ | | */ | |
| typedef enum pjmedia_aud_dev_route | | typedef enum pjmedia_aud_dev_route | |
| { | | { | |
| /** Default route. */ | | /** Default route. */ | |
| PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0, | | PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0, | |
| | | | |
| /** Route to loudspeaker */ | | /** Route to loudspeaker */ | |
| PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1, | | PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1, | |
| | | | |
| /** Route to earpiece */ | | /** Route to earpiece */ | |
|
| PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2 | | PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2, | |
| | | | |
| | | /** Route to paired Bluetooth device */ | |
| | | PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH = 4 | |
| | | | |
| } pjmedia_aud_dev_route; | | } pjmedia_aud_dev_route; | |
| | | | |
| /** | | /** | |
| * Device information structure returned by #pjmedia_aud_dev_get_info(). | | * Device information structure returned by #pjmedia_aud_dev_get_info(). | |
| */ | | */ | |
| typedef struct pjmedia_aud_dev_info | | typedef struct pjmedia_aud_dev_info | |
| { | | { | |
| /** | | /** | |
| * The device name | | * The device name | |
| | | | |
| skipping to change at line 424 | | skipping to change at line 427 | |
| pj_bool_t cng_enabled; | | pj_bool_t cng_enabled; | |
| | | | |
| } pjmedia_aud_param; | | } pjmedia_aud_param; | |
| | | | |
| /** Forward declaration for pjmedia_aud_stream */ | | /** Forward declaration for pjmedia_aud_stream */ | |
| typedef struct pjmedia_aud_stream pjmedia_aud_stream; | | typedef struct pjmedia_aud_stream pjmedia_aud_stream; | |
| | | | |
| /** Forward declaration for audio device factory */ | | /** Forward declaration for audio device factory */ | |
| typedef struct pjmedia_aud_dev_factory pjmedia_aud_dev_factory; | | typedef struct pjmedia_aud_dev_factory pjmedia_aud_dev_factory; | |
| | | | |
|
| | | /* typedef for factory creation function */ | |
| | | typedef pjmedia_aud_dev_factory* | |
| | | (*pjmedia_aud_dev_factory_create_func_ptr)(pj_pool_factory*); | |
| | | | |
| /** | | /** | |
| * Get string info for the specified capability. | | * Get string info for the specified capability. | |
| * | | * | |
| * @param cap The capability ID. | | * @param cap The capability ID. | |
| * @param p_desc Optional pointer which will be filled with longer | | * @param p_desc Optional pointer which will be filled with longer | |
| * description about the capability. | | * description about the capability. | |
| * | | * | |
| * @return Capability name. | | * @return Capability name. | |
| */ | | */ | |
| PJ_DECL(const char*) pjmedia_aud_dev_cap_name(pjmedia_aud_dev_cap cap, | | PJ_DECL(const char*) pjmedia_aud_dev_cap_name(pjmedia_aud_dev_cap cap, | |
| | | | |
| skipping to change at line 501 | | skipping to change at line 508 | |
| * registered in the audio subsystem. Note that currently opened audio stre
ams | | * registered in the audio subsystem. Note that currently opened audio stre
ams | |
| * may or may not be closed, depending on the implementation of the audio | | * may or may not be closed, depending on the implementation of the audio | |
| * device factories. | | * device factories. | |
| * | | * | |
| * @return PJ_SUCCESS on successful operation or the appropriat
e | | * @return PJ_SUCCESS on successful operation or the appropriat
e | |
| * error code. | | * error code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_aud_subsys_shutdown(void); | | PJ_DECL(pj_status_t) pjmedia_aud_subsys_shutdown(void); | |
| | | | |
| /** | | /** | |
|
| | | * Register a supported audio device factory to the audio subsystem. This | |
| | | * function can only be called after calling #pjmedia_aud_subsys_init(). | |
| | | * | |
| | | * @param adf The audio device factory. | |
| | | * | |
| | | * @return PJ_SUCCESS on successful operation or the appropriat | |
| | | e | |
| | | * error code. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) | |
| | | pjmedia_aud_register_factory(pjmedia_aud_dev_factory_create_func_ptr adf); | |
| | | | |
| | | /** | |
| | | * Unregister an audio device factory from the audio subsystem. This | |
| | | * function can only be called after calling #pjmedia_aud_subsys_init(). | |
| | | * Devices from this factory will be unlisted. If a device from this factor | |
| | | y | |
| | | * is currently in use, then the behavior is undefined. | |
| | | * | |
| | | * @param adf The audio device factory. | |
| | | * | |
| | | * @return PJ_SUCCESS on successful operation or the appropriat | |
| | | e | |
| | | * error code. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) | |
| | | pjmedia_aud_unregister_factory(pjmedia_aud_dev_factory_create_func_ptr adf) | |
| | | ; | |
| | | | |
| | | /** | |
| * Get the number of sound devices installed in the system. | | * Get the number of sound devices installed in the system. | |
| * | | * | |
| * @return The number of sound devices installed in the system. | | * @return The number of sound devices installed in the system. | |
| */ | | */ | |
| PJ_DECL(unsigned) pjmedia_aud_dev_count(void); | | PJ_DECL(unsigned) pjmedia_aud_dev_count(void); | |
| | | | |
| /** | | /** | |
| * Get device information. | | * Get device information. | |
| * | | * | |
| * @param id The audio device ID. | | * @param id The audio device ID. | |
| | | | |
End of changes. 4 change blocks. |
| 2 lines changed or deleted | | 39 lines changed or added | |
|
| codec.h | | codec.h | |
|
| /* $Id: codec.h 3146 2010-04-26 13:57:28Z nanang $ */ | | /* $Id: codec.h 3199 2010-06-07 05:23:56Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 196 | | skipping to change at line 196 | |
| | | | |
| /** | | /** | |
| * Standard RTP static payload types, as defined by RFC 3551. | | * Standard RTP static payload types, as defined by RFC 3551. | |
| * The header file <pjmedia-codec/types.h> also declares dynamic payload | | * The header file <pjmedia-codec/types.h> also declares dynamic payload | |
| * type numbers that are used by PJMEDIA when advertising the capability | | * type numbers that are used by PJMEDIA when advertising the capability | |
| * for example in SDP message. | | * for example in SDP message. | |
| */ | | */ | |
| enum pjmedia_rtp_pt | | enum pjmedia_rtp_pt | |
| { | | { | |
| PJMEDIA_RTP_PT_PCMU = 0, /**< audio PCMU
*/ | | PJMEDIA_RTP_PT_PCMU = 0, /**< audio PCMU
*/ | |
|
| | | PJMEDIA_RTP_PT_G721 = 2, /**< audio G721 (old def for G726-32)
*/ | |
| PJMEDIA_RTP_PT_GSM = 3, /**< audio GSM
*/ | | PJMEDIA_RTP_PT_GSM = 3, /**< audio GSM
*/ | |
| PJMEDIA_RTP_PT_G723 = 4, /**< audio G723
*/ | | PJMEDIA_RTP_PT_G723 = 4, /**< audio G723
*/ | |
| PJMEDIA_RTP_PT_DVI4_8K = 5, /**< audio DVI4 8KHz
*/ | | PJMEDIA_RTP_PT_DVI4_8K = 5, /**< audio DVI4 8KHz
*/ | |
| PJMEDIA_RTP_PT_DVI4_16K = 6, /**< audio DVI4 16Khz
*/ | | PJMEDIA_RTP_PT_DVI4_16K = 6, /**< audio DVI4 16Khz
*/ | |
| PJMEDIA_RTP_PT_LPC = 7, /**< audio LPC
*/ | | PJMEDIA_RTP_PT_LPC = 7, /**< audio LPC
*/ | |
| PJMEDIA_RTP_PT_PCMA = 8, /**< audio PCMA
*/ | | PJMEDIA_RTP_PT_PCMA = 8, /**< audio PCMA
*/ | |
| PJMEDIA_RTP_PT_G722 = 9, /**< audio G722
*/ | | PJMEDIA_RTP_PT_G722 = 9, /**< audio G722
*/ | |
| PJMEDIA_RTP_PT_L16_2 = 10, /**< audio 16bit linear 44.1KHz stereo
*/ | | PJMEDIA_RTP_PT_L16_2 = 10, /**< audio 16bit linear 44.1KHz stereo
*/ | |
| PJMEDIA_RTP_PT_L16_1 = 11, /**< audio 16bit linear 44.1KHz mono
*/ | | PJMEDIA_RTP_PT_L16_1 = 11, /**< audio 16bit linear 44.1KHz mono
*/ | |
| PJMEDIA_RTP_PT_QCELP = 12, /**< audio QCELP
*/ | | PJMEDIA_RTP_PT_QCELP = 12, /**< audio QCELP
*/ | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 2 lines changed or added | |
|
| config.h | | config.h | |
|
| /* $Id: config.h 3066 2010-01-20 19:42:46Z bennylp $ */ | | /* $Id: config.h 3182 2010-05-19 06:07:40Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 382 | | skipping to change at line 382 | |
| #ifndef PJ_LOG_MAX_LEVEL | | #ifndef PJ_LOG_MAX_LEVEL | |
| # define PJ_LOG_MAX_LEVEL 5 | | # define PJ_LOG_MAX_LEVEL 5 | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
| * Maximum message size that can be sent to output device for each call | | * Maximum message size that can be sent to output device for each call | |
| * to PJ_LOG(). If the message size is longer than this value, it will be c
ut. | | * to PJ_LOG(). If the message size is longer than this value, it will be c
ut. | |
| * This may affect the stack usage, depending whether PJ_LOG_USE_STACK_BUFF
ER | | * This may affect the stack usage, depending whether PJ_LOG_USE_STACK_BUFF
ER | |
| * flag is set. | | * flag is set. | |
| * | | * | |
|
| * Default: 2000 | | * Default: 4000 | |
| */ | | */ | |
| #ifndef PJ_LOG_MAX_SIZE | | #ifndef PJ_LOG_MAX_SIZE | |
|
| # define PJ_LOG_MAX_SIZE 2000 | | # define PJ_LOG_MAX_SIZE 4000 | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
| * Log buffer. | | * Log buffer. | |
| * Does the log get the buffer from the stack? (default is yes). | | * Does the log get the buffer from the stack? (default is yes). | |
| * If the value is set to NO, then the buffer will be taken from static | | * If the value is set to NO, then the buffer will be taken from static | |
| * buffer, which in this case will make the log function non-reentrant. | | * buffer, which in this case will make the log function non-reentrant. | |
| * | | * | |
| * Default: 1 | | * Default: 1 | |
| */ | | */ | |
| | | | |
End of changes. 3 change blocks. |
| 3 lines changed or deleted | | 3 lines changed or added | |
|
| config_site_sample.h | | config_site_sample.h | |
| | | | |
| skipping to change at line 171 | | skipping to change at line 171 | |
| */ | | */ | |
| #define PJMEDIA_SOUND_BUFFER_COUNT 32 | | #define PJMEDIA_SOUND_BUFFER_COUNT 32 | |
| | | | |
| /* | | /* | |
| * PJSIP settings. | | * PJSIP settings. | |
| */ | | */ | |
| | | | |
| /* Disable safe module access, since we don't use multithreading */ | | /* Disable safe module access, since we don't use multithreading */ | |
| #define PJSIP_SAFE_MODULE 0 | | #define PJSIP_SAFE_MODULE 0 | |
| | | | |
|
| /* Increase allowable packet size, just in case */ | | /* Use large enough packet size */ | |
| #define PJSIP_MAX_PKT_LEN 2000 | | #define PJSIP_MAX_PKT_LEN 2000 | |
| | | | |
| /* Symbian has problem with too many large blocks */ | | /* Symbian has problem with too many large blocks */ | |
| #define PJSIP_POOL_LEN_ENDPT 1000 | | #define PJSIP_POOL_LEN_ENDPT 1000 | |
| #define PJSIP_POOL_INC_ENDPT 1000 | | #define PJSIP_POOL_INC_ENDPT 1000 | |
| #define PJSIP_POOL_RDATA_LEN 2000 | | #define PJSIP_POOL_RDATA_LEN 2000 | |
| #define PJSIP_POOL_RDATA_INC 2000 | | #define PJSIP_POOL_RDATA_INC 2000 | |
| #define PJSIP_POOL_LEN_TDATA 2000 | | #define PJSIP_POOL_LEN_TDATA 2000 | |
| #define PJSIP_POOL_INC_TDATA 512 | | #define PJSIP_POOL_INC_TDATA 512 | |
| #define PJSIP_POOL_LEN_UA 2000 | | #define PJSIP_POOL_LEN_UA 2000 | |
| | | | |
| skipping to change at line 292 | | skipping to change at line 292 | |
| /* Only PCMA and PCMU are supported by WMME-direct */ | | /* Only PCMA and PCMU are supported by WMME-direct */ | |
| #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 1 | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 1 | |
| #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1 | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1 | |
| #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR 0 | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR 0 | |
| #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 0 | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 0 | |
| #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC 0 | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC 0 | |
| | | | |
| #endif | | #endif | |
| | | | |
| /* | | /* | |
|
| | | * iPhone sample settings. | |
| | | */ | |
| | | #if PJ_CONFIG_IPHONE | |
| | | /* | |
| | | * PJLIB settings. | |
| | | */ | |
| | | | |
| | | /* Disable floating point support */ | |
| | | #define PJ_HAS_FLOATING_POINT 0 | |
| | | | |
| | | /* | |
| | | * PJMEDIA settings | |
| | | */ | |
| | | | |
| | | /* We have our own native CoreAudio backend */ | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_WMME 0 | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_COREAUDIO 1 | |
| | | | |
| | | /* The CoreAudio backend has built-in echo canceller! */ | |
| | | #define PJMEDIA_HAS_SPEEX_AEC 0 | |
| | | | |
| | | /* Disable some codecs */ | |
| | | #define PJMEDIA_HAS_L16_CODEC 0 | |
| | | #define PJMEDIA_HAS_ILBC_CODEC 0 | |
| | | #define PJMEDIA_HAS_G722_CODEC 0 | |
| | | | |
| | | /* Fine tune Speex's default settings for best performance/quality */ | |
| | | #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | |
| | | | |
| | | /* | |
| | | * PJSIP settings. | |
| | | */ | |
| | | | |
| | | /* Increase allowable packet size, just in case */ | |
| | | //#define PJSIP_MAX_PKT_LEN 2000 | |
| | | | |
| | | /* | |
| | | * PJSUA settings. | |
| | | */ | |
| | | | |
| | | /* Default codec quality, previously was set to 5, however it is now | |
| | | * set to 4 to make sure pjsua instantiates resampler with small filter | |
| | | . | |
| | | */ | |
| | | #define PJSUA_DEFAULT_CODEC_QUALITY 4 | |
| | | | |
| | | /* Set maximum number of dialog/transaction/calls to minimum */ | |
| | | #define PJSIP_MAX_TSX_COUNT 31 | |
| | | #define PJSIP_MAX_DIALOG_COUNT 31 | |
| | | #define PJSUA_MAX_CALLS 4 | |
| | | | |
| | | /* Other pjsua settings */ | |
| | | #define PJSUA_MAX_ACC 4 | |
| | | #define PJSUA_MAX_PLAYERS 4 | |
| | | #define PJSUA_MAX_RECORDERS 4 | |
| | | #define PJSUA_MAX_CONF_PORTS (PJSUA_MAX_CALLS+2*PJSUA_MAX | |
| | | _PLAYERS) | |
| | | #define PJSUA_MAX_BUDDIES 32 | |
| | | | |
| | | #endif | |
| | | | |
| | | /* | |
| * Minimum size | | * Minimum size | |
| */ | | */ | |
| #ifdef PJ_CONFIG_MINIMAL_SIZE | | #ifdef PJ_CONFIG_MINIMAL_SIZE | |
| | | | |
| # undef PJ_OS_HAS_CHECK_STACK | | # undef PJ_OS_HAS_CHECK_STACK | |
| # define PJ_OS_HAS_CHECK_STACK 0 | | # define PJ_OS_HAS_CHECK_STACK 0 | |
| # define PJ_LOG_MAX_LEVEL 0 | | # define PJ_LOG_MAX_LEVEL 0 | |
| # define PJ_ENABLE_EXTRA_CHECK 0 | | # define PJ_ENABLE_EXTRA_CHECK 0 | |
| # define PJ_HAS_ERROR_STRING 0 | | # define PJ_HAS_ERROR_STRING 0 | |
| # undef PJ_IOQUEUE_MAX_HANDLES | | # undef PJ_IOQUEUE_MAX_HANDLES | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 64 lines changed or added | |
|
| g722.h | | g722.h | |
|
| /* $Id: g722.h 3083 2010-01-29 15:51:09Z nanang $ */ | | /* $Id: g722.h 3202 2010-06-11 13:38:42Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 78 | | skipping to change at line 78 | |
| PJ_DECL(pj_status_t) pjmedia_codec_g722_init(pjmedia_endpt *endpt); | | PJ_DECL(pj_status_t) pjmedia_codec_g722_init(pjmedia_endpt *endpt); | |
| | | | |
| /** | | /** | |
| * Unregister G.722 codec factory from pjmedia endpoint and cleanup | | * Unregister G.722 codec factory from pjmedia endpoint and cleanup | |
| * resources allocated by the factory. | | * resources allocated by the factory. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_codec_g722_deinit(void); | | PJ_DECL(pj_status_t) pjmedia_codec_g722_deinit(void); | |
| | | | |
|
| | | /** | |
| | | * Set the G.722 codec encoder and decoder level adjustment. | |
| | | * If the value is non-zero, then PCM input samples to the encoder will | |
| | | * be shifted right by this value, and similarly PCM output samples from | |
| | | * the decoder will be shifted left by this value. | |
| | | * | |
| | | * Default value is PJMEDIA_G722_DEFAULT_PCM_SHIFT. | |
| | | * | |
| | | * @param val The value | |
| | | * | |
| | | * @return PJ_SUCCESS on success. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_codec_g722_set_pcm_shift(unsigned val); | |
| | | | |
| PJ_END_DECL | | PJ_END_DECL | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| #endif /* __PJMEDIA_CODEC_G722_H__ */ | | #endif /* __PJMEDIA_CODEC_G722_H__ */ | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 15 lines changed or added | |
|
| g7221.h | | g7221.h | |
|
| /* $Id: g7221.h 3083 2010-01-29 15:51:09Z nanang $ */ | | /* $Id: g7221.h 3263 2010-08-11 07:18:08Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 131 | | skipping to change at line 131 | |
| PJ_DECL(pj_status_t) pjmedia_codec_g7221_set_mode(unsigned sample_rate, | | PJ_DECL(pj_status_t) pjmedia_codec_g7221_set_mode(unsigned sample_rate, | |
| unsigned bitrate, | | unsigned bitrate, | |
| pj_bool_t enabled); | | pj_bool_t enabled); | |
| | | | |
| /** | | /** | |
| * Set the G.722.1 codec encoder and decoder level adjustment. | | * Set the G.722.1 codec encoder and decoder level adjustment. | |
| * If the value is non-zero, then PCM input samples to the encoder will | | * If the value is non-zero, then PCM input samples to the encoder will | |
| * be shifted right by this value, and similarly PCM output samples from | | * be shifted right by this value, and similarly PCM output samples from | |
| * the decoder will be shifted left by this value. | | * the decoder will be shifted left by this value. | |
| * | | * | |
|
| | | * \note | |
| | | * This function is also applicable for G722.1 implementation with IPP | |
| | | * back-end. | |
| | | * | |
| * Default value is PJMEDIA_G7221_DEFAULT_PCM_SHIFT. | | * Default value is PJMEDIA_G7221_DEFAULT_PCM_SHIFT. | |
| * | | * | |
| * @param val The value | | * @param val The value | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_codec_g7221_set_pcm_shift(int val); | | PJ_DECL(pj_status_t) pjmedia_codec_g7221_set_pcm_shift(int val); | |
| | | | |
| /** | | /** | |
| * Unregister G.722.1 codecs factory from pjmedia endpoint. | | * Unregister G.722.1 codecs factory from pjmedia endpoint. | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 5 lines changed or added | |
|
| http_client.h | | http_client.h | |
|
| /* $Id: http_client.h 3089 2010-02-05 16:03:29Z ming $ */ | | /* $Id: http_client.h 3227 2010-06-29 13:43:05Z ming $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2010 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2010 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 217 | | skipping to change at line 217 | |
| | | | |
| /** | | /** | |
| * This callback is called when the HTTP request is completed. | | * This callback is called when the HTTP request is completed. | |
| * If the callback on_data_read() is specified, the variable | | * If the callback on_data_read() is specified, the variable | |
| * response->data will be set to NULL, otherwise it will | | * response->data will be set to NULL, otherwise it will | |
| * contain the complete data. Response data is allocated from | | * contain the complete data. Response data is allocated from | |
| * pj_http_req's internal memory pool so the data remain valid | | * pj_http_req's internal memory pool so the data remain valid | |
| * as long as pj_http_req is not destroyed and application does | | * as long as pj_http_req is not destroyed and application does | |
| * not start a new request. | | * not start a new request. | |
| * | | * | |
|
| | | * If no longer required, application may choose to destroy | |
| | | * pj_http_req immediately by calling #pj_http_req_destroy() inside | |
| | | * the callback. | |
| | | * | |
| * @param http_req The http request. | | * @param http_req The http request. | |
| * @param status The status of the request operation. PJ_SUCCESS | | * @param status The status of the request operation. PJ_SUCCESS | |
| * if the operation completed successfully | | * if the operation completed successfully | |
| * (connection-wise). To check the server's | | * (connection-wise). To check the server's | |
| * status-code response to the HTTP request, | | * status-code response to the HTTP request, | |
| * application should check resp->status_code instead. | | * application should check resp->status_code instead. | |
| * @param resp The response of the corresponding request. If | | * @param resp The response of the corresponding request. If | |
| * the status argument is non-PJ_SUCCESS, this | | * the status argument is non-PJ_SUCCESS, this | |
| * argument will be set to NULL. | | * argument will be set to NULL. | |
| */ | | */ | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 5 lines changed or added | |
|
| ice_strans.h | | ice_strans.h | |
|
| /* $Id: ice_strans.h 3028 2009-12-08 13:11:25Z bennylp $ */ | | /* $Id: ice_strans.h 3212 2010-06-19 12:35:33Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 123 | | skipping to change at line 123 | |
| /** Forward declaration for ICE stream transport. */ | | /** Forward declaration for ICE stream transport. */ | |
| typedef struct pj_ice_strans pj_ice_strans; | | typedef struct pj_ice_strans pj_ice_strans; | |
| | | | |
| /** Transport operation types to be reported on \a on_status() callback */ | | /** Transport operation types to be reported on \a on_status() callback */ | |
| typedef enum pj_ice_strans_op | | typedef enum pj_ice_strans_op | |
| { | | { | |
| /** Initialization (candidate gathering) */ | | /** Initialization (candidate gathering) */ | |
| PJ_ICE_STRANS_OP_INIT, | | PJ_ICE_STRANS_OP_INIT, | |
| | | | |
| /** Negotiation */ | | /** Negotiation */ | |
|
| PJ_ICE_STRANS_OP_NEGOTIATION | | PJ_ICE_STRANS_OP_NEGOTIATION, | |
| | | | |
| | | /** This operatino is used to report failure in keep-alive operation. | |
| | | * Currently it is only used to report TURN Refresh failure. | |
| | | */ | |
| | | PJ_ICE_STRANS_OP_KEEP_ALIVE | |
| | | | |
| } pj_ice_strans_op; | | } pj_ice_strans_op; | |
| | | | |
| /** | | /** | |
| * This structure contains callbacks that will be called by the | | * This structure contains callbacks that will be called by the | |
| * ICE stream transport. | | * ICE stream transport. | |
| */ | | */ | |
| typedef struct pj_ice_strans_cb | | typedef struct pj_ice_strans_cb | |
| { | | { | |
| /** | | /** | |
| | | | |
| skipping to change at line 152 | | skipping to change at line 157 | |
| * @param src_addr Source address of the packet. | | * @param src_addr Source address of the packet. | |
| * @param src_addr_len Length of the source address. | | * @param src_addr_len Length of the source address. | |
| */ | | */ | |
| void (*on_rx_data)(pj_ice_strans *ice_st, | | void (*on_rx_data)(pj_ice_strans *ice_st, | |
| unsigned comp_id, | | unsigned comp_id, | |
| void *pkt, pj_size_t size, | | void *pkt, pj_size_t size, | |
| const pj_sockaddr_t *src_addr, | | const pj_sockaddr_t *src_addr, | |
| unsigned src_addr_len); | | unsigned src_addr_len); | |
| | | | |
| /** | | /** | |
|
| * Callback to report status. | | * Callback to report status of various ICE operations. | |
| * | | * | |
| * @param ice_st The ICE stream transport. | | * @param ice_st The ICE stream transport. | |
|
| * @param op The operation | | * @param op The operation which status is being reported. | |
| * @param status Operation status. | | * @param status Operation status. | |
| */ | | */ | |
| void (*on_ice_complete)(pj_ice_strans *ice_st, | | void (*on_ice_complete)(pj_ice_strans *ice_st, | |
| pj_ice_strans_op op, | | pj_ice_strans_op op, | |
| pj_status_t status); | | pj_status_t status); | |
| | | | |
| } pj_ice_strans_cb; | | } pj_ice_strans_cb; | |
| | | | |
| /** | | /** | |
| * This structure describes ICE stream transport configuration. Application | | * This structure describes ICE stream transport configuration. Application | |
| | | | |
End of changes. 4 change blocks. |
| 4 lines changed or deleted | | 9 lines changed or added | |
|
| master_port.h | | master_port.h | |
|
| /* $Id: master_port.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: master_port.h 3214 2010-06-21 09:10:44Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 103 | | skipping to change at line 103 | |
| /** | | /** | |
| * Stop the media flow. | | * Stop the media flow. | |
| * | | * | |
| * @param m The master port. | | * @param m The master port. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_master_port_stop(pjmedia_master_port *m); | | PJ_DECL(pj_status_t) pjmedia_master_port_stop(pjmedia_master_port *m); | |
| | | | |
| /** | | /** | |
|
| | | * Poll the master port clock and execute the callback when the clock tick | |
| | | has | |
| | | * elapsed. This operation is only valid if the master port is created with | |
| | | * #PJMEDIA_CLOCK_NO_ASYNC flag. | |
| | | * | |
| | | * @param m The master port. | |
| | | * @param wait If non-zero, then the function will block until | |
| | | * a clock tick elapsed and callback has been calle | |
| | | d. | |
| | | * @param ts Optional argument to receive the current | |
| | | * timestamp. | |
| | | * | |
| | | * @return Non-zero if clock tick has elapsed, or FALSE if | |
| | | * the function returns before a clock tick has | |
| | | * elapsed. | |
| | | */ | |
| | | PJ_DECL(pj_bool_t) pjmedia_master_port_wait(pjmedia_master_port *m, | |
| | | pj_bool_t wait, | |
| | | pj_timestamp *ts); | |
| | | | |
| | | /** | |
| * Change the upstream port. Note that application is responsible to destro
y | | * Change the upstream port. Note that application is responsible to destro
y | |
| * current upstream port (the one that is going to be replaced with the | | * current upstream port (the one that is going to be replaced with the | |
| * new port). | | * new port). | |
| * | | * | |
| * @param m The master port. | | * @param m The master port. | |
| * @param port Port to be used for upstream port. | | * @param port Port to be used for upstream port. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_master_port_set_uport(pjmedia_master_port *m, | | PJ_DECL(pj_status_t) pjmedia_master_port_set_uport(pjmedia_master_port *m, | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 22 lines changed or added | |
|
| os_auto.h | | os_auto.h | |
| /* pjlib/include/pj/compat/os_auto.h. Generated from os_auto.h.in by confi
gure. */ | | /* pjlib/include/pj/compat/os_auto.h. Generated from os_auto.h.in by confi
gure. */ | |
|
| /* $Id: os_auto.h.in 3059 2010-01-13 21:28:06Z bennylp $ */ | | /* $Id: os_auto.h.in 3240 2010-07-23 04:27:32Z ming $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 173 | | skipping to change at line 173 | |
| | | | |
| /* Unicode? */ | | /* Unicode? */ | |
| #define PJ_NATIVE_STRING_IS_UNICODE 0 | | #define PJ_NATIVE_STRING_IS_UNICODE 0 | |
| | | | |
| /* Pool alignment in bytes */ | | /* Pool alignment in bytes */ | |
| #define PJ_POOL_ALIGNMENT 4 | | #define PJ_POOL_ALIGNMENT 4 | |
| | | | |
| /* The type of atomic variable value: */ | | /* The type of atomic variable value: */ | |
| #define PJ_ATOMIC_VALUE_TYPE long | | #define PJ_ATOMIC_VALUE_TYPE long | |
| | | | |
|
| | | /* Append ".local" suffix to the system's hostname? */ | |
| | | #if defined(PJ_DARWINOS) && PJ_DARWINOS!=0 | |
| | | # include "TargetConditionals.h" | |
| | | # if TARGET_OS_IPHONE | |
| | | # include "Availability.h" | |
| | | # ifdef __IPHONE_4_0 | |
| | | # define PJ_GETHOSTNAME_APPEND_LOCAL_SUFFIX 1 | |
| | | # endif | |
| | | # endif | |
| | | #endif | |
| | | | |
| /* If 1, use Read/Write mutex emulation for platforms that don't support it
*/ | | /* If 1, use Read/Write mutex emulation for platforms that don't support it
*/ | |
| #define PJ_EMULATE_RWMUTEX 0 | | #define PJ_EMULATE_RWMUTEX 0 | |
| | | | |
| /* If 1, pj_thread_create() should enforce the stack size when creating | | /* If 1, pj_thread_create() should enforce the stack size when creating | |
| * threads. | | * threads. | |
| * Default: 0 (let OS decide the thread's stack size). | | * Default: 0 (let OS decide the thread's stack size). | |
| */ | | */ | |
| #define PJ_THREAD_SET_STACK_SIZE 0 | | #define PJ_THREAD_SET_STACK_SIZE 0 | |
| | | | |
| /* If 1, pj_thread_create() should allocate stack from the pool supplied. | | /* If 1, pj_thread_create() should allocate stack from the pool supplied. | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 12 lines changed or added | |
|
| os_auto.h.in | | os_auto.h.in | |
|
| /* $Id: os_auto.h.in 3059 2010-01-13 21:28:06Z bennylp $ */ | | /* $Id: os_auto.h.in 3240 2010-07-23 04:27:32Z ming $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 172 | | skipping to change at line 172 | |
| | | | |
| /* Unicode? */ | | /* Unicode? */ | |
| #undef PJ_NATIVE_STRING_IS_UNICODE | | #undef PJ_NATIVE_STRING_IS_UNICODE | |
| | | | |
| /* Pool alignment in bytes */ | | /* Pool alignment in bytes */ | |
| #undef PJ_POOL_ALIGNMENT | | #undef PJ_POOL_ALIGNMENT | |
| | | | |
| /* The type of atomic variable value: */ | | /* The type of atomic variable value: */ | |
| #undef PJ_ATOMIC_VALUE_TYPE | | #undef PJ_ATOMIC_VALUE_TYPE | |
| | | | |
|
| | | /* Append ".local" suffix to the system's hostname? */ | |
| | | #if defined(PJ_DARWINOS) && PJ_DARWINOS!=0 | |
| | | # include "TargetConditionals.h" | |
| | | # if TARGET_OS_IPHONE | |
| | | # include "Availability.h" | |
| | | # ifdef __IPHONE_4_0 | |
| | | # define PJ_GETHOSTNAME_APPEND_LOCAL_SUFFIX 1 | |
| | | # endif | |
| | | # endif | |
| | | #endif | |
| | | | |
| /* If 1, use Read/Write mutex emulation for platforms that don't support it
*/ | | /* If 1, use Read/Write mutex emulation for platforms that don't support it
*/ | |
| #undef PJ_EMULATE_RWMUTEX | | #undef PJ_EMULATE_RWMUTEX | |
| | | | |
| /* If 1, pj_thread_create() should enforce the stack size when creating | | /* If 1, pj_thread_create() should enforce the stack size when creating | |
| * threads. | | * threads. | |
| * Default: 0 (let OS decide the thread's stack size). | | * Default: 0 (let OS decide the thread's stack size). | |
| */ | | */ | |
| #undef PJ_THREAD_SET_STACK_SIZE | | #undef PJ_THREAD_SET_STACK_SIZE | |
| | | | |
| /* If 1, pj_thread_create() should allocate stack from the pool supplied. | | /* If 1, pj_thread_create() should allocate stack from the pool supplied. | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 12 lines changed or added | |
|
| pjsip.h | | pjsip.h | |
|
| /* $Id: pjsip.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: pjsip.h 3243 2010-08-01 09:48:51Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 31 | | skipping to change at line 31 | |
| #define __PJSIP_H__ | | #define __PJSIP_H__ | |
| | | | |
| /* Base types. */ | | /* Base types. */ | |
| #include <pjsip/sip_types.h> | | #include <pjsip/sip_types.h> | |
| #include <pjsip/sip_errno.h> | | #include <pjsip/sip_errno.h> | |
| | | | |
| /* Messaging and parsing. */ | | /* Messaging and parsing. */ | |
| #include <pjsip/sip_uri.h> | | #include <pjsip/sip_uri.h> | |
| #include <pjsip/sip_tel_uri.h> | | #include <pjsip/sip_tel_uri.h> | |
| #include <pjsip/sip_msg.h> | | #include <pjsip/sip_msg.h> | |
|
| | | #include <pjsip/sip_multipart.h> | |
| #include <pjsip/sip_parser.h> | | #include <pjsip/sip_parser.h> | |
| | | | |
| /* Core */ | | /* Core */ | |
| #include <pjsip/sip_event.h> | | #include <pjsip/sip_event.h> | |
| #include <pjsip/sip_module.h> | | #include <pjsip/sip_module.h> | |
| #include <pjsip/sip_endpoint.h> | | #include <pjsip/sip_endpoint.h> | |
| #include <pjsip/sip_util.h> | | #include <pjsip/sip_util.h> | |
| | | | |
| /* Transport layer */ | | /* Transport layer */ | |
| #include <pjsip/sip_transport.h> | | #include <pjsip/sip_transport.h> | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 2 lines changed or added | |
|
| pjsua_internal.h | | pjsua_internal.h | |
|
| /* $Id: pjsua_internal.h 3144 2010-04-20 14:36:38Z nanang $ */ | | /* $Id: pjsua_internal.h 3216 2010-06-22 06:02:13Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 93 | | skipping to change at line 93 | |
| pj_bool_t med_tp_auto_del; /**< May delete media transport
*/ | | pj_bool_t med_tp_auto_del; /**< May delete media transport
*/ | |
| pjsua_med_tp_st med_tp_st; /**< Media transport state
*/ | | pjsua_med_tp_st med_tp_st; /**< Media transport state
*/ | |
| pj_sockaddr med_rtp_addr; /**< Current RTP source addre
ss | | pj_sockaddr med_rtp_addr; /**< Current RTP source addre
ss | |
| (used to update ICE default | | (used to update ICE default | |
| address)
*/ | | address)
*/ | |
| pj_stun_nat_type rem_nat_type; /**< NAT type of remote endpoint.
*/ | | pj_stun_nat_type rem_nat_type; /**< NAT type of remote endpoint.
*/ | |
| pjmedia_srtp_use rem_srtp_use; /**< Remote's SRTP usage policy.
*/ | | pjmedia_srtp_use rem_srtp_use; /**< Remote's SRTP usage policy.
*/ | |
| | | | |
| char last_text_buf_[128]; /**< Buffer for last_text.
*/ | | char last_text_buf_[128]; /**< Buffer for last_text.
*/ | |
| | | | |
|
| | | struct { | |
| | | pj_timer_entry reinv_timer;/**< Reinvite retry timer. | |
| | | */ | |
| | | pjmedia_sdp_session *new_sdp;/**< The new SDP offer. | |
| | | */ | |
| | | } lock_codec; /**< Data for codec locking when answer | |
| | | contains multiple codecs. | |
| | | */ | |
| | | | |
| } pjsua_call; | | } pjsua_call; | |
| | | | |
| /** | | /** | |
| * Server presence subscription list head. | | * Server presence subscription list head. | |
| */ | | */ | |
| struct pjsua_srv_pres | | struct pjsua_srv_pres | |
| { | | { | |
| PJ_DECL_LIST_MEMBER(struct pjsua_srv_pres); | | PJ_DECL_LIST_MEMBER(struct pjsua_srv_pres); | |
| pjsip_evsub *sub; /**< The evsub.
*/ | | pjsip_evsub *sub; /**< The evsub.
*/ | |
| char *remote; /**< Remote URI.
*/ | | char *remote; /**< Remote URI.
*/ | |
| | | | |
| skipping to change at line 275 | | skipping to change at line 281 | |
| pj_sockaddr stun_srv; /**< Resolved STUN server addres
s */ | | pj_sockaddr stun_srv; /**< Resolved STUN server addres
s */ | |
| pj_status_t stun_status; /**< STUN server status.
*/ | | pj_status_t stun_status; /**< STUN server status.
*/ | |
| pjsua_stun_resolve stun_res; /**< List of pending STUN resolution*/ | | pjsua_stun_resolve stun_res; /**< List of pending STUN resolution*/ | |
| pj_dns_resolver *resolver; /**< DNS resolver. */ | | pj_dns_resolver *resolver; /**< DNS resolver. */ | |
| | | | |
| /* Detected NAT type */ | | /* Detected NAT type */ | |
| pj_stun_nat_type nat_type; /**< NAT type. */ | | pj_stun_nat_type nat_type; /**< NAT type. */ | |
| pj_status_t nat_status; /**< Detection status.
*/ | | pj_status_t nat_status; /**< Detection status.
*/ | |
| pj_bool_t nat_in_progress; /**< Detection in progress */ | | pj_bool_t nat_in_progress; /**< Detection in progress */ | |
| | | | |
|
| | | /* List of outbound proxies: */ | |
| | | pjsip_route_hdr outbound_proxy; | |
| | | | |
| /* Account: */ | | /* Account: */ | |
| unsigned acc_cnt; /**< Number of accounts. */ | | unsigned acc_cnt; /**< Number of accounts. */ | |
| pjsua_acc_id default_acc; /**< Default account ID */ | | pjsua_acc_id default_acc; /**< Default account ID */ | |
| pjsua_acc acc[PJSUA_MAX_ACC]; /**< Account array. */ | | pjsua_acc acc[PJSUA_MAX_ACC]; /**< Account array. */ | |
| pjsua_acc_id acc_ids[PJSUA_MAX_ACC]; /**< Acc sorted by prio*/ | | pjsua_acc_id acc_ids[PJSUA_MAX_ACC]; /**< Acc sorted by prio*/ | |
| | | | |
| /* Calls: */ | | /* Calls: */ | |
| pjsua_config ua_cfg; /**< UA config. */ | | pjsua_config ua_cfg; /**< UA config. */ | |
| unsigned call_cnt; /**< Call counter. */ | | unsigned call_cnt; /**< Call counter. */ | |
| pjsua_call calls[PJSUA_MAX_CALLS];/**< Calls array. */ | | pjsua_call calls[PJSUA_MAX_CALLS];/**< Calls array. */ | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 13 lines changed or added | |
|
| rtcp.h | | rtcp.h | |
|
| /* $Id: rtcp.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: rtcp.h 3239 2010-07-15 14:45:47Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 208 | | skipping to change at line 208 | |
| { | | { | |
| pj_time_val start; /**< Time when session was creat
ed */ | | pj_time_val start; /**< Time when session was creat
ed */ | |
| | | | |
| pjmedia_rtcp_stream_stat tx; /**< Encoder stream statistics.
*/ | | pjmedia_rtcp_stream_stat tx; /**< Encoder stream statistics.
*/ | |
| pjmedia_rtcp_stream_stat rx; /**< Decoder stream statistics.
*/ | | pjmedia_rtcp_stream_stat rx; /**< Decoder stream statistics.
*/ | |
| | | | |
| pj_math_stat rtt; /**< Round trip delay statistic(in usec)
*/ | | pj_math_stat rtt; /**< Round trip delay statistic(in usec)
*/ | |
| | | | |
| pj_uint32_t rtp_tx_last_ts; /**< Last TX RTP timest
amp. */ | | pj_uint32_t rtp_tx_last_ts; /**< Last TX RTP timest
amp. */ | |
| pj_uint16_t rtp_tx_last_seq;/**< Last TX RTP sequen
ce. */ | | pj_uint16_t rtp_tx_last_seq;/**< Last TX RTP sequen
ce. */ | |
|
| | | | |
| | | #if defined(PJMEDIA_RTCP_STAT_HAS_IPDV) && PJMEDIA_RTCP_STAT_HAS_IPDV!=0 | |
| | | pj_math_stat rx_ipdv;/**< Statistics of IP packet delay | |
| | | variation in receiving direction | |
| | | (in usec). | |
| | | */ | |
| | | #endif | |
| | | | |
| | | #if defined(PJMEDIA_RTCP_STAT_HAS_RAW_JITTER) && PJMEDIA_RTCP_STAT_HAS_RAW_ | |
| | | JITTER!=0 | |
| | | pj_math_stat rx_raw_jitter;/**< Statistic of raw jitter in | |
| | | receiving direction | |
| | | (in usec). | |
| | | */ | |
| | | #endif | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * @see pjmedia_rtcp_stat | | * @see pjmedia_rtcp_stat | |
| */ | | */ | |
| typedef struct pjmedia_rtcp_stat pjmedia_rtcp_stat; | | typedef struct pjmedia_rtcp_stat pjmedia_rtcp_stat; | |
| | | | |
| /** | | /** | |
| * RTCP session is used to monitor the RTP session of one endpoint. There | | * RTCP session is used to monitor the RTP session of one endpoint. There | |
| * should only be one RTCP session for a bidirectional RTP streams. | | * should only be one RTCP session for a bidirectional RTP streams. | |
| | | | |
| skipping to change at line 238 | | skipping to change at line 250 | |
| unsigned clock_rate; /**< Clock rate of the stream
*/ | | unsigned clock_rate; /**< Clock rate of the stream
*/ | |
| unsigned pkt_size; /**< Avg pkt size, in samples.
*/ | | unsigned pkt_size; /**< Avg pkt size, in samples.
*/ | |
| pj_uint32_t received; /**< # pkt received
*/ | | pj_uint32_t received; /**< # pkt received
*/ | |
| pj_uint32_t exp_prior; /**< # pkt expected at last
interval*/ | | pj_uint32_t exp_prior; /**< # pkt expected at last
interval*/ | |
| pj_uint32_t rx_prior; /**< # pkt received at last
interval*/ | | pj_uint32_t rx_prior; /**< # pkt received at last
interval*/ | |
| pj_int32_t transit; /**< Rel transit time for prev pkt
*/ | | pj_int32_t transit; /**< Rel transit time for prev pkt
*/ | |
| pj_uint32_t jitter; /**< Scaled jitter
*/ | | pj_uint32_t jitter; /**< Scaled jitter
*/ | |
| pj_time_val tv_base; /**< Base time, in seconds.
*/ | | pj_time_val tv_base; /**< Base time, in seconds.
*/ | |
| pj_timestamp ts_base; /**< Base system timestamp.
*/ | | pj_timestamp ts_base; /**< Base system timestamp.
*/ | |
| pj_timestamp ts_freq; /**< System timestamp frequency.
*/ | | pj_timestamp ts_freq; /**< System timestamp frequency.
*/ | |
|
| | | pj_uint32_t rtp_ts_base;/**< Base RTP timestamp.
*/ | |
| | | | |
| pj_uint32_t rx_lsr; /**< NTP ts in last SR recei
ved */ | | pj_uint32_t rx_lsr; /**< NTP ts in last SR recei
ved */ | |
| pj_timestamp rx_lsr_time;/**< Time when last SR is received
*/ | | pj_timestamp rx_lsr_time;/**< Time when last SR is received
*/ | |
| pj_uint32_t peer_ssrc; /**< Peer SSRC
*/ | | pj_uint32_t peer_ssrc; /**< Peer SSRC
*/ | |
| | | | |
| pjmedia_rtcp_stat stat; /**< Bidirectional stream stat.
*/ | | pjmedia_rtcp_stat stat; /**< Bidirectional stream stat.
*/ | |
| | | | |
| #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | | #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | |
| /** | | /** | |
| * Specify whether RTCP XR processing is enabled on this session. | | * Specify whether RTCP XR processing is enabled on this session. | |
| | | | |
| skipping to change at line 265 | | skipping to change at line 278 | |
| pjmedia_rtcp_xr_session xr_session; | | pjmedia_rtcp_xr_session xr_session; | |
| #endif | | #endif | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * @see pjmedia_rtcp_session | | * @see pjmedia_rtcp_session | |
| */ | | */ | |
| typedef struct pjmedia_rtcp_session pjmedia_rtcp_session; | | typedef struct pjmedia_rtcp_session pjmedia_rtcp_session; | |
| | | | |
| /** | | /** | |
|
| | | * RTCP session settings. | |
| | | */ | |
| | | typedef struct pjmedia_rtcp_session_setting | |
| | | { | |
| | | char *name; /**< RTCP session name. */ | |
| | | unsigned clock_rate; /**< Sequence. */ | |
| | | unsigned samples_per_frame; /**< Timestamp. */ | |
| | | pj_uint32_t ssrc; /**< Sender SSRC. | |
| | | */ | |
| | | pj_uint32_t rtp_ts_base; /**< Base RTP timestamp. | |
| | | */ | |
| | | } pjmedia_rtcp_session_setting; | |
| | | | |
| | | /** | |
| | | * Initialize RTCP session setting. | |
| | | * | |
| | | * @param settings The RTCP session setting to be initialized. | |
| | | */ | |
| | | PJ_DECL(void) pjmedia_rtcp_session_setting_default( | |
| | | pjmedia_rtcp_session_setting *settings); | |
| | | | |
| | | /** | |
| | | * Initialize bidirectional RTCP statistics. | |
| | | * | |
| | | * @param stat The bidirectional RTCP statistics. | |
| | | */ | |
| | | PJ_DECL(void) pjmedia_rtcp_init_stat(pjmedia_rtcp_stat *stat); | |
| | | | |
| | | /** | |
| * Initialize RTCP session. | | * Initialize RTCP session. | |
| * | | * | |
| * @param session The session | | * @param session The session | |
| * @param name Optional name to identify the session (for | | * @param name Optional name to identify the session (for | |
| * logging purpose). | | * logging purpose). | |
| * @param clock_rate Codec clock rate in samples per second. | | * @param clock_rate Codec clock rate in samples per second. | |
| * @param samples_per_frame Average number of samples per frame. | | * @param samples_per_frame Average number of samples per frame. | |
| * @param ssrc The SSRC used in to identify the session. | | * @param ssrc The SSRC used in to identify the session. | |
| */ | | */ | |
| PJ_DECL(void) pjmedia_rtcp_init( pjmedia_rtcp_session *session, | | PJ_DECL(void) pjmedia_rtcp_init( pjmedia_rtcp_session *session, | |
| char *name, | | char *name, | |
| unsigned clock_rate, | | unsigned clock_rate, | |
| unsigned samples_per_frame, | | unsigned samples_per_frame, | |
| pj_uint32_t ssrc ); | | pj_uint32_t ssrc ); | |
| | | | |
| /** | | /** | |
|
| | | * Initialize RTCP session. | |
| | | * | |
| | | * @param session The session | |
| | | * @param settings The RTCP session settings. | |
| | | */ | |
| | | PJ_DECL(void) pjmedia_rtcp_init2(pjmedia_rtcp_session *session, | |
| | | const pjmedia_rtcp_session_setting *setting | |
| | | s); | |
| | | | |
| | | /** | |
| * Utility function to retrieve current NTP timestamp. | | * Utility function to retrieve current NTP timestamp. | |
| * | | * | |
| * @param sess RTCP session. | | * @param sess RTCP session. | |
| * @param ntp NTP record. | | * @param ntp NTP record. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_rtcp_get_ntp_time(const pjmedia_rtcp_session *
sess, | | PJ_DECL(pj_status_t) pjmedia_rtcp_get_ntp_time(const pjmedia_rtcp_session *
sess, | |
| pjmedia_rtcp_ntp_rec *ntp); | | pjmedia_rtcp_ntp_rec *ntp); | |
| | | | |
| | | | |
End of changes. 5 change blocks. |
| 1 lines changed or deleted | | 56 lines changed or added | |
|
| sdp.h | | sdp.h | |
|
| /* $Id: sdp.h 2995 2009-11-09 05:18:12Z bennylp $ */ | | /* $Id: sdp.h 3198 2010-06-04 13:41:34Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 505 | | skipping to change at line 505 | |
| * Deactivate SDP media. | | * Deactivate SDP media. | |
| * | | * | |
| * @param m The SDP media to deactivate. | | * @param m The SDP media to deactivate. | |
| * | | * | |
| * @return PJ_SUCCESS when SDP media successfully deactivated, | | * @return PJ_SUCCESS when SDP media successfully deactivated, | |
| * otherwise appropriate status code returned. | | * otherwise appropriate status code returned. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_sdp_media_deactivate(pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjmedia_sdp_media_deactivate(pj_pool_t *pool, | |
| pjmedia_sdp_media *m); | | pjmedia_sdp_media *m); | |
| | | | |
|
| | | /** | |
| | | * Clone SDP media description and deactivate the new SDP media. | |
| | | * | |
| | | * @param rhs The SDP media to clone. | |
| | | * | |
| | | * @return New media descrption with deactivated indication. | |
| | | */ | |
| | | PJ_DECL(pjmedia_sdp_media*) pjmedia_sdp_media_clone_deactivate( | |
| | | pj_pool_t *pool, | |
| | | const pjmedia_sdp_media *rhs | |
| | | ); | |
| | | | |
| /* ************************************************************************
** | | /* ************************************************************************
** | |
| * SDP SESSION DESCRIPTION | | * SDP SESSION DESCRIPTION | |
| **************************************************************************
** | | **************************************************************************
** | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * This structure describes SDP session description. A SDP session descript
or | | * This structure describes SDP session description. A SDP session descript
or | |
| * contains complete information about a session, and normally is exchanged | | * contains complete information about a session, and normally is exchanged | |
| * with remote media peer using signaling protocol such as SIP. | | * with remote media peer using signaling protocol such as SIP. | |
| */ | | */ | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 13 lines changed or added | |
|
| sdp_neg.h | | sdp_neg.h | |
|
| /* $Id: sdp_neg.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sdp_neg.h 3217 2010-06-23 12:21:20Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 610 | | skipping to change at line 610 | |
| * remote). | | * remote). | |
| * | | * | |
| * @param neg The negotiator. | | * @param neg The negotiator. | |
| * | | * | |
| * @return PJ_TRUE if it is local is answering an offer, PJ_FAL
SE | | * @return PJ_TRUE if it is local is answering an offer, PJ_FAL
SE | |
| * if remote has answered local offer. | | * if remote has answered local offer. | |
| */ | | */ | |
| PJ_DECL(pj_bool_t) pjmedia_sdp_neg_has_local_answer(pjmedia_sdp_neg *neg); | | PJ_DECL(pj_bool_t) pjmedia_sdp_neg_has_local_answer(pjmedia_sdp_neg *neg); | |
| | | | |
| /** | | /** | |
|
| * Cancel previously sent offer, and move negotiator state back to | | * Cancel any pending offer, whether the offer is initiated by local or | |
| * previous stable state (PJMEDIA_SDP_NEG_STATE_DONE). The negotiator | | * remote, and move negotiator state back to previous stable state | |
| * must be in PJMEDIA_SDP_NEG_STATE_LOCAL_OFFER state. | | * (PJMEDIA_SDP_NEG_STATE_DONE). The negotiator must be in | |
| | | * PJMEDIA_SDP_NEG_STATE_LOCAL_OFFER or PJMEDIA_SDP_NEG_STATE_REMOTE_OFFER | |
| | | * state. | |
| * | | * | |
| * @param neg The negotiator. | | * @param neg The negotiator. | |
| * | | * | |
| * @return PJ_SUCCESS or the appropriate error code. | | * @return PJ_SUCCESS or the appropriate error code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_sdp_neg_cancel_offer(pjmedia_sdp_neg *neg); | | PJ_DECL(pj_status_t) pjmedia_sdp_neg_cancel_offer(pjmedia_sdp_neg *neg); | |
| | | | |
| /** | | /** | |
| * Negotiate local and remote answer. Before calling this function, the | | * Negotiate local and remote answer. Before calling this function, the | |
| * SDP negotiator must be in PJMEDIA_SDP_NEG_STATE_WAIT_NEGO state. | | * SDP negotiator must be in PJMEDIA_SDP_NEG_STATE_WAIT_NEGO state. | |
| | | | |
End of changes. 2 change blocks. |
| 4 lines changed or deleted | | 6 lines changed or added | |
|
| session.h | | session.h | |
|
| /* $Id: session.h 2844 2009-07-29 12:14:21Z bennylp $ */ | | /* $Id: session.h 3237 2010-07-15 10:18:59Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 273 | | skipping to change at line 273 | |
| * @param session The media session. | | * @param session The media session. | |
| * @param index Stream index. | | * @param index Stream index. | |
| * @param stat Stream statistic. | | * @param stat Stream statistic. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_session_get_stream_stat(pjmedia_session *sessi
on, | | PJ_DECL(pj_status_t) pjmedia_session_get_stream_stat(pjmedia_session *sessi
on, | |
| unsigned index, | | unsigned index, | |
| pjmedia_rtcp_stat *stat
); | | pjmedia_rtcp_stat *stat
); | |
| | | | |
|
| | | /** | |
| | | * Reset session statistics. | |
| | | * | |
| | | * @param session The media session. | |
| | | * @param index Stream index. | |
| | | * | |
| | | * @return PJ_SUCCESS on success. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_session_reset_stream_stat(pjmedia_session *ses | |
| | | sion, | |
| | | unsigned index); | |
| | | | |
| #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | | #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | |
| /** | | /** | |
| * Get extended session statistics. The extended statistic shows reports | | * Get extended session statistics. The extended statistic shows reports | |
| * from RTCP XR, such as per interval statistics summary (packet count, | | * from RTCP XR, such as per interval statistics summary (packet count, | |
| * packet lost, jitter, etc), VoIP metrics (delay, quality, etc) | | * packet lost, jitter, etc), VoIP metrics (delay, quality, etc) | |
| * | | * | |
| * @param session The media session. | | * @param session The media session. | |
| * @param index Stream index. | | * @param index Stream index. | |
| * @param stat_xr Stream extended statistics. | | * @param stat_xr Stream extended statistics. | |
| * | | * | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 13 lines changed or added | |
|
| sip_config.h | | sip_config.h | |
|
| /* $Id: sip_config.h 3019 2009-11-20 04:18:27Z bennylp $ */ | | /* $Id: sip_config.h 3182 2010-05-19 06:07:40Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 218 | | skipping to change at line 218 | |
| */ | | */ | |
| #ifndef PJSIP_MAX_MODULE | | #ifndef PJSIP_MAX_MODULE | |
| # define PJSIP_MAX_MODULE 32 | | # define PJSIP_MAX_MODULE 32 | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
| * Maximum packet length. We set it more than MTU since a SIP PDU | | * Maximum packet length. We set it more than MTU since a SIP PDU | |
| * containing presence information can be quite large (>1500). | | * containing presence information can be quite large (>1500). | |
| */ | | */ | |
| #ifndef PJSIP_MAX_PKT_LEN | | #ifndef PJSIP_MAX_PKT_LEN | |
|
| # define PJSIP_MAX_PKT_LEN 2000 | | # define PJSIP_MAX_PKT_LEN 4000 | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
| * RFC 3261 section 18.1.1: | | * RFC 3261 section 18.1.1: | |
| * If a request is within 200 bytes of the path MTU, or if it is larger | | * If a request is within 200 bytes of the path MTU, or if it is larger | |
| * than 1300 bytes and the path MTU is unknown, the request MUST be sent | | * than 1300 bytes and the path MTU is unknown, the request MUST be sent | |
| * using an RFC 2914 [43] congestion controlled transport protocol, such | | * using an RFC 2914 [43] congestion controlled transport protocol, such | |
| * as TCP. | | * as TCP. | |
| * | | * | |
| * Disable the behavior of automatic switching to TCP whenever UDP packet | | * Disable the behavior of automatic switching to TCP whenever UDP packet | |
| | | | |
End of changes. 2 change blocks. |
| 2 lines changed or deleted | | 2 lines changed or added | |
|
| sip_dialog.h | | sip_dialog.h | |
|
| /* $Id: sip_dialog.h 3068 2010-01-21 10:04:26Z bennylp $ */ | | /* $Id: sip_dialog.h 3196 2010-06-03 10:41:32Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 88 | | skipping to change at line 88 | |
| typedef enum pjsip_dialog_state | | typedef enum pjsip_dialog_state | |
| { | | { | |
| /** Dialog is not established. */ | | /** Dialog is not established. */ | |
| PJSIP_DIALOG_STATE_NULL, | | PJSIP_DIALOG_STATE_NULL, | |
| | | | |
| /** Dialog has been established (probably early) */ | | /** Dialog has been established (probably early) */ | |
| PJSIP_DIALOG_STATE_ESTABLISHED | | PJSIP_DIALOG_STATE_ESTABLISHED | |
| } pjsip_dialog_state; | | } pjsip_dialog_state; | |
| | | | |
| /** | | /** | |
|
| | | * Dialog capability status. | |
| | | */ | |
| | | typedef enum pjsip_dialog_cap_status | |
| | | { | |
| | | /** Capability is unsupported. */ | |
| | | PJSIP_DIALOG_CAP_UNSUPPORTED = 0, | |
| | | | |
| | | /** Capability is supported */ | |
| | | PJSIP_DIALOG_CAP_SUPPORTED = 1, | |
| | | | |
| | | /** | |
| | | * Unknown capability status. This is usually because we lack the | |
| | | * capability info which is retrieved from capability header specified | |
| | | * in the dialog messages. | |
| | | */ | |
| | | PJSIP_DIALOG_CAP_UNKNOWN = 2 | |
| | | } pjsip_dialog_cap_status; | |
| | | | |
| | | /** | |
| * This structure describes the dialog structure. Application MUST NOT | | * This structure describes the dialog structure. Application MUST NOT | |
| * try to SET the values here directly, but instead it MUST use the | | * try to SET the values here directly, but instead it MUST use the | |
| * appropriate dialog API. The dialog declaration only needs to be made | | * appropriate dialog API. The dialog declaration only needs to be made | |
| * visible because other PJSIP modules need to see it (e.g. INVITE session, | | * visible because other PJSIP modules need to see it (e.g. INVITE session, | |
| * the event framework, etc.). | | * the event framework, etc.). | |
| * | | * | |
| * Application MAY READ the dialog contents directly after it acquires | | * Application MAY READ the dialog contents directly after it acquires | |
| * dialog lock. | | * dialog lock. | |
| * | | * | |
| * To acquire dialog lock, use #pjsip_dlg_inc_lock(), and to release it, | | * To acquire dialog lock, use #pjsip_dlg_inc_lock(), and to release it, | |
| | | | |
| skipping to change at line 125 | | skipping to change at line 144 | |
| /** The dialog set which this dialog belongs (opaque type). */ | | /** The dialog set which this dialog belongs (opaque type). */ | |
| void *dlg_set; | | void *dlg_set; | |
| | | | |
| /* Dialog's session properties. */ | | /* Dialog's session properties. */ | |
| pjsip_dialog_state state; /**< Dialog state.
*/ | | pjsip_dialog_state state; /**< Dialog state.
*/ | |
| pjsip_uri *target; /**< Current target.
*/ | | pjsip_uri *target; /**< Current target.
*/ | |
| pjsip_target_set target_set; /**< Target set, for UAC only.
*/ | | pjsip_target_set target_set; /**< Target set, for UAC only.
*/ | |
| pjsip_hdr inv_hdr; /**< Headers from hparam in dest URL
*/ | | pjsip_hdr inv_hdr; /**< Headers from hparam in dest URL
*/ | |
| pjsip_dlg_party local; /**< Local party info.
*/ | | pjsip_dlg_party local; /**< Local party info.
*/ | |
| pjsip_dlg_party remote; /**< Remote party info.
*/ | | pjsip_dlg_party remote; /**< Remote party info.
*/ | |
|
| | | pjsip_hdr rem_cap_hdr;/**< List of remote capability header.
*/ | |
| pjsip_role_e role; /**< Initial role.
*/ | | pjsip_role_e role; /**< Initial role.
*/ | |
| pj_bool_t uac_has_2xx;/**< UAC has received 2xx response?
*/ | | pj_bool_t uac_has_2xx;/**< UAC has received 2xx response?
*/ | |
| pj_bool_t secure; /**< Use secure transport?
*/ | | pj_bool_t secure; /**< Use secure transport?
*/ | |
| pj_bool_t add_allow; /**< Add Allow header in requests?
*/ | | pj_bool_t add_allow; /**< Add Allow header in requests?
*/ | |
| pjsip_cid_hdr *call_id; /**< Call-ID header.
*/ | | pjsip_cid_hdr *call_id; /**< Call-ID header.
*/ | |
| pjsip_route_hdr route_set; /**< Route set.
*/ | | pjsip_route_hdr route_set; /**< Route set.
*/ | |
| pj_bool_t route_set_frozen; /**< Route set has been set.
*/ | | pj_bool_t route_set_frozen; /**< Route set has been set.
*/ | |
| pjsip_auth_clt_sess auth_sess; /**< Client authentication sessi
on. */ | | pjsip_auth_clt_sess auth_sess; /**< Client authentication sessi
on. */ | |
| | | | |
| /** Session counter. */ | | /** Session counter. */ | |
| | | | |
| skipping to change at line 595 | | skipping to change at line 615 | |
| * sent. | | * sent. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_dlg_respond( pjsip_dialog *dlg, | | PJ_DECL(pj_status_t) pjsip_dlg_respond( pjsip_dialog *dlg, | |
| pjsip_rx_data *rdata, | | pjsip_rx_data *rdata, | |
| int st_code, | | int st_code, | |
| const pj_str_t *st_text, | | const pj_str_t *st_text, | |
| const pjsip_hdr *hdr_list, | | const pjsip_hdr *hdr_list, | |
| const pjsip_msg_body *body ); | | const pjsip_msg_body *body ); | |
| | | | |
| /** | | /** | |
|
| | | * Check if remote peer have the specified capability as published | |
| | | * in the dialog messages from remote peer. | |
| | | * | |
| | | * Notes: | |
| | | * - The capability \a token lookup will apply exact match, but not | |
| | | * case-sensitive, for example: <tt>"text/html"</tt> will not match | |
| | | * <tt>"text / html"</tt> (notice the spaces). | |
| | | * | |
| | | * @param dlg The dialog. | |
| | | * @param htype The header type to be checked, which value may b | |
| | | e: | |
| | | * - PJSIP_H_ACCEPT | |
| | | * - PJSIP_H_ALLOW | |
| | | * - PJSIP_H_SUPPORTED | |
| | | * @param hname If htype specifies PJSIP_H_OTHER, then the heade | |
| | | r name | |
| | | * must be supplied in this argument. Otherwise the value | |
| | | * must be set to NULL. | |
| | | * @param token The capability token to check. For example, if \ | |
| | | a htype | |
| | | * is PJSIP_H_ALLOW, then \a token specifies the method | |
| | | * names; if \a htype is PJSIP_H_SUPPORTED, then \a token | |
| | | * specifies the extension names such as "100rel". | |
| | | * | |
| | | * @return PJSIP_DIALOG_CAP_SUPPORTED if the specified capability | |
| | | * is explicitly supported, see @pjsip_dialog_cap_status | |
| | | * for more info. | |
| | | */ | |
| | | PJ_DECL(pjsip_dialog_cap_status) pjsip_dlg_remote_has_cap( | |
| | | pjsip_dialog *dlg, | |
| | | int htype, | |
| | | const pj_str_t *hname, | |
| | | const pj_str_t *token); | |
| | | | |
| | | /** | |
| | | * Get the specified capability header from the remote capability headers | |
| | | * stored in the dialog. | |
| | | * | |
| | | * @param dlg The dialog. | |
| | | * @param htype The header type to be retrieved, which value may | |
| | | be: | |
| | | * - PJSIP_H_ACCEPT | |
| | | * - PJSIP_H_ALLOW | |
| | | * - PJSIP_H_SUPPORTED | |
| | | * @param hname If htype specifies PJSIP_H_OTHER, then the heade | |
| | | r name | |
| | | * must be supplied in this argument. Otherwise the value | |
| | | * must be set to NULL. | |
| | | * | |
| | | * @return The appropriate header, or NULL if the header is not | |
| | | * available. | |
| | | */ | |
| | | PJ_DECL(const pjsip_hdr*) pjsip_dlg_get_remote_cap_hdr(pjsip_dialog *dlg, | |
| | | int htype, | |
| | | const pj_str_t *hname | |
| | | ); | |
| | | | |
| | | /** | |
| | | * Set remote capability from a SIP header containing array of capability | |
| | | * tags/values. | |
| | | * | |
| | | * @param dlg The dialog. | |
| | | * @param cap_hdr The SIP header. | |
| | | * | |
| | | * @return PJ_SUCCESS when successful, otherwise the appropriate | |
| | | * error code will be returned. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsip_dlg_set_remote_cap_hdr( | |
| | | pjsip_dialog *dlg, | |
| | | const pjsip_generic_array_hdr *cap_hdr); | |
| | | | |
| | | /** | |
| | | * Remove a remote capability header. | |
| | | * | |
| | | * @param dlg The dialog. | |
| | | * @param htype The header type to be removed, which value may b | |
| | | e: | |
| | | * - PJSIP_H_ACCEPT | |
| | | * - PJSIP_H_ALLOW | |
| | | * - PJSIP_H_SUPPORTED | |
| | | * @param hname If htype specifies PJSIP_H_OTHER, then the heade | |
| | | r name | |
| | | * must be supplied in this argument. Otherwise the value | |
| | | * must be set to NULL. | |
| | | * | |
| | | * @return PJ_SUCCESS when successful, otherwise the appropriate | |
| | | * error code will be returned. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsip_dlg_remove_remote_cap_hdr(pjsip_dialog *dlg, | |
| | | int htype, | |
| | | const pj_str_t *hname); | |
| | | | |
| | | /** | |
| | | * Update remote capabilities from a received message. The header types | |
| | | * to be updated from the message will only be \a PJSIP_H_ACCEPT, | |
| | | * \a PJSIP_H_ALLOW, and \a PJSIP_H_SUPPORTED. | |
| | | * | |
| | | * @param dlg The dialog. | |
| | | * @param msg The received message. | |
| | | * @param strict If this is set to PJ_TRUE, any header types missing | |
| | | * from the message will cause removal of existing | |
| | | * header types in the capability list. Otherwise, the | |
| | | * capability list will not be modified when any header | |
| | | * type is missing. | |
| | | * | |
| | | * @return PJ_SUCCESS when successful, otherwise the appropriate | |
| | | * error code will be returned. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsip_dlg_update_remote_cap(pjsip_dialog *dlg, | |
| | | const pjsip_msg *msg, | |
| | | pj_bool_t strict); | |
| | | | |
| | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| /* | | /* | |
| * Internal (called by sip_ua_layer.c) | | * Internal (called by sip_ua_layer.c) | |
| */ | | */ | |
| | | | |
| /* Receives transaction event (called by user_agent module) */ | | /* Receives transaction event (called by user_agent module) */ | |
| void pjsip_dlg_on_tsx_state( pjsip_dialog *dlg, | | void pjsip_dlg_on_tsx_state( pjsip_dialog *dlg, | |
| pjsip_transaction *tsx, | | pjsip_transaction *tsx, | |
| | | | |
End of changes. 4 change blocks. |
| 1 lines changed or deleted | | 134 lines changed or added | |
|
| sip_inv.h | | sip_inv.h | |
|
| /* $Id: sip_inv.h 2869 2009-08-12 17:53:47Z bennylp $ */ | | /* $Id: sip_inv.h 3243 2010-08-01 09:48:51Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 293 | | skipping to change at line 293 | |
| | | | |
| /** | | /** | |
| * Indicate support for UPDATE method. This is automatically implied | | * Indicate support for UPDATE method. This is automatically implied | |
| * when creating outgoing dialog. After the dialog is established, | | * when creating outgoing dialog. After the dialog is established, | |
| * the options member of #pjsip_inv_session shows whether peer supports | | * the options member of #pjsip_inv_session shows whether peer supports | |
| * this method as well. | | * this method as well. | |
| */ | | */ | |
| PJSIP_INV_SUPPORT_UPDATE = 4, | | PJSIP_INV_SUPPORT_UPDATE = 4, | |
| | | | |
| /** | | /** | |
|
| | | * Indicate support for ICE | |
| | | */ | |
| | | PJSIP_INV_SUPPORT_ICE = 8, | |
| | | | |
| | | /** | |
| | | * Require ICE support. | |
| | | */ | |
| | | PJSIP_INV_REQUIRE_ICE = 16, | |
| | | | |
| | | /** | |
| * Require reliable provisional response extension. | | * Require reliable provisional response extension. | |
| */ | | */ | |
| PJSIP_INV_REQUIRE_100REL = 32, | | PJSIP_INV_REQUIRE_100REL = 32, | |
| | | | |
| /** | | /** | |
| * Require session timer extension. | | * Require session timer extension. | |
| */ | | */ | |
| PJSIP_INV_REQUIRE_TIMER = 64, | | PJSIP_INV_REQUIRE_TIMER = 64, | |
| | | | |
| /** | | /** | |
| * Session timer extension will always be used even when peer doesn't | | * Session timer extension will always be used even when peer doesn't | |
| * support/want session timer. | | * support/want session timer. | |
| */ | | */ | |
|
| PJSIP_INV_ALWAYS_USE_TIMER = 128, | | PJSIP_INV_ALWAYS_USE_TIMER = 128 | |
| | | | |
| }; | | }; | |
| | | | |
| /* Forward declaration of Session Timers */ | | /* Forward declaration of Session Timers */ | |
| struct pjsip_timer; | | struct pjsip_timer; | |
| | | | |
| /** | | /** | |
| * This structure describes the invite session. | | * This structure describes the invite session. | |
| * | | * | |
| * Note regarding the invite session's pools. The inv_sess used to have | | * Note regarding the invite session's pools. The inv_sess used to have | |
| | | | |
| skipping to change at line 368 | | skipping to change at line 378 | |
| 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.
*/ | |
| }; | | }; | |
| | | | |
| /** | | /** | |
|
| | | * This structure represents SDP information in a pjsip_rx_data. Applicatio | |
| | | n | |
| | | * retrieve this information by calling #pjsip_rdata_get_sdp_info(). This | |
| | | * mechanism supports multipart message body. | |
| | | */ | |
| | | typedef struct pjsip_rdata_sdp_info | |
| | | { | |
| | | /** | |
| | | * Pointer and length of the text body in the incoming message. If | |
| | | * the pointer is NULL, it means the message does not contain SDP | |
| | | * body. | |
| | | */ | |
| | | pj_str_t body; | |
| | | | |
| | | /** | |
| | | * This will contain non-zero if an invalid SDP body is found in the | |
| | | * message. | |
| | | */ | |
| | | pj_status_t sdp_err; | |
| | | | |
| | | /** | |
| | | * A parsed and validated SDP body. | |
| | | */ | |
| | | pjmedia_sdp_session *sdp; | |
| | | | |
| | | } pjsip_rdata_sdp_info; | |
| | | | |
| | | /** | |
| * Initialize the invite usage module and register it to the endpoint. | | * Initialize the invite usage module and register it to the endpoint. | |
| * The callback argument contains pointer to functions to be called on | | * The callback argument contains pointer to functions to be called on | |
| * occurences of events in invite sessions. | | * occurences of events in invite sessions. | |
| * | | * | |
| * @param endpt The endpoint instance. | | * @param endpt The endpoint instance. | |
| * @param cb Callback structure. | | * @param cb Callback structure. | |
| * | | * | |
| * @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_inv_usage_init(pjsip_endpoint *endpt, | | PJ_DECL(pj_status_t) pjsip_inv_usage_init(pjsip_endpoint *endpt, | |
| | | | |
| skipping to change at line 841 | | skipping to change at line 878 | |
| * @param sdp SDP session to be put in the SIP message body. | | * @param sdp SDP session to be put in the SIP message body. | |
| * @param p_body Pointer to receive SIP message body containing | | * @param p_body Pointer to receive SIP message body containing | |
| * the SDP session. | | * the SDP session. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_create_sdp_body(pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjsip_create_sdp_body(pj_pool_t *pool, | |
| pjmedia_sdp_session *sdp, | | pjmedia_sdp_session *sdp, | |
| pjsip_msg_body **p_body); | | pjsip_msg_body **p_body); | |
| | | | |
|
| | | /** | |
| | | * Retrieve SDP information from an incoming message. Application should | |
| | | * prefer to use this function rather than parsing the SDP manually since | |
| | | * this function supports multipart message body. | |
| | | * | |
| | | * This function will only parse the SDP once, the first time it is called | |
| | | * on the same message. Subsequent call on the same message will just pick | |
| | | * up the already parsed SDP from the message. | |
| | | * | |
| | | * @param rdata The incoming message. | |
| | | * | |
| | | * @return The SDP info. | |
| | | */ | |
| | | PJ_DECL(pjsip_rdata_sdp_info*) pjsip_rdata_get_sdp_info(pjsip_rx_data *rdat | |
| | | a); | |
| | | | |
| PJ_END_DECL | | PJ_END_DECL | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| #endif /* __SIP_INVITE_SESSION_H__ */ | | #endif /* __SIP_INVITE_SESSION_H__ */ | |
| | | | |
End of changes. 5 change blocks. |
| 2 lines changed or deleted | | 56 lines changed or added | |
|
| sip_msg.h | | sip_msg.h | |
|
| /* $Id: sip_msg.h 2968 2009-10-26 11:21:37Z bennylp $ */ | | /* $Id: sip_msg.h 3241 2010-08-01 09:24:58Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 457 | | skipping to change at line 457 | |
| PJSIP_SC_MESSAGE_TOO_LARGE = 513, | | PJSIP_SC_MESSAGE_TOO_LARGE = 513, | |
| PJSIP_SC_PRECONDITION_FAILURE = 580, | | PJSIP_SC_PRECONDITION_FAILURE = 580, | |
| | | | |
| PJSIP_SC_BUSY_EVERYWHERE = 600, | | PJSIP_SC_BUSY_EVERYWHERE = 600, | |
| PJSIP_SC_DECLINE = 603, | | PJSIP_SC_DECLINE = 603, | |
| PJSIP_SC_DOES_NOT_EXIST_ANYWHERE = 604, | | PJSIP_SC_DOES_NOT_EXIST_ANYWHERE = 604, | |
| PJSIP_SC_NOT_ACCEPTABLE_ANYWHERE = 606, | | PJSIP_SC_NOT_ACCEPTABLE_ANYWHERE = 606, | |
| | | | |
| PJSIP_SC_TSX_TIMEOUT = PJSIP_SC_REQUEST_TIMEOUT, | | PJSIP_SC_TSX_TIMEOUT = PJSIP_SC_REQUEST_TIMEOUT, | |
| /*PJSIP_SC_TSX_RESOLVE_ERROR = 702,*/ | | /*PJSIP_SC_TSX_RESOLVE_ERROR = 702,*/ | |
|
| PJSIP_SC_TSX_TRANSPORT_ERROR = PJSIP_SC_SERVICE_UNAVAILABLE | | PJSIP_SC_TSX_TRANSPORT_ERROR = PJSIP_SC_SERVICE_UNAVAILABLE, | |
| | | | |
| | | /* This is not an actual status code, but rather a constant | |
| | | * to force GCC to use 32bit to represent this enum, since | |
| | | * we have a code in PJSUA-LIB that assigns an integer | |
| | | * to this enum (see pjsua_acc_get_info() function). | |
| | | */ | |
| | | PJSIP_SC__force_32bit = 0x7FFFFFFF | |
| | | | |
| } pjsip_status_code; | | } pjsip_status_code; | |
| | | | |
| /** | | /** | |
| * Get the default status text for the status code. | | * Get the default status text for the status code. | |
| * | | * | |
| * @param status_code SIP Status Code | | * @param status_code SIP Status Code | |
| * | | * | |
| * @return textual message for the status code. | | * @return textual message for the status code. | |
| */ | | */ | |
| | | | |
| skipping to change at line 500 | | skipping to change at line 507 | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * This structure describes SIP media type, as used for example in | | * This structure describes SIP media type, as used for example in | |
| * Accept and Content-Type header.. | | * Accept and Content-Type header.. | |
| */ | | */ | |
| typedef struct pjsip_media_type | | typedef struct pjsip_media_type | |
| { | | { | |
| pj_str_t type; /**< Media type. */ | | pj_str_t type; /**< Media type. */ | |
| pj_str_t subtype; /**< Media subtype. */ | | pj_str_t subtype; /**< Media subtype. */ | |
|
| pj_str_t param; /**< Media type parameters (concatenated). */ | | pjsip_param param; /**< Media type parameters */ | |
| } pjsip_media_type; | | } pjsip_media_type; | |
| | | | |
| /** | | /** | |
|
| | | * Initialize the media type with the specified type and subtype string. | |
| | | * | |
| | | * @param mt The media type. | |
| | | * @param type Optionally specify the media type. | |
| | | * @param subtype Optionally specify the media subtype. | |
| | | */ | |
| | | PJ_DECL(void) pjsip_media_type_init(pjsip_media_type *mt, | |
| | | pj_str_t *type, | |
| | | pj_str_t *subtype); | |
| | | | |
| | | /** | |
| | | * Initialize the media type with the specified type and subtype string. | |
| | | * | |
| | | * @param mt The media type. | |
| | | * @param type Optionally specify the media type. | |
| | | * @param subtype Optionally specify the media subtype. | |
| | | */ | |
| | | PJ_DECL(void) pjsip_media_type_init2(pjsip_media_type *mt, | |
| | | char *type, | |
| | | char *subtype); | |
| | | | |
| | | /** | |
| | | * Compare two media types. | |
| | | * | |
| | | * @param mt1 The first media type. | |
| | | * @param mt2 The second media type. | |
| | | * | |
| | | * @return Zero if both media types are equal, -1 if mt1 < mt2, | |
| | | * 1 if mt1 > mt2. | |
| | | */ | |
| | | PJ_DECL(int) pjsip_media_type_cmp(const pjsip_media_type *mt1, | |
| | | const pjsip_media_type *mt2); | |
| | | | |
| | | /** | |
| * Copy SIP media type to another. | | * Copy SIP media type to another. | |
| * | | * | |
| * @param pool Pool to duplicate strings. | | * @param pool Pool to duplicate strings. | |
| * @param dst Destination structure. | | * @param dst Destination structure. | |
| * @param src Source structure. | | * @param src Source structure. | |
| */ | | */ | |
| PJ_DECL(void) pjsip_media_type_cp(pj_pool_t *pool, | | PJ_DECL(void) pjsip_media_type_cp(pj_pool_t *pool, | |
| pjsip_media_type *dst, | | pjsip_media_type *dst, | |
| const pjsip_media_type *src); | | const pjsip_media_type *src); | |
| | | | |
| /** | | /** | |
|
| | | * Print media type to the specified buffer. | |
| | | * | |
| | | * @param buf Destination buffer. | |
| | | * @param len Length of the buffer. | |
| | | * @param mt The media type to be printed. | |
| | | * | |
| | | * @return The number of characters printed to the buffer, or - | |
| | | 1 | |
| | | * if there's not enough space in the buffer. | |
| | | */ | |
| | | PJ_DECL(int) pjsip_media_type_print(char *buf, unsigned len, | |
| | | const pjsip_media_type *mt); | |
| | | | |
| | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| /* ************************************************************************
**/ | | /* ************************************************************************
**/ | |
| /** | | /** | |
| * @addtogroup PJSIP_MSG_BODY Message Body | | * @addtogroup PJSIP_MSG_BODY Message Body | |
| * @brief SIP message body structures and manipulation. | | * @brief SIP message body structures and manipulation. | |
| * @ingroup PJSIP_MSG | | * @ingroup PJSIP_MSG | |
| * @{ | | * @{ | |
| */ | | */ | |
| | | | |
End of changes. 5 change blocks. |
| 3 lines changed or deleted | | 58 lines changed or added | |
|
| sip_parser.h | | sip_parser.h | |
|
| /* $Id: sip_parser.h 2660 2009-04-28 19:38:43Z nanang $ */ | | /* $Id: sip_parser.h 3243 2010-08-01 09:48:51Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 275 | | skipping to change at line 275 | |
| * @param line Header content, which must be NULL terminated. | | * @param line Header content, which must be NULL terminated. | |
| * @param size The length of the string (not counting NULL terminat
or, | | * @param size The length of the string (not counting NULL terminat
or, | |
| * if any). | | * if any). | |
| * @param parsed_len If the value is not NULL, then upon return the funct
ion | | * @param parsed_len If the value is not NULL, then upon return the funct
ion | |
| * will fill the pointer with the length of the string | | * will fill the pointer with the length of the string | |
| * that has been parsed. This is usefull for two purpos
es, | | * that has been parsed. This is usefull for two purpos
es, | |
| * one is when the string may contain more than one hea
der | | * one is when the string may contain more than one hea
der | |
| * lines, and two when an error happen the value can | | * lines, and two when an error happen the value can | |
| * pinpoint the location of the error in the buffer. | | * pinpoint the location of the error in the buffer. | |
| * | | * | |
|
| * @return The instance of the header if parsing was successful
l, | | * @return The instance of the header if parsing was successful
, | |
| * or otherwise a NULL pointer will be returned. | | * or otherwise a NULL pointer will be returned. | |
| */ | | */ | |
| PJ_DECL(void*) pjsip_parse_hdr( pj_pool_t *pool, const pj_str_t *hname, | | PJ_DECL(void*) pjsip_parse_hdr( pj_pool_t *pool, const pj_str_t *hname, | |
| char *line, pj_size_t size, | | char *line, pj_size_t size, | |
| int *parsed_len); | | int *parsed_len); | |
| | | | |
| /** | | /** | |
| * Parse header line(s). Multiple headers can be parsed by this function. | | * Parse header line(s). Multiple headers can be parsed by this function. | |
| * When there are multiple headers, the headers MUST be separated by either | | * When there are multiple headers, the headers MUST be separated by either | |
| * a newline (as in SIP message) or ampersand mark (as in URI). This separa
tor | | * a newline (as in SIP message) or ampersand mark (as in URI). This separa
tor | |
|
| * however is optional for the last header. | | * is optional for the last header. | |
| * | | * | |
|
| * @param pool the pool. | | * @param pool The pool. | |
| * @param input the input text to parse, which must be NULL | | * @param input The input text to parse, which must be NULL | |
| terminated. | | terminated. | |
| * @param size the text length. | | * @param size The text length. | |
| * @param hlist the header list to store the parsed headers. | | * @param hlist The header list to store the parsed headers. | |
| * This list must have been initialized before calling | | * This list must have been initialized before calling | |
| * this function. | | * this function. | |
|
| | | * @param options Specify 1 here to make parsing stop when error is | |
| | | * encountered when parsing the header. Otherwise the | |
| | | * error is silently ignored and parsing resumes to the | |
| | | * next line. | |
| * @return zero if successfull, or -1 if error is encountered. | | * @return zero if successfull, or -1 if error is encountered. | |
| * Upon error, the \a hlist argument MAY contain | | * Upon error, the \a hlist argument MAY contain | |
| * successfully parsed headers. | | * successfully parsed headers. | |
| */ | | */ | |
|
| PJ_DECL(pj_status_t) pjsip_parse_headers( pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjsip_parse_headers( pj_pool_t *pool, char *input, | |
| char *input, pj_size_t size, | | pj_size_t size, pjsip_hdr *hlist, | |
| pj_list *hlist ); | | unsigned options); | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| #ifdef _MSC_VER | | #ifdef _MSC_VER | |
| # pragma warning(push) | | # pragma warning(push) | |
| # pragma warning(disable:4510) // default constructor could not be genera
ted | | # pragma warning(disable:4510) // default constructor could not be genera
ted | |
| # pragma warning(disable:4512) // assignment operator could not be genera
ted | | # pragma warning(disable:4512) // assignment operator could not be genera
ted | |
| # pragma warning(disable:4610) // user defined constructor required | | # pragma warning(disable:4610) // user defined constructor required | |
| | | | |
End of changes. 6 change blocks. |
| 11 lines changed or deleted | | 15 lines changed or added | |
|
| sip_uri.h | | sip_uri.h | |
|
| /* $Id: sip_uri.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sip_uri.h 3242 2010-08-01 09:26:34Z bennylp $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 67 | | skipping to change at line 67 | |
| | | | |
| /** | | /** | |
| * Find the specified parameter name in the list. The name will be compared | | * Find the specified parameter name in the list. The name will be compared | |
| * in case-insensitive comparison. | | * in case-insensitive comparison. | |
| * | | * | |
| * @param param_list List of parameters to find. | | * @param param_list List of parameters to find. | |
| * @param name Parameter/header name to find. | | * @param name Parameter/header name to find. | |
| * | | * | |
| * @return The parameter if found, or NULL. | | * @return The parameter if found, or NULL. | |
| */ | | */ | |
|
| PJ_DECL(pjsip_param*) pjsip_param_find( pjsip_param *param_list, | | PJ_DECL(pjsip_param*) pjsip_param_find( const pjsip_param *param_list, | |
| const pj_str_t *name ); | | const pj_str_t *name ); | |
| | | | |
| /** | | /** | |
|
| * Find the specified parameter name in the list. The name will be compared | | * Alias for pjsip_param_find() | |
| * in case-insensitive comparison. | | */ | |
| | | PJ_INLINE(pjsip_param*) pjsip_param_cfind(const pjsip_param *param_list, | |
| | | const pj_str_t *name) | |
| | | { | |
| | | return pjsip_param_find(param_list, name); | |
| | | } | |
| | | | |
| | | /** | |
| | | * Compare two parameter lists. | |
| * | | * | |
|
| * @param param_list List of parameters to find. | | * @param param_list1 First parameter list. | |
| * @param name Parameter/header name to find. | | * @param param_list2 Second parameter list. | |
| | | * @param ig_nf If set to 1, do not compare parameters that | |
| | | only | |
| | | * appear in one of the list. | |
| * | | * | |
|
| * @return The parameter if found, or NULL. | | * @return Zero if the parameter list are equal, non-zero | |
| | | * otherwise. | |
| */ | | */ | |
|
| PJ_DECL(const pjsip_param*) pjsip_param_cfind(const pjsip_param *param_list | | PJ_DECL(int) pjsip_param_cmp(const pjsip_param *param_list1, | |
| , | | const pjsip_param *param_list2, | |
| const pj_str_t *name ); | | pj_bool_t ig_nf); | |
| | | | |
| /** | | /** | |
| * Duplicate the parameters. | | * Duplicate the parameters. | |
| * | | * | |
| * @param pool Pool to allocate memory from. | | * @param pool Pool to allocate memory from. | |
| * @param dst_list Destination list. | | * @param dst_list Destination list. | |
| * @param src_list Source list. | | * @param src_list Source list. | |
| */ | | */ | |
| PJ_DECL(void) pjsip_param_clone(pj_pool_t *pool, pjsip_param *dst_list, | | PJ_DECL(void) pjsip_param_clone(pj_pool_t *pool, pjsip_param *dst_list, | |
| const pjsip_param *src_list); | | const pjsip_param *src_list); | |
| | | | |
End of changes. 6 change blocks. |
| 10 lines changed or deleted | | 22 lines changed or added | |
|
| stream.h | | stream.h | |
|
| /* $Id: stream.h 2844 2009-07-29 12:14:21Z bennylp $ */ | | /* $Id: stream.h 3237 2010-07-15 10:18:59Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 220 | | skipping to change at line 220 | |
| * #pjmedia_stream_get_stat_jbuf() | | * #pjmedia_stream_get_stat_jbuf() | |
| * | | * | |
| * @param stream The media stream. | | * @param stream The media stream. | |
| * @param stat Media stream statistics. | | * @param stat Media stream statistics. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_stream_get_stat( const pjmedia_stream *stream, | | PJ_DECL(pj_status_t) pjmedia_stream_get_stat( const pjmedia_stream *stream, | |
| pjmedia_rtcp_stat *stat); | | pjmedia_rtcp_stat *stat); | |
| | | | |
|
| | | /** | |
| | | * Reset the stream statistics. | |
| | | * | |
| | | * @param stream The media stream. | |
| | | * | |
| | | * @return PJ_SUCCESS on success. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_stream_reset_stat(pjmedia_stream *stream); | |
| | | | |
| #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | | #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | |
| /** | | /** | |
| * Get the stream extended report statistics (RTCP XR). | | * Get the stream extended report statistics (RTCP XR). | |
| * | | * | |
| * @param stream The media stream. | | * @param stream The media stream. | |
| * @param stat Media stream extended report statistics. | | * @param stat Media stream extended report statistics. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_stream_get_stat_xr( const pjmedia_stream *stre
am, | | PJ_DECL(pj_status_t) pjmedia_stream_get_stat_xr( const pjmedia_stream *stre
am, | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 10 lines changed or added | |
|
| stun_simple.h | | stun_simple.h | |
|
| /* $Id: stun_simple.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: stun_simple.h 3235 2010-07-06 08:11:04Z nanang $ */ | |
| /* | | /* | |
| * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) | | * Copyright (C) 2008-2009 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 61 | | skipping to change at line 61 | |
| PJSTUN_ATTR_MAPPED_ADDR = 1, | | PJSTUN_ATTR_MAPPED_ADDR = 1, | |
| PJSTUN_ATTR_RESPONSE_ADDR, | | PJSTUN_ATTR_RESPONSE_ADDR, | |
| PJSTUN_ATTR_CHANGE_REQUEST, | | PJSTUN_ATTR_CHANGE_REQUEST, | |
| PJSTUN_ATTR_SOURCE_ADDR, | | PJSTUN_ATTR_SOURCE_ADDR, | |
| PJSTUN_ATTR_CHANGED_ADDR, | | PJSTUN_ATTR_CHANGED_ADDR, | |
| PJSTUN_ATTR_USERNAME, | | PJSTUN_ATTR_USERNAME, | |
| PJSTUN_ATTR_PASSWORD, | | PJSTUN_ATTR_PASSWORD, | |
| PJSTUN_ATTR_MESSAGE_INTEGRITY, | | PJSTUN_ATTR_MESSAGE_INTEGRITY, | |
| PJSTUN_ATTR_ERROR_CODE, | | PJSTUN_ATTR_ERROR_CODE, | |
| PJSTUN_ATTR_UNKNOWN_ATTRIBUTES, | | PJSTUN_ATTR_UNKNOWN_ATTRIBUTES, | |
|
| PJSTUN_ATTR_REFLECTED_FORM | | PJSTUN_ATTR_REFLECTED_FROM, | |
| | | PJSTUN_ATTR_XOR_MAPPED_ADDR = 0x0020 | |
| } pjstun_attr_type; | | } pjstun_attr_type; | |
| | | | |
| /* | | /* | |
| * This structre describes STUN message header. | | * This structre describes STUN message header. | |
| */ | | */ | |
| typedef struct pjstun_msg_hdr | | typedef struct pjstun_msg_hdr | |
| { | | { | |
| pj_uint16_t type; | | pj_uint16_t type; | |
| pj_uint16_t length; | | pj_uint16_t length; | |
| pj_uint32_t tsx[4]; | | pj_uint32_t tsx[4]; | |
| | | | |
End of changes. 2 change blocks. |
| 2 lines changed or deleted | | 3 lines changed or added | |
|