| except.h | | except.h | |
|
| /* $Id: except.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: except.h 2878 2009-08-14 10:41:00Z 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 58 | | skipping to change at line 58 | |
| * C language. In Win32 systems, it uses Windows Structured Exception | | * C language. In Win32 systems, it uses Windows Structured Exception | |
| * Handling (SEH) if macro PJ_EXCEPTION_USE_WIN32_SEH is non-zero. | | * Handling (SEH) if macro PJ_EXCEPTION_USE_WIN32_SEH is non-zero. | |
| * Otherwise it will use setjmp() and longjmp(). | | * Otherwise it will use setjmp() and longjmp(). | |
| * | | * | |
| * On some platforms where setjmp/longjmp is not available, setjmp/longjmp | | * On some platforms where setjmp/longjmp is not available, setjmp/longjmp | |
| * implementation is provided. See <pj/compat/setjmp.h> for compatibility. | | * implementation is provided. See <pj/compat/setjmp.h> for compatibility. | |
| * | | * | |
| * The exception handling mechanism is completely thread safe, so the excep
tion | | * The exception handling mechanism is completely thread safe, so the excep
tion | |
| * thrown by one thread will not interfere with other thread. | | * thrown by one thread will not interfere with other thread. | |
| * | | * | |
|
| * CAVEATS: | | | |
| * - unlike C++ exception, the scheme here won't call destructors of local | | | |
| * objects if exception is thrown. Care must be taken when a function | | | |
| * hold some resorce such as pool or mutex etc. | | | |
| * - You CAN NOT make nested exception in one single function without usin | | | |
| g | | | |
| * a nested PJ_USE_EXCEPTION. | | | |
| * - You can not provide more than PJ_CATCH or PJ_CATCH_ANY nor use PJ_CAT | | | |
| CH | | | |
| * and PJ_CATCH_ANY for a single PJ_TRY. | | | |
| * - Exceptions will always be caught by the first handler (unlike C++ whe | | | |
| re | | | |
| * exception is only caught if the type matches. | | | |
| * | | | |
| * The exception handling constructs are similar to C++. The blocks will be | | * The exception handling constructs are similar to C++. The blocks will be | |
| * constructed similar to the following sample: | | * constructed similar to the following sample: | |
| * | | * | |
| * \verbatim | | * \verbatim | |
| #define NO_MEMORY 1 | | #define NO_MEMORY 1 | |
| #define SYNTAX_ERROR 2 | | #define SYNTAX_ERROR 2 | |
| | | | |
| int sample1() | | int sample1() | |
| { | | { | |
| PJ_USE_EXCEPTION; // declare local exception stack. | | PJ_USE_EXCEPTION; // declare local exception stack. | |
| | | | |
| skipping to change at line 128 | | skipping to change at line 117 | |
| * Exception ID management are performed with the following APIs: | | * Exception ID management are performed with the following APIs: | |
| * - #pj_exception_id_alloc(). | | * - #pj_exception_id_alloc(). | |
| * - #pj_exception_id_free(). | | * - #pj_exception_id_free(). | |
| * - #pj_exception_id_name(). | | * - #pj_exception_id_name(). | |
| * | | * | |
| * | | * | |
| * PJLIB itself automatically allocates one exception id, i.e. | | * PJLIB itself automatically allocates one exception id, i.e. | |
| * #PJ_NO_MEMORY_EXCEPTION which is declared in <pj/pool.h>. This exception | | * #PJ_NO_MEMORY_EXCEPTION which is declared in <pj/pool.h>. This exception | |
| * ID is raised by default pool policy when it fails to allocate memory. | | * ID is raised by default pool policy when it fails to allocate memory. | |
| * | | * | |
|
| | | * CAVEATS: | |
| | | * - unlike C++ exception, the scheme here won't call destructors of local | |
| | | * objects if exception is thrown. Care must be taken when a function | |
| | | * hold some resorce such as pool or mutex etc. | |
| | | * - You CAN NOT make nested exception in one single function without usin | |
| | | g | |
| | | * a nested PJ_USE_EXCEPTION. Samples: | |
| | | \verbatim | |
| | | void wrong_sample() | |
| | | { | |
| | | PJ_USE_EXCEPTION; | |
| | | | |
| | | PJ_TRY { | |
| | | // Do stuffs | |
| | | ... | |
| | | } | |
| | | PJ_CATCH_ANY { | |
| | | // Do other stuffs | |
| | | .... | |
| | | .. | |
| | | | |
| | | // The following block is WRONG! You MUST declare | |
| | | // PJ_USE_EXCEPTION once again in this block. | |
| | | PJ_TRY { | |
| | | .. | |
| | | } | |
| | | PJ_CATCH_ANY { | |
| | | .. | |
| | | } | |
| | | PJ_END; | |
| | | } | |
| | | PJ_END; | |
| | | } | |
| | | | |
| | | \endverbatim | |
| | | | |
| | | * - You MUST NOT exit the function inside the PJ_TRY block. The correct w | |
| | | ay | |
| | | * is to return from the function after PJ_END block is executed. | |
| | | * For example, the following code will yield crash not in this code, | |
| | | * but rather in the subsequent execution of PJ_TRY block: | |
| | | \verbatim | |
| | | void wrong_sample() | |
| | | { | |
| | | PJ_USE_EXCEPTION; | |
| | | | |
| | | PJ_TRY { | |
| | | // do some stuffs | |
| | | ... | |
| | | return; <======= DO NOT DO THIS! | |
| | | } | |
| | | PJ_CATCH_ANY { | |
| | | } | |
| | | PJ_END; | |
| | | } | |
| | | \endverbatim | |
| | | | |
| | | * - You can not provide more than PJ_CATCH or PJ_CATCH_ANY nor use PJ_CAT | |
| | | CH | |
| | | * and PJ_CATCH_ANY for a single PJ_TRY. | |
| | | * - Exceptions will always be caught by the first handler (unlike C++ whe | |
| | | re | |
| | | * exception is only caught if the type matches. | |
| | | | |
| * \section PJ_EX_KEYWORDS Keywords | | * \section PJ_EX_KEYWORDS Keywords | |
| * | | * | |
| * \subsection PJ_THROW PJ_THROW(expression) | | * \subsection PJ_THROW PJ_THROW(expression) | |
| * Throw an exception. The expression thrown is an integer as the result of | | * Throw an exception. The expression thrown is an integer as the result of | |
| * the \a expression. This keyword can be specified anywhere within the | | * the \a expression. This keyword can be specified anywhere within the | |
| * program. | | * program. | |
| * | | * | |
| * \subsection PJ_USE_EXCEPTION PJ_USE_EXCEPTION | | * \subsection PJ_USE_EXCEPTION PJ_USE_EXCEPTION | |
| * Specify this in the variable definition section of the function block | | * Specify this in the variable definition section of the function block | |
| * (or any blocks) to specify that the block has \a PJ_TRY/PJ_CATCH excepti
on | | * (or any blocks) to specify that the block has \a PJ_TRY/PJ_CATCH excepti
on | |
| | | | |
| skipping to change at line 309 | | skipping to change at line 358 | |
| pj_throw_exception_(pj_exception_id_t id) PJ_ATTR_NORETURN; | | pj_throw_exception_(pj_exception_id_t id) PJ_ATTR_NORETURN; | |
| | | | |
| /** | | /** | |
| * Push exception handler. | | * Push exception handler. | |
| */ | | */ | |
| PJ_DECL(void) pj_push_exception_handler_(struct pj_exception_state_t *rec); | | PJ_DECL(void) pj_push_exception_handler_(struct pj_exception_state_t *rec); | |
| | | | |
| /** | | /** | |
| * Pop exception handler. | | * Pop exception handler. | |
| */ | | */ | |
|
| PJ_DECL(void) pj_pop_exception_handler_(void); | | PJ_DECL(void) pj_pop_exception_handler_(struct pj_exception_state_t *rec); | |
| | | | |
| /** | | /** | |
| * Declare that the function will use exception. | | * Declare that the function will use exception. | |
| * @hideinitializer | | * @hideinitializer | |
| */ | | */ | |
| #define PJ_USE_EXCEPTION struct pj_exception_state_t pj_x_except__; int
pj_x_code__ | | #define PJ_USE_EXCEPTION struct pj_exception_state_t pj_x_except__; int
pj_x_code__ | |
| | | | |
| /** | | /** | |
| * Start exception specification block. | | * Start exception specification block. | |
| * @hideinitializer | | * @hideinitializer | |
| | | | |
| skipping to change at line 342 | | skipping to change at line 391 | |
| /** | | /** | |
| * Catch any exception number. | | * Catch any exception number. | |
| * @hideinitializer | | * @hideinitializer | |
| */ | | */ | |
| #define PJ_CATCH_ANY else | | #define PJ_CATCH_ANY else | |
| | | | |
| /** | | /** | |
| * End of exception specification block. | | * End of exception specification block. | |
| * @hideinitializer | | * @hideinitializer | |
| */ | | */ | |
|
| #define PJ_END pj_pop_exception_handler_(); \ | | #define PJ_END pj_pop_exception_handler_(&pj_x_except__); \ | |
| } else {} | | } else {} | |
| | | | |
| /** | | /** | |
| * Throw exception. | | * Throw exception. | |
| * @param exception_id The exception number. | | * @param exception_id The exception number. | |
| * @hideinitializer | | * @hideinitializer | |
| */ | | */ | |
| #define PJ_THROW(exception_id) pj_throw_exception_(exception_id) | | #define PJ_THROW(exception_id) pj_throw_exception_(exception_id) | |
| | | | |
| /** | | /** | |
| | | | |
End of changes. 5 change blocks. |
| 17 lines changed or deleted | | 67 lines changed or added | |
|
| log.h | | log.h | |
|
| /* $Id: log.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: log.h 2853 2009-08-05 10:58:02Z 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 83 | | skipping to change at line 83 | |
| PJ_LOG_HAS_YEAR = 2, /**< Include year digit [no]
*/ | | PJ_LOG_HAS_YEAR = 2, /**< Include year digit [no]
*/ | |
| PJ_LOG_HAS_MONTH = 4, /**< Include month [no]
*/ | | PJ_LOG_HAS_MONTH = 4, /**< Include month [no]
*/ | |
| PJ_LOG_HAS_DAY_OF_MON = 8, /**< Include day of month [no]
*/ | | PJ_LOG_HAS_DAY_OF_MON = 8, /**< Include day of month [no]
*/ | |
| PJ_LOG_HAS_TIME = 16, /**< Include time [yes]
*/ | | PJ_LOG_HAS_TIME = 16, /**< Include time [yes]
*/ | |
| PJ_LOG_HAS_MICRO_SEC = 32, /**< Include microseconds [yes]
*/ | | PJ_LOG_HAS_MICRO_SEC = 32, /**< Include microseconds [yes]
*/ | |
| PJ_LOG_HAS_SENDER = 64, /**< Include sender in the log [yes]
*/ | | PJ_LOG_HAS_SENDER = 64, /**< Include sender in the log [yes]
*/ | |
| PJ_LOG_HAS_NEWLINE = 128, /**< Terminate each call with newline [yes
] */ | | PJ_LOG_HAS_NEWLINE = 128, /**< Terminate each call with newline [yes
] */ | |
| PJ_LOG_HAS_CR = 256, /**< Include carriage return [no]
*/ | | PJ_LOG_HAS_CR = 256, /**< Include carriage return [no]
*/ | |
| PJ_LOG_HAS_SPACE = 512, /**< Include two spaces before log [yes]
*/ | | PJ_LOG_HAS_SPACE = 512, /**< Include two spaces before log [yes]
*/ | |
| PJ_LOG_HAS_COLOR = 1024, /**< Colorize logs [yes on win32]
*/ | | PJ_LOG_HAS_COLOR = 1024, /**< Colorize logs [yes on win32]
*/ | |
|
| PJ_LOG_HAS_LEVEL_TEXT = 2048 /**< Include level text string [no] | | PJ_LOG_HAS_LEVEL_TEXT = 2048, /**< Include level text string [no] | |
| */ | | */ | |
| | | PJ_LOG_HAS_THREAD_ID = 4096 /**< Include thread identification [no] | |
| | | */ | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * Write log message. | | * Write log message. | |
| * This is the main macro used to write text to the logging backend. | | * This is the main macro used to write text to the logging backend. | |
| * | | * | |
| * @param level The logging verbosity level. Lower number indica
tes higher | | * @param level The logging verbosity level. Lower number indica
tes higher | |
| * importance, with level zero indicates fatal error. Only | | * importance, with level zero indicates fatal error. Only | |
| * numeral argument is permitted (e.g. not variable). | | * numeral argument is permitted (e.g. not variable). | |
| * @param arg Enclosed 'printf' like arguments, with the first | | * @param arg Enclosed 'printf' like arguments, with the first | |
| | | | |
| skipping to change at line 220 | | skipping to change at line 221 | |
| PJ_DECL(void) pj_log_set_color(int level, pj_color_t color); | | PJ_DECL(void) pj_log_set_color(int level, pj_color_t color); | |
| | | | |
| /** | | /** | |
| * Get color of log messages. | | * Get color of log messages. | |
| * | | * | |
| * @param level Log level which color will be returned. | | * @param level Log level which color will be returned. | |
| * @return Log color. | | * @return Log color. | |
| */ | | */ | |
| PJ_DECL(pj_color_t) pj_log_get_color(int level); | | PJ_DECL(pj_color_t) pj_log_get_color(int level); | |
| | | | |
|
| | | /** | |
| | | * Internal function to be called by pj_init() | |
| | | */ | |
| | | pj_status_t pj_log_init(void); | |
| | | | |
| #else /* #if PJ_LOG_MAX_LEVEL >= 1 */ | | #else /* #if PJ_LOG_MAX_LEVEL >= 1 */ | |
| | | | |
| /** | | /** | |
| * Change log output function. The front-end logging functions will call | | * Change log output function. The front-end logging functions will call | |
| * this function to write the actual message to the desired device. | | * this function to write the actual message to the desired device. | |
| * By default, the front-end functions use pj_log_write() to write | | * By default, the front-end functions use pj_log_write() to write | |
| * the messages, unless it's changed by calling this function. | | * the messages, unless it's changed by calling this function. | |
| * | | * | |
| * @param func The function that will be called to write the log | | * @param func The function that will be called to write the log | |
| * messages to the desired device. | | * messages to the desired device. | |
| | | | |
| skipping to change at line 286 | | skipping to change at line 292 | |
| # define pj_log_get_decor() 0 | | # define pj_log_get_decor() 0 | |
| | | | |
| /** | | /** | |
| * Get color of log messages. | | * Get color of log messages. | |
| * | | * | |
| * @param level Log level which color will be returned. | | * @param level Log level which color will be returned. | |
| * @return Log color. | | * @return Log color. | |
| */ | | */ | |
| # define pj_log_get_color(level) 0 | | # define pj_log_get_color(level) 0 | |
| | | | |
|
| | | /** | |
| | | * Internal. | |
| | | */ | |
| | | # define pj_log_init() PJ_SUCCESS | |
| | | | |
| #endif /* #if PJ_LOG_MAX_LEVEL >= 1 */ | | #endif /* #if PJ_LOG_MAX_LEVEL >= 1 */ | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| /* ************************************************************************
**/ | | /* ************************************************************************
**/ | |
| /* | | /* | |
| * Log functions implementation prototypes. | | * Log functions implementation prototypes. | |
| * These functions are called by PJ_LOG macros according to verbosity | | * These functions are called by PJ_LOG macros according to verbosity | |
| | | | |
End of changes. 4 change blocks. |
| 3 lines changed or deleted | | 15 lines changed or added | |
|
| passthrough.h | | passthrough.h | |
|
| /* $Id: passthrough.h 2506 2009-03-12 18:11:37Z bennylp $ */ | | /* $Id: passthrough.h 2875 2009-08-13 15:57:26Z 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 32 | | skipping to change at line 32 | |
| | | | |
| /** | | /** | |
| * @file pjmedia-codec/passthrough.h | | * @file pjmedia-codec/passthrough.h | |
| * @brief Passthrough codecs. | | * @brief Passthrough codecs. | |
| */ | | */ | |
| | | | |
| #include <pjmedia-codec/types.h> | | #include <pjmedia-codec/types.h> | |
| | | | |
| /** | | /** | |
| * @defgroup PJMED_PASSTHROUGH_CODEC Passthrough Codecs | | * @defgroup PJMED_PASSTHROUGH_CODEC Passthrough Codecs | |
|
| * @ingroup PJMEDIA_CODEC | | * @ingroup PJMEDIA_CODEC_CODECS | |
| * @brief Implementation of passthrough codecs | | * @brief Implementation of passthrough codecs | |
| * @{ | | * @{ | |
| * | | * | |
| * This section describes functions to register and register passthrough | | * This section describes functions to register and register passthrough | |
| * codecs factory to the codec manager. After the codec factory has been | | * codecs factory to the codec manager. After the codec factory has been | |
| * registered, application can use @ref PJMEDIA_CODEC API to manipulate | | * registered, application can use @ref PJMEDIA_CODEC API to manipulate | |
| * the codec. This codec factory contains various codecs, e.g: G.729, iLBC, | | * the codec. This codec factory contains various codecs, e.g: G.729, iLBC, | |
| * AMR, and G.711. | | * AMR, and G.711. | |
| * | | * | |
| * Passthrough codecs are codecs wrapper that does not perform encoding | | * Passthrough codecs are codecs wrapper that does not perform encoding | |
| * or decoding, it just pack and parse encoded audio data from/into RTP | | * or decoding, it just pack and parse encoded audio data from/into RTP | |
| * payload. This will accomodate pjmedia ports which work with encoded | | * payload. This will accomodate pjmedia ports which work with encoded | |
| * audio data, e.g: encoded audio files, sound device with capability | | * audio data, e.g: encoded audio files, sound device with capability | |
| * of playing/recording encoded audio data. | | * of playing/recording encoded audio data. | |
| */ | | */ | |
| | | | |
| PJ_BEGIN_DECL | | PJ_BEGIN_DECL | |
| | | | |
| /** | | /** | |
|
| * Initialize and register passthrough codecs factory to pjmedia endpoint. | | * Codec passthrough configuration settings. | |
| | | */ | |
| | | typedef struct pjmedia_codec_passthrough_setting | |
| | | { | |
| | | unsigned fmt_cnt; /**< Number of encoding formats | |
| | | to be enabled. */ | |
| | | pjmedia_format *fmts; /**< Encoding formats to be | |
| | | enabled. */ | |
| | | unsigned ilbc_mode; /**< iLBC default mode. */ | |
| | | } pjmedia_codec_passthrough_setting; | |
| | | | |
| | | /** | |
| | | * Initialize and register passthrough codecs factory to pjmedia endpoint, | |
| | | * all supported encoding formats will be enabled. | |
| * | | * | |
| * @param endpt The pjmedia endpoint. | | * @param endpt The pjmedia endpoint. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_codec_passthrough_init( pjmedia_endpt *endpt )
; | | PJ_DECL(pj_status_t) pjmedia_codec_passthrough_init( pjmedia_endpt *endpt )
; | |
| | | | |
| /** | | /** | |
|
| | | * Initialize and register passthrough codecs factory to pjmedia endpoint | |
| | | * with only specified encoding formats enabled. | |
| | | * | |
| | | * @param endpt The pjmedia endpoint. | |
| | | * @param setting The settings, see @pjmedia_codec_passthrough_setting. | |
| | | * | |
| | | * @return PJ_SUCCESS on success. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_codec_passthrough_init2( | |
| | | pjmedia_endpt *endpt, | |
| | | const pjmedia_codec_passthrough_setting *setting); | |
| | | | |
| | | /** | |
| * Unregister passthrough codecs factory from pjmedia endpoint. | | * Unregister passthrough codecs factory from pjmedia endpoint. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_codec_passthrough_deinit(void); | | PJ_DECL(pj_status_t) pjmedia_codec_passthrough_deinit(void); | |
| | | | |
| PJ_END_DECL | | PJ_END_DECL | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| | | | |
End of changes. 4 change blocks. |
| 3 lines changed or deleted | | 29 lines changed or added | |
|
| pjsua.h | | pjsua.h | |
|
| /* $Id: pjsua.h 2762 2009-06-15 16:03:40Z bennylp $ */ | | /* $Id: pjsua.h 2864 2009-08-12 11:03:23Z 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 878 | | skipping to change at line 878 | |
| /** | | /** | |
| * Specify the URL of outbound proxies to visit for all outgoing reques
ts. | | * Specify the URL of outbound proxies to visit for all outgoing reques
ts. | |
| * The outbound proxies will be used for all accounts, and it will | | * The outbound proxies will be used for all accounts, and it will | |
| * be used to build the route set for outgoing requests. The final | | * be used to build the route set for outgoing requests. The final | |
| * route set for outgoing requests will consists of the outbound proxie
s | | * route set for outgoing requests will consists of the outbound proxie
s | |
| * and the proxy configured in the account. | | * and the proxy configured in the account. | |
| */ | | */ | |
| pj_str_t outbound_proxy[4]; | | pj_str_t outbound_proxy[4]; | |
| | | | |
| /** | | /** | |
|
| | | * Warning: deprecated, please use \a stun_srv field instead. To mainta | |
| | | in | |
| | | * backward compatibility, if \a stun_srv_cnt is zero then the value of | |
| | | * this field will be copied to \a stun_srv field, if present. | |
| | | * | |
| * Specify domain name to be resolved with DNS SRV resolution to get th
e | | * Specify domain name to be resolved with DNS SRV resolution to get th
e | |
| * address of the STUN server. Alternatively application may specify | | * address of the STUN server. Alternatively application may specify | |
| * \a stun_host instead. | | * \a stun_host instead. | |
| * | | * | |
| * If DNS SRV resolution failed for this domain, then DNS A resolution | | * If DNS SRV resolution failed for this domain, then DNS A resolution | |
| * will be performed only if \a stun_host is specified. | | * will be performed only if \a stun_host is specified. | |
| */ | | */ | |
| pj_str_t stun_domain; | | pj_str_t stun_domain; | |
| | | | |
| /** | | /** | |
|
| | | * Warning: deprecated, please use \a stun_srv field instead. To mainta | |
| | | in | |
| | | * backward compatibility, if \a stun_srv_cnt is zero then the value of | |
| | | * this field will be copied to \a stun_srv field, if present. | |
| | | * | |
| * Specify STUN server to be used, in "HOST[:PORT]" format. If port is | | * Specify STUN server to be used, in "HOST[:PORT]" format. If port is | |
| * not specified, default port 3478 will be used. | | * not specified, default port 3478 will be used. | |
| */ | | */ | |
| pj_str_t stun_host; | | pj_str_t stun_host; | |
| | | | |
| /** | | /** | |
|
| | | * Number of STUN server entries in \a stun_srv array. | |
| | | */ | |
| | | unsigned stun_srv_cnt; | |
| | | | |
| | | /** | |
| | | * Array of STUN servers to try. The library will try to resolve and | |
| | | * contact each of the STUN server entry until it finds one that is | |
| | | * usable. Each entry may be a domain name, host name, IP address, and | |
| | | * it may contain an optional port number. For example: | |
| | | * - "pjsip.org" (domain name) | |
| | | * - "sip.pjsip.org" (host name) | |
| | | * - "pjsip.org:33478" (domain name and a non-standard port number) | |
| | | * - "10.0.0.1:3478" (IP address and port number) | |
| | | * | |
| | | * When nameserver is configured in the \a pjsua_config.nameserver fiel | |
| | | d, | |
| | | * if entry is not an IP address, it will be resolved with DNS SRV | |
| | | * resolution first, and it will fallback to use DNS A resolution if th | |
| | | is | |
| | | * fails. Port number may be specified even if the entry is a domain na | |
| | | me, | |
| | | * in case the DNS SRV resolution should fallback to a non-standard por | |
| | | t. | |
| | | * | |
| | | * When nameserver is not configured, entries will be resolved with | |
| | | * #pj_gethostbyname() if it's not an IP address. Port number may be | |
| | | * specified if the server is not listening in standard STUN port. | |
| | | */ | |
| | | pj_str_t stun_srv[8]; | |
| | | | |
| | | /** | |
| | | * This specifies if the library startup should ignore failure with the | |
| | | * STUN servers. If this is set to PJ_FALSE, the library will refuse to | |
| | | * start if it fails to resolve or contact any of the STUN servers. | |
| | | * | |
| | | * Default: PJ_TRUE | |
| | | */ | |
| | | pj_bool_t stun_ignore_failure; | |
| | | | |
| | | /** | |
| * Support for adding and parsing NAT type in the SDP to assist | | * Support for adding and parsing NAT type in the SDP to assist | |
| * troubleshooting. The valid values are: | | * troubleshooting. The valid values are: | |
| * - 0: no information will be added in SDP, and parsing is disabled. | | * - 0: no information will be added in SDP, and parsing is disabled. | |
| * - 1: only the NAT type number is added. | | * - 1: only the NAT type number is added. | |
| * - 2: add both NAT type number and name. | | * - 2: add both NAT type number and name. | |
| * | | * | |
| * Default: 1 | | * Default: 1 | |
| */ | | */ | |
| int nat_type_in_sdp; | | int nat_type_in_sdp; | |
| | | | |
| /** | | /** | |
| * Specify whether support for reliable provisional response (100rel an
d | | * Specify whether support for reliable provisional response (100rel an
d | |
| * PRACK) should be required by default. Note that this setting can be | | * PRACK) should be required by default. Note that this setting can be | |
| * further customized in account configuration (#pjsua_acc_config). | | * further customized in account configuration (#pjsua_acc_config). | |
| * | | * | |
| * Default: PJ_FALSE | | * Default: PJ_FALSE | |
| */ | | */ | |
| pj_bool_t require_100rel; | | pj_bool_t require_100rel; | |
| | | | |
| /** | | /** | |
|
| | | * Specify whether support for Session Timers should be required by | |
| | | * default. Note that this setting can be further customized in account | |
| | | * configuration (#pjsua_acc_config). | |
| | | * | |
| | | * Default: PJ_FALSE | |
| | | */ | |
| | | pj_bool_t require_timer; | |
| | | | |
| | | /** | |
| | | * Specify Session Timer settings, see #pjsip_timer_setting. | |
| | | * Note that this setting can be further customized in account | |
| | | * configuration (#pjsua_acc_config). | |
| | | */ | |
| | | pjsip_timer_setting timer_setting; | |
| | | | |
| | | /** | |
| * Number of credentials in the credential array. | | * Number of credentials in the credential array. | |
| */ | | */ | |
| unsigned cred_count; | | unsigned cred_count; | |
| | | | |
| /** | | /** | |
| * Array of credentials. These credentials will be used by all accounts
, | | * Array of credentials. These credentials will be used by all accounts
, | |
| * and can be used to authenticate against outbound proxies. If the | | * and can be used to authenticate against outbound proxies. If the | |
| * credential is specific to the account, then application should set | | * credential is specific to the account, then application should set | |
| * the credential in the pjsua_acc_config rather than the credential | | * the credential in the pjsua_acc_config rather than the credential | |
| * here. | | * here. | |
| | | | |
| skipping to change at line 1170 | | skipping to change at line 1230 | |
| * @return Pool factory currently used by PJSUA. | | * @return Pool factory currently used by PJSUA. | |
| */ | | */ | |
| PJ_DECL(pj_pool_factory*) pjsua_get_pool_factory(void); | | PJ_DECL(pj_pool_factory*) pjsua_get_pool_factory(void); | |
| | | | |
| /**************************************************************************
*** | | /**************************************************************************
*** | |
| * Utilities. | | * Utilities. | |
| * | | * | |
| */ | | */ | |
| | | | |
| /** | | /** | |
|
| | | * This structure is used to represent the result of the STUN server | |
| | | * resolution and testing, the #pjsua_resolve_stun_servers() function. | |
| | | * This structure will be passed in #pj_stun_resolve_cb callback. | |
| | | */ | |
| | | typedef struct pj_stun_resolve_result | |
| | | { | |
| | | /** | |
| | | * Arbitrary data that was passed to #pjsua_resolve_stun_servers() | |
| | | * function. | |
| | | */ | |
| | | void *token; | |
| | | | |
| | | /** | |
| | | * This will contain PJ_SUCCESS if at least one usable STUN server | |
| | | * is found, otherwise it will contain the last error code during | |
| | | * the operation. | |
| | | */ | |
| | | pj_status_t status; | |
| | | | |
| | | /** | |
| | | * The server name that yields successful result. This will only | |
| | | * contain value if status is successful. | |
| | | */ | |
| | | pj_str_t name; | |
| | | | |
| | | /** | |
| | | * The server IP address. This will only contain value if status | |
| | | * is successful. | |
| | | */ | |
| | | pj_sockaddr addr; | |
| | | | |
| | | } pj_stun_resolve_result; | |
| | | | |
| | | /** | |
| | | * Typedef of callback to be registered to #pjsua_resolve_stun_servers(). | |
| | | */ | |
| | | typedef void (*pj_stun_resolve_cb)(const pj_stun_resolve_result *result); | |
| | | | |
| | | /** | |
| * This is a utility function to detect NAT type in front of this | | * This is a utility function to detect NAT type in front of this | |
| * endpoint. Once invoked successfully, this function will complete | | * endpoint. Once invoked successfully, this function will complete | |
| * asynchronously and report the result in \a on_nat_detect() callback | | * asynchronously and report the result in \a on_nat_detect() callback | |
| * of pjsua_callback. | | * of pjsua_callback. | |
| * | | * | |
| * After NAT has been detected and the callback is called, application can | | * After NAT has been detected and the callback is called, application can | |
| * get the detected NAT type by calling #pjsua_get_nat_type(). Application | | * get the detected NAT type by calling #pjsua_get_nat_type(). Application | |
| * can also perform NAT detection by calling #pjsua_detect_nat_type() | | * can also perform NAT detection by calling #pjsua_detect_nat_type() | |
| * again at later time. | | * again at later time. | |
| * | | * | |
| | | | |
| skipping to change at line 1206 | | skipping to change at line 1305 | |
| * detected successfully, this function will return | | * detected successfully, this function will return | |
| * PJ_SUCCESS and \a type will be set to the correct | | * PJ_SUCCESS and \a type will be set to the correct | |
| * value. Other return values indicate error and | | * value. Other return values indicate error and | |
| * \a type will be set to PJ_STUN_NAT_TYPE_ERR_UNKNOWN. | | * \a type will be set to PJ_STUN_NAT_TYPE_ERR_UNKNOWN. | |
| * | | * | |
| * @see pjsua_call_get_rem_nat_type() | | * @see pjsua_call_get_rem_nat_type() | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsua_get_nat_type(pj_stun_nat_type *type); | | PJ_DECL(pj_status_t) pjsua_get_nat_type(pj_stun_nat_type *type); | |
| | | | |
| /** | | /** | |
|
| | | * Auxiliary function to resolve and contact each of the STUN server | |
| | | * entries (sequentially) to find which is usable. The #pjsua_init() must | |
| | | * have been called before calling this function. | |
| | | * | |
| | | * @param count Number of STUN server entries to try. | |
| | | * @param srv Array of STUN server entries to try. Please see | |
| | | * the \a stun_srv field in the #pjsua_config | |
| | | * documentation about the format of this entry. | |
| | | * @param wait Specify non-zero to make the function block until | |
| | | * it gets the result. In this case, the function | |
| | | * will block while the resolution is being done, | |
| | | * and the callback will be called before this function | |
| | | * returns. | |
| | | * @param token Arbitrary token to be passed back to applica | |
| | | tion | |
| | | * in the callback. | |
| | | * @param cb Callback to be called to notify the result of | |
| | | * the function. | |
| | | * | |
| | | * @return If \a wait parameter is non-zero, this will return | |
| | | * PJ_SUCCESS if one usable STUN server is found. | |
| | | * Otherwise it will always return PJ_SUCCESS, and | |
| | | * application will be notified about the result in | |
| | | * the callback. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsua_resolve_stun_servers(unsigned count, | |
| | | pj_str_t srv[], | |
| | | pj_bool_t wait, | |
| | | void *token, | |
| | | pj_stun_resolve_cb cb); | |
| | | | |
| | | /** | |
| | | * Cancel pending STUN resolution which match the specified token. | |
| | | * | |
| | | * @param token The token to match. This token was given to | |
| | | * #pjsua_resolve_stun_servers() | |
| | | * @param notify_cb Boolean to control whether the callback should | |
| | | * be called for cancelled resolutions. When the | |
| | | * callback is called, the status in the result | |
| | | * will be set as PJ_ECANCELLED. | |
| | | * | |
| | | * @return PJ_SUCCESS if there is at least one pending STUN | |
| | | * resolution cancelled, or PJ_ENOTFOUND if there is | |
| | | * no matching one, or other error. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsua_cancel_stun_resolution(void *token, | |
| | | pj_bool_t notify_cb); | |
| | | | |
| | | /** | |
| * This is a utility function to verify that valid SIP url is given. If the | | * This is a utility function to verify that valid SIP url is given. If the | |
| * URL is valid, PJ_SUCCESS will be returned. | | * URL is valid, PJ_SUCCESS will be returned. | |
| * | | * | |
| * @param url The URL, as NULL terminated string. | | * @param url The URL, as NULL terminated string. | |
| * | | * | |
| * @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) pjsua_verify_sip_url(const char *url); | | PJ_DECL(pj_status_t) pjsua_verify_sip_url(const char *url); | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 1611 | | skipping to change at line 1758 | |
| pj_str_t pidf_tuple_id; | | pj_str_t pidf_tuple_id; | |
| | | | |
| /** | | /** | |
| * Optional URI to be put as Contact for this account. It is recommende
d | | * Optional URI to be put as Contact for this account. It is recommende
d | |
| * that this field is left empty, so that the value will be calculated | | * that this field is left empty, so that the value will be calculated | |
| * automatically based on the transport address. | | * automatically based on the transport address. | |
| */ | | */ | |
| pj_str_t force_contact; | | pj_str_t force_contact; | |
| | | | |
| /** | | /** | |
|
| * Additional URI parameters that will be appended in the Contact heade
r | | * Additional parameters that will be appended in the Contact header | |
| * for this account. This will affect the Contact header in all SIP | | * for this account. This will affect the Contact header in all SIP | |
| * messages sent on behalf of this account, including but not limited t
o | | * messages sent on behalf of this account, including but not limited t
o | |
| * REGISTER, INVITE, and SUBCRIBE requests or responses. | | * REGISTER, INVITE, and SUBCRIBE requests or responses. | |
| * | | * | |
| * The parameters should be preceeded by semicolon, and all strings mus
t | | * The parameters should be preceeded by semicolon, and all strings mus
t | |
| * be properly escaped. Example: | | * be properly escaped. Example: | |
| * ";my-param=X;another-param=Hi%20there" | | * ";my-param=X;another-param=Hi%20there" | |
| */ | | */ | |
| pj_str_t contact_params; | | pj_str_t contact_params; | |
| | | | |
| /** | | /** | |
|
| | | * Additional URI parameters that will be appended in the Contact URI | |
| | | * for this account. This will affect the Contact URI in all SIP | |
| | | * messages sent on behalf of this account, including but not limited t | |
| | | o | |
| | | * REGISTER, INVITE, and SUBCRIBE requests or responses. | |
| | | * | |
| | | * The parameters should be preceeded by semicolon, and all strings mus | |
| | | t | |
| | | * be properly escaped. Example: | |
| | | * ";my-param=X;another-param=Hi%20there" | |
| | | */ | |
| | | pj_str_t contact_uri_params; | |
| | | | |
| | | /** | |
| * Specify whether support for reliable provisional response (100rel an
d | | * Specify whether support for reliable provisional response (100rel an
d | |
| * PRACK) should be required for all sessions of this account. | | * PRACK) should be required for all sessions of this account. | |
| * | | * | |
| * Default: PJ_FALSE | | * Default: PJ_FALSE | |
| */ | | */ | |
| pj_bool_t require_100rel; | | pj_bool_t require_100rel; | |
| | | | |
| /** | | /** | |
|
| | | * Specify whether support for Session Timers should be required for al | |
| | | l | |
| | | * sessions of this account. | |
| | | * | |
| | | * Default: PJ_FALSE | |
| | | */ | |
| | | pj_bool_t require_timer; | |
| | | | |
| | | /** | |
| | | * Specify Session Timer settings, see #pjsip_timer_setting. | |
| | | */ | |
| | | pjsip_timer_setting timer_setting; | |
| | | | |
| | | /** | |
| * Number of proxies in the proxy array below. | | * Number of proxies in the proxy array below. | |
| */ | | */ | |
| unsigned proxy_cnt; | | unsigned proxy_cnt; | |
| | | | |
| /** | | /** | |
| * Optional URI of the proxies to be visited for all outgoing requests | | * Optional URI of the proxies to be visited for all outgoing requests | |
| * that are using this account (REGISTER, INVITE, etc). Application nee
d | | * that are using this account (REGISTER, INVITE, etc). Application nee
d | |
| * to specify these proxies if the service provider requires that reque
sts | | * to specify these proxies if the service provider requires that reque
sts | |
| * destined towards its network should go through certain proxies first | | * destined towards its network should go through certain proxies first | |
| * (for example, border controllers). | | * (for example, border controllers). | |
| | | | |
| skipping to change at line 2076 | | skipping to change at line 2248 | |
| * @param p_tdata Pointer to receive the request. | | * @param p_tdata Pointer to receive the request. | |
| * | | * | |
| * @return PJ_SUCCESS or the error code. | | * @return PJ_SUCCESS or the error code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsua_acc_create_request(pjsua_acc_id acc_id, | | PJ_DECL(pj_status_t) pjsua_acc_create_request(pjsua_acc_id acc_id, | |
| const pjsip_method *method, | | const pjsip_method *method, | |
| const pj_str_t *target, | | const pj_str_t *target, | |
| pjsip_tx_data **p_tdata); | | pjsip_tx_data **p_tdata); | |
| | | | |
| /** | | /** | |
|
| * Create a suitable URI to be put as Contact based on the specified | | * Create a suitable Contact header value, based on the specified target UR | |
| * target URI for the specified account. | | I | |
| | | * for the specified account. | |
| * | | * | |
| * @param pool Pool to allocate memory for the string. | | * @param pool Pool to allocate memory for the string. | |
|
| * @param contact The string where the Contact URI will be stored. | | * @param contact The string where the Contact will be stored. | |
| * @param acc_id Account ID. | | * @param acc_id Account ID. | |
| * @param uri Destination URI of the request. | | * @param uri Destination URI of the request. | |
| * | | * | |
| * @return PJ_SUCCESS on success, other on error. | | * @return PJ_SUCCESS on success, other on error. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsua_acc_create_uac_contact( pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjsua_acc_create_uac_contact( pj_pool_t *pool, | |
| pj_str_t *contact, | | pj_str_t *contact, | |
| pjsua_acc_id acc_id, | | pjsua_acc_id acc_id, | |
| const pj_str_t *uri); | | const pj_str_t *uri); | |
| | | | |
| /** | | /** | |
|
| * Create a suitable URI to be put as Contact based on the information | | * Create a suitable Contact header value, based on the information in the | |
| * in the incoming request. | | * incoming request. | |
| * | | * | |
| * @param pool Pool to allocate memory for the string. | | * @param pool Pool to allocate memory for the string. | |
|
| * @param contact The string where the Contact URI will be stored. | | * @param contact The string where the Contact will be stored. | |
| * @param acc_id Account ID. | | * @param acc_id Account ID. | |
| * @param rdata Incoming request. | | * @param rdata Incoming request. | |
| * | | * | |
| * @return PJ_SUCCESS on success, other on error. | | * @return PJ_SUCCESS on success, other on error. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsua_acc_create_uas_contact( pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjsua_acc_create_uas_contact( pj_pool_t *pool, | |
| pj_str_t *contact, | | pj_str_t *contact, | |
| pjsua_acc_id acc_id, | | pjsua_acc_id acc_id, | |
| pjsip_rx_data *rdata ); | | pjsip_rx_data *rdata ); | |
| | | | |
| | | | |
| skipping to change at line 2790 | | skipping to change at line 2962 | |
| * If \a monitor_pres is enabled, this specifies the last state of the | | * If \a monitor_pres is enabled, this specifies the last state of the | |
| * presence subscription. If presence subscription session is currently | | * presence subscription. If presence subscription session is currently | |
| * active, the value will be PJSIP_EVSUB_STATE_ACTIVE. If presence | | * active, the value will be PJSIP_EVSUB_STATE_ACTIVE. If presence | |
| * subscription request has been rejected, the value will be | | * subscription request has been rejected, the value will be | |
| * PJSIP_EVSUB_STATE_TERMINATED, and the termination reason will be | | * PJSIP_EVSUB_STATE_TERMINATED, and the termination reason will be | |
| * specified in \a sub_term_reason. | | * specified in \a sub_term_reason. | |
| */ | | */ | |
| pjsip_evsub_state sub_state; | | pjsip_evsub_state sub_state; | |
| | | | |
| /** | | /** | |
|
| | | * String representation of subscription state. | |
| | | */ | |
| | | const char *sub_state_name; | |
| | | | |
| | | /** | |
| * Specifies the last presence subscription terminatino reason. If | | * Specifies the last presence subscription terminatino reason. If | |
| * presence subscription is currently active, the value will be empty. | | * presence subscription is currently active, the value will be empty. | |
| */ | | */ | |
| pj_str_t sub_term_reason; | | pj_str_t sub_term_reason; | |
| | | | |
| /** | | /** | |
| * Extended RPID information about the person. | | * Extended RPID information about the person. | |
| */ | | */ | |
| pjrpid_element rpid; | | pjrpid_element rpid; | |
| | | | |
| | | | |
End of changes. 15 change blocks. |
| 8 lines changed or deleted | | 196 lines changed or added | |
|
| pjsua_internal.h | | pjsua_internal.h | |
|
| /* $Id: pjsua_internal.h 2506 2009-03-12 18:11:37Z bennylp $ */ | | /* $Id: pjsua_internal.h 2874 2009-08-13 15:55:47Z 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 85 | | skipping to change at line 85 | |
| bit 0/LSB : sequence flag | | bit 0/LSB : sequence flag | |
| bit 1 : timestamp flag
*/ | | bit 1 : timestamp flag
*/ | |
| int conf_slot; /**< Slot # in conference bridge
. */ | | int conf_slot; /**< Slot # in conference bridge
. */ | |
| pjsip_evsub *xfer_sub; /**< Xfer server subscription, i
f this | | pjsip_evsub *xfer_sub; /**< Xfer server subscription, i
f this | |
| call was triggered by xfer.
*/ | | call was triggered by xfer.
*/ | |
| pjmedia_transport *med_tp; /**< Current media transport.
*/ | | pjmedia_transport *med_tp; /**< Current media transport.
*/ | |
| pj_status_t med_tp_ready;/**< Media transport status.
*/ | | pj_status_t med_tp_ready;/**< Media transport status.
*/ | |
| pjmedia_transport *med_orig; /**< Original media transport
*/ | | pjmedia_transport *med_orig; /**< Original media transport
*/ | |
| 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_timer_entry refresh_tm;/**< Timer to send re-INVITE. | | | |
| */ | | | |
| pj_timer_entry hangup_tm; /**< Timer to hangup call. | | | |
| */ | | | |
| 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.
*/ | |
| | | | |
| } pjsua_call; | | } pjsua_call; | |
| | | | |
| /** | | /** | |
| * Server presence subscription list head. | | * Server presence subscription list head. | |
| */ | | */ | |
| | | | |
| skipping to change at line 119 | | skipping to change at line 117 | |
| */ | | */ | |
| typedef struct pjsua_acc | | typedef struct pjsua_acc | |
| { | | { | |
| pj_pool_t *pool; /**< Pool for this account. */ | | pj_pool_t *pool; /**< Pool for this account. */ | |
| pjsua_acc_config cfg; /**< Account configuration. */ | | pjsua_acc_config cfg; /**< Account configuration. */ | |
| pj_bool_t valid; /**< Is this account valid? */ | | pj_bool_t valid; /**< Is this account valid? */ | |
| | | | |
| int index; /**< Index in accounts array.
*/ | | int index; /**< Index in accounts array.
*/ | |
| pj_str_t display; /**< Display name, if any. */ | | pj_str_t display; /**< Display name, if any. */ | |
| pj_str_t user_part; /**< User part of local URI. */ | | pj_str_t user_part; /**< User part of local URI. */ | |
|
| pj_str_t contact; /**< Our Contact URI for REGISTER */ | | pj_str_t contact; /**< Our Contact header. */ | |
| | | | |
| pj_str_t srv_domain; /**< Host part of reg server. */ | | pj_str_t srv_domain; /**< Host part of reg server. */ | |
| int srv_port; /**< Port number of reg server.
*/ | | int srv_port; /**< Port number of reg server.
*/ | |
| | | | |
| pjsip_regc *regc; /**< Client registration session. */ | | pjsip_regc *regc; /**< Client registration session. */ | |
| pj_status_t reg_last_err; /**< Last registration error.
*/ | | pj_status_t reg_last_err; /**< Last registration error.
*/ | |
| int reg_last_code; /**< Last status last register.
*/ | | int reg_last_code; /**< Last status last register.
*/ | |
| | | | |
| pj_timer_entry ka_timer; /**< Keep-alive timer for UDP. */ | | pj_timer_entry ka_timer; /**< Keep-alive timer for UDP. */ | |
| pjsip_transport *ka_transport; /**< Transport for keep-alive. */ | | pjsip_transport *ka_transport; /**< Transport for keep-alive. */ | |
| | | | |
| skipping to change at line 209 | | skipping to change at line 207 | |
| /** | | /** | |
| * Additional parameters for conference bridge. | | * Additional parameters for conference bridge. | |
| */ | | */ | |
| typedef struct pjsua_conf_setting | | typedef struct pjsua_conf_setting | |
| { | | { | |
| unsigned channel_count; | | unsigned channel_count; | |
| unsigned samples_per_frame; | | unsigned samples_per_frame; | |
| unsigned bits_per_sample; | | unsigned bits_per_sample; | |
| } pjsua_conf_setting; | | } pjsua_conf_setting; | |
| | | | |
|
| | | typedef struct pjsua_stun_resolve | |
| | | { | |
| | | PJ_DECL_LIST_MEMBER(struct pjsua_stun_resolve); | |
| | | | |
| | | pj_pool_t *pool; /**< Pool */ | |
| | | unsigned count; /**< # of entries */ | |
| | | pj_str_t *srv; /**< Array of entries */ | |
| | | unsigned idx; /**< Current index */ | |
| | | void *token; /**< App token */ | |
| | | pj_stun_resolve_cb cb; /**< App callback */ | |
| | | pj_bool_t blocking; /**< Blocking? */ | |
| | | pj_status_t status; /**< Session status */ | |
| | | pj_sockaddr addr; /**< Result */ | |
| | | pj_stun_sock *stun_sock; /**< Testing STUN sock */ | |
| | | } pjsua_stun_resolve; | |
| | | | |
| /** | | /** | |
| * Global pjsua application data. | | * Global pjsua application data. | |
| */ | | */ | |
| struct pjsua_data | | struct pjsua_data | |
| { | | { | |
| | | | |
| /* Control: */ | | /* Control: */ | |
| pj_caching_pool cp; /**< Global pool factory. */ | | pj_caching_pool cp; /**< Global pool factory. */ | |
| pj_pool_t *pool; /**< pjsua's private pool. */ | | pj_pool_t *pool; /**< pjsua's private pool. */ | |
| pj_mutex_t *mutex; /**< Mutex protection for this data */ | | pj_mutex_t *mutex; /**< Mutex protection for this data */ | |
| | | | |
| skipping to change at line 237 | | skipping to change at line 251 | |
| pjsua_transport_data tpdata[8]; /**< Array of transports. */ | | pjsua_transport_data tpdata[8]; /**< Array of transports. */ | |
| | | | |
| /* Threading: */ | | /* Threading: */ | |
| pj_bool_t thread_quit_flag; /**< Thread quit flag. */ | | pj_bool_t thread_quit_flag; /**< Thread quit flag. */ | |
| pj_thread_t *thread[4]; /**< Array of threads.
*/ | | pj_thread_t *thread[4]; /**< Array of threads.
*/ | |
| | | | |
| /* STUN and resolver */ | | /* STUN and resolver */ | |
| pj_stun_config stun_cfg; /**< Global STUN settings. */ | | pj_stun_config stun_cfg; /**< Global STUN settings. */ | |
| 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*/ | |
| 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 */ | |
| | | | |
| /* 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 */ | |
| | | | |
| skipping to change at line 340 | | skipping to change at line 355 | |
| #if 1 | | #if 1 | |
| #define PJSUA_LOCK() pj_mutex_lock(pjsua_var.mutex) | | #define PJSUA_LOCK() pj_mutex_lock(pjsua_var.mutex) | |
| #define PJSUA_TRY_LOCK() pj_mutex_trylock(pjsua_var.mutex) | | #define PJSUA_TRY_LOCK() pj_mutex_trylock(pjsua_var.mutex) | |
| #define PJSUA_UNLOCK() pj_mutex_unlock(pjsua_var.mutex) | | #define PJSUA_UNLOCK() pj_mutex_unlock(pjsua_var.mutex) | |
| #else | | #else | |
| #define PJSUA_LOCK() | | #define PJSUA_LOCK() | |
| #define PJSUA_TRY_LOCK() PJ_SUCCESS | | #define PJSUA_TRY_LOCK() PJ_SUCCESS | |
| #define PJSUA_UNLOCK() | | #define PJSUA_UNLOCK() | |
| #endif | | #endif | |
| | | | |
|
| | | /****** | |
| | | * STUN resolution | |
| | | */ | |
| | | /* Resolve the STUN server */ | |
| | | pj_status_t resolve_stun_server(pj_bool_t wait); | |
| | | | |
| /** | | /** | |
| * Normalize route URI (check for ";lr" and append one if it doesn't | | * Normalize route URI (check for ";lr" and append one if it doesn't | |
| * exist and pjsua_config.force_lr is set. | | * exist and pjsua_config.force_lr is set. | |
| */ | | */ | |
| pj_status_t normalize_route_uri(pj_pool_t *pool, pj_str_t *uri); | | pj_status_t normalize_route_uri(pj_pool_t *pool, pj_str_t *uri); | |
| | | | |
| /** | | /** | |
|
| * Resolve STUN server. | | | |
| */ | | | |
| pj_status_t pjsua_resolve_stun_server(pj_bool_t wait); | | | |
| | | | |
| /** | | | |
| * Handle incoming invite request. | | * Handle incoming invite request. | |
| */ | | */ | |
| pj_bool_t pjsua_call_on_incoming(pjsip_rx_data *rdata); | | pj_bool_t pjsua_call_on_incoming(pjsip_rx_data *rdata); | |
| | | | |
| /* | | /* | |
| * Media channel. | | * Media channel. | |
| */ | | */ | |
| pj_status_t pjsua_media_channel_init(pjsua_call_id call_id, | | pj_status_t pjsua_media_channel_init(pjsua_call_id call_id, | |
| pjsip_role_e role, | | pjsip_role_e role, | |
| int security_level, | | int security_level, | |
| | | | |
End of changes. 7 change blocks. |
| 11 lines changed or deleted | | 25 lines changed or added | |
|
| session.h | | session.h | |
|
| /* $Id: session.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: session.h 2844 2009-07-29 12:14:21Z 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 261 | | skipping to change at line 261 | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_session_get_port( pjmedia_session *session, | | PJ_DECL(pj_status_t) pjmedia_session_get_port( pjmedia_session *session, | |
| unsigned index, | | unsigned index, | |
| pjmedia_port **p_port); | | pjmedia_port **p_port); | |
| | | | |
| /** | | /** | |
| * Get session statistics. The stream statistic shows various | | * Get session statistics. The stream statistic shows various | |
| * indicators such as packet count, packet lost, jitter, delay, etc. | | * indicators such as packet count, packet lost, jitter, delay, etc. | |
|
| | | * See also #pjmedia_session_get_stream_stat_jbuf() | |
| * | | * | |
| * @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
); | |
| | | | |
| skipping to change at line 291 | | skipping to change at line 292 | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_session_get_stream_stat_xr( | | PJ_DECL(pj_status_t) pjmedia_session_get_stream_stat_xr( | |
| pjmedia_session *session, | | pjmedia_session *session, | |
| unsigned index, | | unsigned index, | |
| pjmedia_rtcp_xr_stat *stat_xr); | | pjmedia_rtcp_xr_stat *stat_xr); | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
|
| | | * Get current jitter buffer state for the specified stream. | |
| | | * See also #pjmedia_session_get_stream_stat() | |
| | | * | |
| | | * @param session The media session. | |
| | | * @param index Stream index. | |
| | | * @param state Jitter buffer state. | |
| | | * | |
| | | * @return PJ_SUCCESS on success. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_session_get_stream_stat_jbuf( | |
| | | pjmedia_session *session, | |
| | | unsigned index, | |
| | | pjmedia_jb_state *state); | |
| | | | |
| | | /** | |
| * Dial DTMF digit to the stream, using RFC 2833 mechanism. | | * Dial DTMF digit to the stream, using RFC 2833 mechanism. | |
| * | | * | |
| * @param session The media session. | | * @param session The media session. | |
| * @param index The stream index. | | * @param index The stream index. | |
| * @param ascii_digits String of ASCII digits (i.e. 0-9*##A-B). | | * @param ascii_digits String of ASCII digits (i.e. 0-9*##A-B). | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_session_dial_dtmf( pjmedia_session *session, | | PJ_DECL(pj_status_t) pjmedia_session_dial_dtmf( pjmedia_session *session, | |
| unsigned index, | | unsigned index, | |
| | | | |
End of changes. 3 change blocks. |
| 1 lines changed or deleted | | 17 lines changed or added | |
|
| sip_dialog.h | | sip_dialog.h | |
|
| /* $Id: sip_dialog.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sip_dialog.h 2855 2009-08-05 18:41:23Z 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 180 | | skipping to change at line 180 | |
| * create dialog's local tag. | | * create dialog's local tag. | |
| * | | * | |
| * This function also initializes the dialog's route set based on the | | * This function also initializes the dialog's route set based on the | |
| * Record-Route headers in the request, if present. | | * Record-Route headers in the request, if present. | |
| * | | * | |
| * Note that initially, the session count in the dialog will be initialized | | * Note that initially, the session count in the dialog will be initialized | |
| * to zero. | | * to zero. | |
| * | | * | |
| * @param ua The user agent module instance. | | * @param ua The user agent module instance. | |
| * @param local_uri Dialog local URI (i.e. From header). | | * @param local_uri Dialog local URI (i.e. From header). | |
|
| * @param local_contact_uri Optional dialog local Contact URI. | | * @param local_contact Optional dialog local Contact to be put | |
| * If this argument is NULL, the Contact will be | | as Contact | |
| * taken from the local URI. | | * header value, hence the format must follow | |
| | | * RFC 3261 Section 20.10: | |
| | | * When the header field value contains a display | |
| | | * name, the URI including all URI parameters is | |
| | | * enclosed in "<" and ">". If no "<" and ">" are | |
| | | * present, all parameters after the URI are header | |
| | | * parameters, not URI parameters. The display nam | |
| | | e | |
| | | * can be tokens, or a quoted string, if a larger | |
| | | * character set is desired. | |
| | | * If this argument is NULL, the Contact will be ta | |
| | | ken | |
| | | * from the local URI. | |
| * @param remote_uri Dialog remote URI (i.e. To header). | | * @param remote_uri Dialog remote URI (i.e. To header). | |
| * @param target Optional initial remote target. If this argument | | * @param target Optional initial remote target. If this argument | |
| * is NULL, the initial target will be set to | | * is NULL, the initial target will be set to | |
| * remote URI. | | * remote URI. | |
| * @param p_dlg Pointer to receive the dialog. | | * @param p_dlg Pointer to receive the dialog. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua, | | PJ_DECL(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua, | |
| const pj_str_t *local_uri, | | const pj_str_t *local_uri, | |
|
| const pj_str_t *local_contact_uri
, | | const pj_str_t *local_contact, | |
| const pj_str_t *remote_uri, | | const pj_str_t *remote_uri, | |
| const pj_str_t *target, | | const pj_str_t *target, | |
| pjsip_dialog **p_dlg); | | pjsip_dialog **p_dlg); | |
| | | | |
| /** | | /** | |
| * Initialize UAS dialog from the information found in the incoming request | | * Initialize UAS dialog from the information found in the incoming request | |
| * that creates a dialog (such as INVITE, REFER, or SUBSCRIBE), and set the | | * that creates a dialog (such as INVITE, REFER, or SUBSCRIBE), and set the | |
| * local Contact to contact. If contact is not specified, the local contact | | * local Contact to contact. If contact is not specified, the local contact | |
| * is initialized from the URI in the To header in the request. | | * is initialized from the URI in the To header in the request. | |
| * | | * | |
| | | | |
| skipping to change at line 216 | | skipping to change at line 225 | |
| * transaction used to handle this request by calling #pjsip_rdata_get_tsx(
) | | * transaction used to handle this request by calling #pjsip_rdata_get_tsx(
) | |
| * after this function returns. | | * after this function returns. | |
| * | | * | |
| * Note that initially, the session count in the dialog will be initialized | | * Note that initially, the session count in the dialog will be initialized | |
| * to zero. | | * to zero. | |
| * | | * | |
| * | | * | |
| * @param ua The user agent module instance. | | * @param ua The user agent module instance. | |
| * @param rdata The incoming request that creates the di
alog, | | * @param rdata The incoming request that creates the di
alog, | |
| * such as INVITE, SUBSCRIBE, or REFER. | | * such as INVITE, SUBSCRIBE, or REFER. | |
|
| * @param contact Optional URI to be used as local Contact. If | | * @param contact Optional dialog local Contact to be put as Conta | |
| * this argument is NULL, the local contact will be | | ct | |
| | | * header value, hence the format must follow | |
| | | * RFC 3261 Section 20.10: | |
| | | * When the header field value contains a display | |
| | | * name, the URI including all URI parameters is | |
| | | * enclosed in "<" and ">". If no "<" and ">" are | |
| | | * present, all parameters after the URI are header | |
| | | * parameters, not URI parameters. The display nam | |
| | | e | |
| | | * can be tokens, or a quoted string, if a larger | |
| | | * character set is desired. | |
| | | * If this argument is NULL, the local contact will | |
| | | be | |
| * initialized from the value of To header in the | | * initialized from the value of To header in the | |
| * request. | | * request. | |
| * @param p_dlg Pointer to receive the dialog. | | * @param p_dlg Pointer to receive the dialog. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, | | PJ_DECL(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, | |
| pjsip_rx_data *rdata, | | pjsip_rx_data *rdata, | |
| const pj_str_t *contact, | | const pj_str_t *contact, | |
| pjsip_dialog **p_dlg); | | pjsip_dialog **p_dlg); | |
| | | | |
End of changes. 4 change blocks. |
| 7 lines changed or deleted | | 31 lines changed or added | |
|
| sip_inv.h | | sip_inv.h | |
|
| /* $Id: sip_inv.h 2647 2009-04-26 11:30:22Z bennylp $ */ | | /* $Id: sip_inv.h 2869 2009-08-12 17:53:47Z 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 302 | | skipping to change at line 302 | |
| /** | | /** | |
| * 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 | |
| | | * support/want session timer. | |
| | | */ | |
| | | PJSIP_INV_ALWAYS_USE_TIMER = 128, | |
| | | | |
| }; | | }; | |
| | | | |
|
| | | /* Forward declaration of Session Timers */ | |
| | | 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 | |
| | | * only one pool, which is just a pointer to the dialog's pool. Ticket | |
| | | * http://trac.pjsip.org/repos/ticket/877 has found that the memory | |
| | | * usage will grow considerably everytime re-INVITE or UPDATE is | |
| | | * performed. | |
| | | * | |
| | | * Ticket #877 then created two more memory pools for the inv_sess, so | |
| | | * now we have three memory pools: | |
| | | * - pool: to be used to allocate long term data for the session | |
| | | * - pool_prov and pool_active: this is a flip-flop pools to be used | |
| | | * interchangably during re-INVITE and UPDATE. pool_prov is | |
| | | * "provisional" pool, used to allocate SDP offer or answer for | |
| | | * the re-INVITE and UPDATE. Once SDP negotiation is done, the | |
| | | * provisional pool will be made as the active pool, then the | |
| | | * existing active pool will be reset, to release the memory | |
| | | * back to the OS. So these pool's lifetime is synchronized to | |
| | | * the SDP offer-answer negotiation. | |
| | | * | |
| | | * Higher level application such as PJSUA-LIB has been modified to | |
| | | * make use of these flip-flop pools, i.e. by creating media objects | |
| | | * from the provisional pool rather than from the long term pool. | |
| | | * | |
| | | * Other applications that want to use these pools must understand | |
| | | * that the flip-flop pool's lifetimes are synchronized to the | |
| | | * SDP offer-answer negotiation. | |
| */ | | */ | |
| struct pjsip_inv_session | | struct pjsip_inv_session | |
| { | | { | |
| char obj_name[PJ_MAX_OBJ_NAME]; /**< Log identification
*/ | | char obj_name[PJ_MAX_OBJ_NAME]; /**< Log identification
*/ | |
|
| pj_pool_t *pool; /**< Dialog's pool. | | pj_pool_t *pool; /**< Long term pool. | |
| */ | | */ | |
| | | pj_pool_t *pool_prov; /**< Provisional pool | |
| | | */ | |
| | | pj_pool_t *pool_active; /**< Active/current pool | |
| | | */ | |
| pjsip_inv_state state; /**< Invite sess state.
*/ | | pjsip_inv_state state; /**< Invite sess state.
*/ | |
| pj_bool_t cancelling; /**< CANCEL requested
*/ | | pj_bool_t cancelling; /**< CANCEL requested
*/ | |
| pj_bool_t pending_cancel; /**< Wait to send CANCEL
*/ | | pj_bool_t pending_cancel; /**< Wait to send CANCEL
*/ | |
| pjsip_status_code cause; /**< Disconnect cause.
*/ | | pjsip_status_code cause; /**< Disconnect cause.
*/ | |
| pj_str_t cause_text; /**< Cause text.
*/ | | pj_str_t cause_text; /**< Cause text.
*/ | |
| pj_bool_t notify; /**< Internal.
*/ | | pj_bool_t notify; /**< Internal.
*/ | |
| pjsip_dialog *dlg; /**< Underlying dialog.
*/ | | pjsip_dialog *dlg; /**< Underlying dialog.
*/ | |
| pjsip_role_e role; /**< Invite role.
*/ | | pjsip_role_e role; /**< Invite role.
*/ | |
| unsigned options; /**< Options in use.
*/ | | unsigned options; /**< Options in use.
*/ | |
| pjmedia_sdp_neg *neg; /**< Negotiator.
*/ | | pjmedia_sdp_neg *neg; /**< Negotiator.
*/ | |
| 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.
*/ | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * 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. | |
| * | | * | |
| | | | |
End of changes. 6 change blocks. |
| 3 lines changed or deleted | | 43 lines changed or added | |
|
| sip_regc.h | | sip_regc.h | |
|
| /* $Id: sip_regc.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sip_regc.h 2855 2009-08-05 18:41:23Z 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 162 | | skipping to change at line 162 | |
| /** | | /** | |
| * Initialize client registration structure with various information needed
to | | * Initialize client registration structure with various information needed
to | |
| * perform the registration. | | * perform the registration. | |
| * | | * | |
| * @param regc The client registration structure. | | * @param regc The client registration structure. | |
| * @param srv_url Server URL. | | * @param srv_url Server URL. | |
| * @param from_url The person performing the registration, must be a SIP U
RL type. | | * @param from_url The person performing the registration, must be a SIP U
RL type. | |
| * @param to_url The address of record for which the registration is tar
getd, must | | * @param to_url The address of record for which the registration is tar
getd, must | |
| * be a SIP/SIPS URL. | | * be a SIP/SIPS URL. | |
| * @param ccnt Number of contacts in the array. | | * @param ccnt Number of contacts in the array. | |
|
| * @param contact Array of contacts. | | * @param contact Array of contacts, each contact item must be formatted | |
| | | * as described in RFC 3261 Section 20.10: | |
| | | * When the header field value contains a display | |
| | | * name, the URI including all URI parameters is | |
| | | * enclosed in "<" and ">". If no "<" and ">" are | |
| | | * present, all parameters after the URI are header | |
| | | * parameters, not URI parameters. The display name | |
| | | * can be tokens, or a quoted string, if a larger | |
| | | * character set is desired. | |
| * @param expires Default expiration interval (in seconds) to be applied
for | | * @param expires Default expiration interval (in seconds) to be applied
for | |
| * contact URL that doesn't have expiration settings. If th
e | | * contact URL that doesn't have expiration settings. If th
e | |
| * value PJSIP_REGC_EXPIRATION_NOT_SPECIFIED is given, then | | * value PJSIP_REGC_EXPIRATION_NOT_SPECIFIED is given, then | |
| * no default expiration will be applied. | | * no default expiration will be applied. | |
| * @return zero on success. | | * @return zero on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_regc_init(pjsip_regc *regc, | | PJ_DECL(pj_status_t) pjsip_regc_init(pjsip_regc *regc, | |
| const pj_str_t *srv_url, | | const pj_str_t *srv_url, | |
| const pj_str_t *from_url, | | const pj_str_t *from_url, | |
| const pj_str_t *to_url, | | const pj_str_t *to_url, | |
| | | | |
| skipping to change at line 294 | | skipping to change at line 302 | |
| * @param regc The client registration structure. | | * @param regc The client registration structure. | |
| * @param p_tdata Pointer to receive the REGISTER request. | | * @param p_tdata Pointer to receive the REGISTER request. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_regc_unregister_all(pjsip_regc *regc, | | PJ_DECL(pj_status_t) pjsip_regc_unregister_all(pjsip_regc *regc, | |
| pjsip_tx_data **p_tdata); | | pjsip_tx_data **p_tdata); | |
| | | | |
| /** | | /** | |
| * Update Contact details in the client registration structure. For each | | * Update Contact details in the client registration structure. For each | |
|
| * contact URI, if the uri is not found in existing contact, it will be | | * contact, if the contact is not found in existing contact, it will be | |
| * added to the Contact list. If the URI matches existing contact, nothing | | * added to the Contact list. If it matches existing contact, nothing | |
| * will be added. This function will also mark existing contacts which | | * will be added. This function will also mark existing contacts which | |
| * are not specified in the new contact list as to be removed, by adding | | * are not specified in the new contact list as to be removed, by adding | |
| * "expires=0" parameter to these contacts. | | * "expires=0" parameter to these contacts. | |
| * | | * | |
| * Once the contact list has been updated, application must update the | | * Once the contact list has been updated, application must update the | |
| * registration by creating a new REGISTER request and send it to the | | * registration by creating a new REGISTER request and send it to the | |
| * registrar. This request will contain both old and new contacts; the | | * registrar. This request will contain both old and new contacts; the | |
| * old contacts will have it's expires parameter set to zero to instruct | | * old contacts will have it's expires parameter set to zero to instruct | |
| * the registrar to remove the bindings. | | * the registrar to remove the bindings. | |
| * | | * | |
| * @param regc The client registration structure. | | * @param regc The client registration structure. | |
| * @param ccnt Number of contacts. | | * @param ccnt Number of contacts. | |
|
| * @param contact Array of contact URIs. | | * @param contact Array of contacts, each contact item must be formatted | |
| | | * as described in RFC 3261 Section 20.10: | |
| | | * When the header field value contains a display | |
| | | * name, the URI including all URI parameters is | |
| | | * enclosed in "<" and ">". If no "<" and ">" are | |
| | | * present, all parameters after the URI are header | |
| | | * parameters, not URI parameters. The display name | |
| | | * can be tokens, or a quoted string, if a larger | |
| | | * character set is desired. | |
| * @return PJ_SUCCESS if sucessfull. | | * @return PJ_SUCCESS if sucessfull. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_regc_update_contact( pjsip_regc *regc, | | PJ_DECL(pj_status_t) pjsip_regc_update_contact( pjsip_regc *regc, | |
| int ccnt, | | int ccnt, | |
| const pj_str_t contact[] ); | | const pj_str_t contact[] ); | |
| | | | |
| /** | | /** | |
| * Update the expires value. The next REGISTER request will contain | | * Update the expires value. The next REGISTER request will contain | |
| * new expires value for the registration. | | * new expires value for the registration. | |
| * | | * | |
| | | | |
End of changes. 4 change blocks. |
| 5 lines changed or deleted | | 21 lines changed or added | |
|
| sip_util.h | | sip_util.h | |
|
| /* $Id: sip_util.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sip_util.h 2855 2009-08-05 18:41:23Z 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 240 | | skipping to change at line 240 | |
| * | | * | |
| * In addition, the function adds a unique tag in the From header. | | * In addition, the function adds a unique tag in the From header. | |
| * | | * | |
| * Once a transmit data is created, the reference counter is initialized to
1. | | * Once a transmit data is created, the reference counter is initialized to
1. | |
| * | | * | |
| * @param endpt Endpoint instance. | | * @param endpt Endpoint instance. | |
| * @param method SIP Method. | | * @param method SIP Method. | |
| * @param target Target URI. | | * @param target Target URI. | |
| * @param from URL to put in From header. | | * @param from URL to put in From header. | |
| * @param to URL to put in To header. | | * @param to URL to put in To header. | |
|
| * @param contact URL to put in Contact header. | | * @param contact Contact to be put as Contact header value, hence | |
| | | * the format must follow RFC 3261 Section 20.10: | |
| | | * When the header field value contains a display | |
| | | * name, the URI including all URI parameters is | |
| | | * enclosed in "<" and ">". If no "<" and ">" are | |
| | | * present, all parameters after the URI are header | |
| | | * parameters, not URI parameters. The display name | |
| | | * can be tokens, or a quoted string, if a larger | |
| | | * character set is desired. | |
| * @param call_id Optional Call-ID (put NULL to generate unique Call-ID). | | * @param call_id Optional Call-ID (put NULL to generate unique Call-ID). | |
| * @param cseq Optional CSeq (put -1 to generate random CSeq). | | * @param cseq Optional CSeq (put -1 to generate random CSeq). | |
| * @param text Optional text body (put NULL to omit body). | | * @param text Optional text body (put NULL to omit body). | |
| * @param p_tdata Pointer to receive the transmit data. | | * @param p_tdata Pointer to receive the transmit data. | |
| * | | * | |
| * @return PJ_SUCCESS, or the appropriate error code. | | * @return PJ_SUCCESS, or the appropriate error code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_endpt_create_request( pjsip_endpoint *endpt, | | PJ_DECL(pj_status_t) pjsip_endpt_create_request( pjsip_endpoint *endpt, | |
| const pjsip_method *method, | | const pjsip_method *method, | |
| const pj_str_t *target, | | const pj_str_t *target, | |
| | | | |
| skipping to change at line 277 | | skipping to change at line 285 | |
| * - Additional request headers (such as Max-Forwards) which are copied | | * - Additional request headers (such as Max-Forwards) which are copied | |
| * from endpoint configuration. | | * from endpoint configuration. | |
| * | | * | |
| * In addition, the function adds a unique tag in the From header. | | * In addition, the function adds a unique tag in the From header. | |
| * | | * | |
| * Once a transmit data is created, the reference counter is initialized to
1. | | * Once a transmit data is created, the reference counter is initialized to
1. | |
| * | | * | |
| * @param endpt Endpoint instance. | | * @param endpt Endpoint instance. | |
| * @param method SIP Method. | | * @param method SIP Method. | |
| * @param target Target URI. | | * @param target Target URI. | |
|
| * @param from URL to put in From header. | | * @param from From header. | |
| * @param to URL to put in To header. | | * @param to To header. | |
| * @param contact URL to put in Contact header. | | * @param contact Contact header. | |
| * @param call_id Optional Call-ID (put NULL to generate unique Call-ID). | | * @param call_id Optional Call-ID (put NULL to generate unique Call-ID). | |
| * @param cseq Optional CSeq (put -1 to generate random CSeq). | | * @param cseq Optional CSeq (put -1 to generate random CSeq). | |
| * @param text Optional text body (put NULL to omit body). | | * @param text Optional text body (put NULL to omit body). | |
| * @param p_tdata Pointer to receive the transmit data. | | * @param p_tdata Pointer to receive the transmit data. | |
| * | | * | |
| * @return PJ_SUCCESS, or the appropriate error code. | | * @return PJ_SUCCESS, or the appropriate error code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) | | PJ_DECL(pj_status_t) | |
| pjsip_endpt_create_request_from_hdr( pjsip_endpoint *endpt, | | pjsip_endpt_create_request_from_hdr( pjsip_endpoint *endpt, | |
| const pjsip_method *method, | | const pjsip_method *method, | |
| | | | |
End of changes. 3 change blocks. |
| 5 lines changed or deleted | | 13 lines changed or added | |
|
| sock.h | | sock.h | |
|
| /* $Id: sock.h 2743 2009-06-04 15:11:25Z bennylp $ */ | | /* $Id: sock.h 2863 2009-08-12 10:56:06Z 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 958 | | skipping to change at line 958 | |
| * - "[::]:80": address zero (::) and port 0 | | * - "[::]:80": address zero (::) and port 0 | |
| * - ":::80": address zero (::) and port 80 | | * - ":::80": address zero (::) and port 80 | |
| * | | * | |
| * Note: when the IPv6 socket address contains port number, the IP | | * Note: when the IPv6 socket address contains port number, the IP | |
| * part of the socket address should be enclosed with square brackets, | | * part of the socket address should be enclosed with square brackets, | |
| * otherwise the port number will be included as part of the IP address | | * otherwise the port number will be included as part of the IP address | |
| * (see "fec0::01:80" example above). | | * (see "fec0::01:80" example above). | |
| * | | * | |
| * @param af Optionally specify the address family to be used. If the | | * @param af Optionally specify the address family to be used. If the | |
| * address family is to be deducted from the input, specify | | * address family is to be deducted from the input, specify | |
|
| * pj_AF_UNSPEC() here. | | * pj_AF_UNSPEC() here. Other supported values are | |
| | | * #pj_AF_INET() and #pj_AF_INET6() | |
| * @param options Additional options to assist the parsing, must be zero | | * @param options Additional options to assist the parsing, must be zero | |
| * for now. | | * for now. | |
| * @param str The input string to be parsed. | | * @param str The input string to be parsed. | |
| * @param addr Pointer to store the result. | | * @param addr Pointer to store the result. | |
| * | | * | |
| * @return PJ_SUCCESS if the parsing is successful. | | * @return PJ_SUCCESS if the parsing is successful. | |
|
| | | * | |
| | | * @see pj_sockaddr_parse2() | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pj_sockaddr_parse(int af, unsigned options, | | PJ_DECL(pj_status_t) pj_sockaddr_parse(int af, unsigned options, | |
| const pj_str_t *str, | | const pj_str_t *str, | |
| pj_sockaddr *addr); | | pj_sockaddr *addr); | |
| | | | |
|
| | | /** | |
| | | * This function is similar to #pj_sockaddr_parse(), except that it will no | |
| | | t | |
| | | * convert the hostpart into IP address (thus possibly resolving the hostna | |
| | | me | |
| | | * into a #pj_sockaddr. | |
| | | * | |
| | | * Unlike #pj_sockaddr_parse(), this function has a limitation that if port | |
| | | * number is specified in an IPv6 input string, the IP part of the IPv6 soc | |
| | | ket | |
| | | * address MUST be enclosed in square brackets, otherwise the port number w | |
| | | ill | |
| | | * be considered as part of the IPv6 IP address. | |
| | | * | |
| | | * @param af Optionally specify the address family to be used. If the | |
| | | * address family is to be deducted from the input, specify | |
| | | * #pj_AF_UNSPEC() here. Other supported values are | |
| | | * #pj_AF_INET() and #pj_AF_INET6() | |
| | | * @param options Additional options to assist the parsing, must be zero | |
| | | * for now. | |
| | | * @param str The input string to be parsed. | |
| | | * @param hostpart Optional pointer to store the host part of the socket | |
| | | * address, with any brackets removed. | |
| | | * @param port Optional pointer to store the port number. If port numbe | |
| | | r | |
| | | * is not found, this will be set to zero upon return. | |
| | | * @param raf Optional pointer to store the detected address family of | |
| | | * the input address. | |
| | | * | |
| | | * @return PJ_SUCCESS if the parsing is successful. | |
| | | * | |
| | | * @see pj_sockaddr_parse() | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pj_sockaddr_parse2(int af, unsigned options, | |
| | | const pj_str_t *str, | |
| | | pj_str_t *hostpart, | |
| | | pj_uint16_t *port, | |
| | | int *raf); | |
| | | | |
| /**************************************************************************
*** | | /**************************************************************************
*** | |
| * | | * | |
| * HOST NAME AND ADDRESS. | | * HOST NAME AND ADDRESS. | |
| * | | * | |
| **************************************************************************
*** | | **************************************************************************
*** | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * Get system's host name. | | * Get system's host name. | |
| * | | * | |
| | | | |
End of changes. 4 change blocks. |
| 2 lines changed or deleted | | 44 lines changed or added | |
|
| stream.h | | stream.h | |
|
| /* $Id: stream.h 2506 2009-03-12 18:11:37Z bennylp $ */ | | /* $Id: stream.h 2844 2009-07-29 12:14:21Z 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 30 | | skipping to change at line 30 | |
| #ifndef __PJMEDIA_STREAM_H__ | | #ifndef __PJMEDIA_STREAM_H__ | |
| #define __PJMEDIA_STREAM_H__ | | #define __PJMEDIA_STREAM_H__ | |
| | | | |
| /** | | /** | |
| * @file stream.h | | * @file stream.h | |
| * @brief Media Stream. | | * @brief Media Stream. | |
| */ | | */ | |
| | | | |
| #include <pjmedia/codec.h> | | #include <pjmedia/codec.h> | |
| #include <pjmedia/endpoint.h> | | #include <pjmedia/endpoint.h> | |
|
| | | #include <pjmedia/jbuf.h> | |
| #include <pjmedia/port.h> | | #include <pjmedia/port.h> | |
| #include <pjmedia/rtcp.h> | | #include <pjmedia/rtcp.h> | |
| #include <pjmedia/transport.h> | | #include <pjmedia/transport.h> | |
| #include <pj/sock.h> | | #include <pj/sock.h> | |
| | | | |
| PJ_BEGIN_DECL | | PJ_BEGIN_DECL | |
| | | | |
| /** | | /** | |
| * @defgroup PJMED_STRM Streams | | * @defgroup PJMED_STRM Streams | |
| * @ingroup PJMEDIA_PORT | | * @ingroup PJMEDIA_PORT | |
| | | | |
| skipping to change at line 208 | | skipping to change at line 209 | |
| * in the media stream, depending on the media direction that was set | | * in the media stream, depending on the media direction that was set | |
| * when the stream was created. | | * when the stream was created. | |
| * | | * | |
| * @param stream The media stream. | | * @param stream The media stream. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_stream_start(pjmedia_stream *stream); | | PJ_DECL(pj_status_t) pjmedia_stream_start(pjmedia_stream *stream); | |
| | | | |
| /** | | /** | |
|
| * Get the stream statistics. | | * Get the stream statistics. See also | |
| | | * #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); | |
| | | | |
| #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | | #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) | |
| | | | |
| skipping to change at line 232 | | skipping to change at line 234 | |
| * @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, | |
| pjmedia_rtcp_xr_stat *stat)
; | | pjmedia_rtcp_xr_stat *stat)
; | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
|
| | | * Get current jitter buffer state. See also | |
| | | * #pjmedia_stream_get_stat() | |
| | | * | |
| | | * @param stream The media stream. | |
| | | * @param state Jitter buffer state. | |
| | | * | |
| | | * @return PJ_SUCCESS on success. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_stream_get_stat_jbuf(const pjmedia_stream *str | |
| | | eam, | |
| | | pjmedia_jb_state *state); | |
| | | | |
| | | /** | |
| * Pause the individual channel in the stream. | | * Pause the individual channel in the stream. | |
| * | | * | |
| * @param stream The media channel. | | * @param stream The media channel. | |
| * @param dir Which direction to pause. | | * @param dir Which direction to pause. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_stream_pause( pjmedia_stream *stream, | | PJ_DECL(pj_status_t) pjmedia_stream_pause( pjmedia_stream *stream, | |
| pjmedia_dir dir); | | pjmedia_dir dir); | |
| | | | |
| | | | |
End of changes. 4 change blocks. |
| 2 lines changed or deleted | | 17 lines changed or added | |
|
| wsola.h | | wsola.h | |
|
| /* $Id: wsola.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: wsola.h 2850 2009-08-01 09:20:59Z 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 70 | | skipping to change at line 70 | |
| | | | |
| /** | | /** | |
| * Specify that the WSOLA will not be used for PLC. | | * Specify that the WSOLA will not be used for PLC. | |
| */ | | */ | |
| PJMEDIA_WSOLA_NO_PLC = 2, | | PJMEDIA_WSOLA_NO_PLC = 2, | |
| | | | |
| /** | | /** | |
| * Specify that the WSOLA will not be used to discard frames in | | * Specify that the WSOLA will not be used to discard frames in | |
| * non-contiguous buffer. | | * non-contiguous buffer. | |
| */ | | */ | |
|
| PJMEDIA_WSOLA_NO_DISCARD = 4 | | PJMEDIA_WSOLA_NO_DISCARD = 4, | |
| | | | |
| | | /** | |
| | | * Disable fade-in and fade-out feature in the transition between | |
| | | * actual and synthetic frames in WSOLA. With fade feature enabled, | |
| | | * WSOLA will only generate a limited number of synthetic frames | |
| | | * (configurable with #pjmedia_wsola_set_max_expand()), fading out | |
| | | * the volume on every more samples it generates, and when it reaches | |
| | | * the limit it will only generate silence. | |
| | | */ | |
| | | PJMEDIA_WSOLA_NO_FADING = 8 | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * Create and initialize WSOLA. | | * Create and initialize WSOLA. | |
| * | | * | |
| * @param pool Pool to allocate memory for WSOLA. | | * @param pool Pool to allocate memory for WSOLA. | |
| * @param clock_rate Sampling rate of audio playback. | | * @param clock_rate Sampling rate of audio playback. | |
| * @param samples_per_frame Number of samples per frame. | | * @param samples_per_frame Number of samples per frame. | |
| * @param channel_count Number of channels. | | * @param channel_count Number of channels. | |
| * @param options Option flags, bitmask combination of | | * @param options Option flags, bitmask combination of | |
| | | | |
| skipping to change at line 94 | | skipping to change at line 104 | |
| * @return PJ_SUCCESS or the appropriate error code. | | * @return PJ_SUCCESS or the appropriate error code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_wsola_create(pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjmedia_wsola_create(pj_pool_t *pool, | |
| unsigned clock_rate, | | unsigned clock_rate, | |
| unsigned samples_per_frame, | | unsigned samples_per_frame, | |
| unsigned channel_count, | | unsigned channel_count, | |
| unsigned options, | | unsigned options, | |
| pjmedia_wsola **p_wsola); | | pjmedia_wsola **p_wsola); | |
| | | | |
| /** | | /** | |
|
| | | * Specify maximum number of continuous synthetic frames that can be | |
| | | * generated by WSOLA, in milliseconds. This option will only take | |
| | | * effect if fading is not disabled via the option when the WSOLA | |
| | | * session was created. Default value is PJMEDIA_WSOLA_MAX_EXPAND_MSEC | |
| | | * (see also the documentation of PJMEDIA_WSOLA_MAX_EXPAND_MSEC for | |
| | | * more information). | |
| | | * | |
| | | * @param wsola The WSOLA session | |
| | | * @param msec The duration. | |
| | | * | |
| | | * @return PJ_SUCCESS normally. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_wsola_set_max_expand(pjmedia_wsola *wsola, | |
| | | unsigned msec); | |
| | | | |
| | | /** | |
| * Destroy WSOLA. | | * Destroy WSOLA. | |
| * | | * | |
| * @param wsola WSOLA session. | | * @param wsola WSOLA session. | |
| * | | * | |
| * @return PJ_SUCCESS normally. | | * @return PJ_SUCCESS normally. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_wsola_destroy(pjmedia_wsola *wsola); | | PJ_DECL(pj_status_t) pjmedia_wsola_destroy(pjmedia_wsola *wsola); | |
| | | | |
| /** | | /** | |
| * Reset the buffer contents of WSOLA. | | * Reset the buffer contents of WSOLA. | |
| | | | |
End of changes. 3 change blocks. |
| 2 lines changed or deleted | | 28 lines changed or added | |
|