amr_helper.h   amr_helper.h 
/* $Id: amr_helper.h 2506 2009-03-12 18:11:37Z bennylp $ */ /* $Id: amr_helper.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 35 skipping to change at line 35
* @file pjmedia-codec/amr_helper.h * @file pjmedia-codec/amr_helper.h
* @brief Common tables and helper functions for AMR codec (NB & WB). * @brief Common tables and helper functions for AMR codec (NB & WB).
*/ */
#ifdef _MSC_VER #ifdef _MSC_VER
# pragma warning(disable:4214) // bit field types other than int # pragma warning(disable:4214) // bit field types other than int
#endif #endif
/** /**
* @defgroup PJMED_AMR_CODEC_HELPER AMR Codec Helper * @defgroup PJMED_AMR_CODEC_HELPER AMR Codec Helper
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief AMR common tables and helper functions. * @brief AMR common tables and helper functions.
* @{ * @{
* *
* This sections describes common AMR constants tables (e.g: bits sensitivi ty * This sections describes common AMR constants tables (e.g: bits sensitivi ty
* order map, frame lengths, bitrates) and helper functions (e.g: pack AMR * order map, frame lengths, bitrates) and helper functions (e.g: pack AMR
* payload in octet-aligned mode or bandwidth-efficient mode, payload parse r, * payload in octet-aligned mode or bandwidth-efficient mode, payload parse r,
* reorder AMR bitstream). * reorder AMR bitstream).
*/ */
PJ_BEGIN_DECL PJ_BEGIN_DECL
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 codec.h   codec.h 
/* $Id: codec.h 2506 2009-03-12 18:11:37Z bennylp $ */ /* $Id: codec.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 833 skipping to change at line 833
* *
* @return PJ_SUCESS on success. * @return PJ_SUCESS on success.
*/ */
PJ_DECL(pj_status_t) pjmedia_codec_mgr_dealloc_codec(pjmedia_codec_mgr *mgr , PJ_DECL(pj_status_t) pjmedia_codec_mgr_dealloc_codec(pjmedia_codec_mgr *mgr ,
pjmedia_codec *codec); pjmedia_codec *codec);
/** /**
* @} * @}
*/ */
/**
* @defgroup PJMEDIA_CODEC_CODECS Supported codecs
* @ingroup PJMEDIA_CODEC
* @brief Documentation about individual codec supported by PJMEDIA
* @{
* Please see the APIs provided by the individual codecs below.
*/
/**
* @}
*/
PJ_END_DECL PJ_END_DECL
#endif /* __PJMEDIA_CODEC_H__ */ #endif /* __PJMEDIA_CODEC_H__ */
 End of changes. 2 change blocks. 
1 lines changed or deleted 12 lines changed or added


 config.h   config.h 
/* $Id: config.h 2427 2009-01-22 20:30:32Z bennylp $ */ /* $Id: config.h 2843 2009-07-22 11:12:35Z 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 326 skipping to change at line 326
*/ */
#ifndef PJ_DEBUG #ifndef PJ_DEBUG
# ifndef NDEBUG # ifndef NDEBUG
# define PJ_DEBUG 1 # define PJ_DEBUG 1
# else # else
# define PJ_DEBUG 0 # define PJ_DEBUG 0
# endif # endif
#endif #endif
/** /**
* Enable this macro to activate logging to mutex/semaphore related events.
* This is useful to troubleshoot concurrency problems such as deadlocks.
* In addition, you should also add PJ_LOG_HAS_THREAD_ID flag to the
* log decoration to assist the troubleshooting.
*
* Default: 0
*/
#ifndef PJ_DEBUG_MUTEX
# define PJ_DEBUG_MUTEX 0
#endif
/**
* Expand functions in *_i.h header files as inline. * Expand functions in *_i.h header files as inline.
* *
* Default: 0. * Default: 0.
*/ */
#ifndef PJ_FUNCTIONS_ARE_INLINED #ifndef PJ_FUNCTIONS_ARE_INLINED
# define PJ_FUNCTIONS_ARE_INLINED 0 # define PJ_FUNCTIONS_ARE_INLINED 0
#endif #endif
/** /**
* Use floating point computations in the library. * Use floating point computations in the library.
 End of changes. 2 change blocks. 
1 lines changed or deleted 13 lines changed or added


 config_site_sample.h   config_site_sample.h 
skipping to change at line 221 skipping to change at line 221
* Additional configuration to activate APS-Direct feature for * Additional configuration to activate APS-Direct feature for
* Nokia S60 target * Nokia S60 target
* *
* Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct * Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct
*/ */
#ifdef PJ_CONFIG_NOKIA_APS_DIRECT #ifdef PJ_CONFIG_NOKIA_APS_DIRECT
/* MUST use switchboard rather than the conference bridge */ /* MUST use switchboard rather than the conference bridge */
#define PJMEDIA_CONF_USE_SWITCH_BOARD 1 #define PJMEDIA_CONF_USE_SWITCH_BOARD 1
/* Enable APS sound device backend and disable MDA */ /* Enable APS sound device backend and disable MDA & VAS */
#define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA 0 #define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA 0
#define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS 1 #define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS 1
#define PJMEDIA_AUDIO_DEV_HAS_SYMB_VAS 0
/* Enable passthrough codec framework */
#define PJMEDIA_HAS_PASSTHROUGH_CODECS 1
/* And selectively enable which codecs are supported by the handset */
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC 1
#endif
/*
* Additional configuration to activate VAS-Direct feature for
* Nokia S60 target
*
* Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct
*/
#ifdef PJ_CONFIG_NOKIA_VAS_DIRECT
/* MUST use switchboard rather than the conference bridge */
#define PJMEDIA_CONF_USE_SWITCH_BOARD 1
/* Enable VAS sound device backend and disable MDA & APS */
#define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA 0
#define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS 0
#define PJMEDIA_AUDIO_DEV_HAS_SYMB_VAS 1
/* Enable passthrough codec framework */ /* Enable passthrough codec framework */
#define PJMEDIA_HAS_PASSTHROUGH_CODECS 1 #define PJMEDIA_HAS_PASSTHROUGH_CODECS 1
/* And selectively enable which codecs are supported by the handset */ /* And selectively enable which codecs are supported by the handset */
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 1 #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1 #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR 1 #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 1 #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 1
#define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC 1 #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC 1
 End of changes. 2 change blocks. 
1 lines changed or deleted 30 lines changed or added


 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


 g711.h   g711.h 
/* $Id: g711.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: g711.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 31 skipping to change at line 31
#define __PJMEDIA_G711_H__ #define __PJMEDIA_G711_H__
/** /**
* @file g711.h * @file g711.h
* @brief G711 Codec * @brief G711 Codec
*/ */
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_G711 G711 * @defgroup PJMED_G711 G711 G.711 Codec
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief Standard G.711/PCMA and PCMU codec. * @brief Standard G.711/PCMA and PCMU codec.
* @{ * @{
* This section describes functions to register and register G.711 codec * This section describes functions to register and register G.711 codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
*/ */
PJ_BEGIN_DECL PJ_BEGIN_DECL
/** /**
 End of changes. 2 change blocks. 
3 lines changed or deleted 3 lines changed or added


 g722.h   g722.h 
/* $Id: g722.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: g722.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/g722.h * @file pjmedia-codec/g722.h
* @brief G.722 codec. * @brief G.722 codec.
*/ */
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_G722 G.722 Codec * @defgroup PJMED_G722 G.722 Codec
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief Implementation of G.722 Codec * @brief Implementation of G.722 Codec
* @{ * @{
* *
* This section describes functions to register and register G.722 codec * This section describes functions to register and register G.722 codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
* *
* The G.722 codec implementation is provided as part of pjmedia-codec * The G.722 codec implementation is provided as part of pjmedia-codec
* library, and does not depend on external G.722 codec implementation. * library, and does not depend on external G.722 codec implementation.
*/ */
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 g7221.h   g7221.h 
/* $Id: g7221.h 2620 2009-04-20 14:19:11Z bennylp $ */ /* $Id: g7221.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/g7221.h * @file pjmedia-codec/g7221.h
* @brief G722.1 codec. * @brief G722.1 codec.
*/ */
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_G7221_CODEC G722.1 Codec * @defgroup PJMED_G7221_CODEC G722.1 Codec
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief Implementation of G722.1 codec * @brief Implementation of G722.1 codec
* @{ * @{
* *
* <b>G722.1 licensed from Polycom * <b>G722.1 licensed from Polycom
* <b>G722.1 Annex C licensed from Polycom * <b>G722.1 Annex C licensed from Polycom
* *
* This section describes functions to register and register G722.1 codec * This section describes functions to register and register G722.1 codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
* *
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 gsm.h   gsm.h 
/* $Id: gsm.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: gsm.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/gsm.h * @file pjmedia-codec/gsm.h
* @brief GSM 06.10 codec. * @brief GSM 06.10 codec.
*/ */
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_GSM GSM 06.10 Codec * @defgroup PJMED_GSM GSM 06.10 Codec
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief Implementation of GSM FR based on GSM 06.10 library * @brief Implementation of GSM FR based on GSM 06.10 library
* @{ * @{
* *
* This section describes functions to register and register GSM codec * This section describes functions to register and register GSM codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
*/ */
PJ_BEGIN_DECL PJ_BEGIN_DECL
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 ilbc.h   ilbc.h 
/* $Id: ilbc.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: ilbc.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/ilbc.h * @file pjmedia-codec/ilbc.h
* @brief iLBC codec. * @brief iLBC codec.
*/ */
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_ILBC iLBC Codec * @defgroup PJMED_ILBC iLBC Codec
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief Implementation of iLBC Codec * @brief Implementation of iLBC Codec
* @{ * @{
* *
* This section describes functions to register and register iLBC codec * This section describes functions to register and register iLBC codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
*/ */
PJ_BEGIN_DECL PJ_BEGIN_DECL
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 ipp_codecs.h   ipp_codecs.h 
/* $Id: ipp_codecs.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: ipp_codecs.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/ipp_codecs.h * @file pjmedia-codec/ipp_codecs.h
* @brief IPP codecs wrapper. * @brief IPP codecs wrapper.
*/ */
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_IPP_CODEC IPP Codecs * @defgroup PJMED_IPP_CODEC IPP Codecs
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief Implementation of IPP codecs * @brief Implementation of IPP codecs
* @{ * @{
* *
* This section describes functions to register and register IPP codec * This section describes functions to register and register IPP codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
* This codec factory contains various codecs, e.g: G.729, G.723.1, G.726, * This codec factory contains various codecs, e.g: G.729, G.723.1, G.726,
* G.728, G.722.1, AMR. * G.728, G.722.1, AMR.
*/ */
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 jbuf.h   jbuf.h 
/* $Id: jbuf.h 2578 2009-04-06 17:05:34Z nanang $ */ /* $Id: jbuf.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 291 skipping to change at line 291
pj_uint32_t *bit_info); pj_uint32_t *bit_info);
/** /**
* Get jitter buffer current state/settings. * Get jitter buffer current state/settings.
* *
* @param jb The jitter buffer. * @param jb The jitter buffer.
* @param state Buffer to receive jitter buffer state. * @param state Buffer to receive jitter buffer state.
* *
* @return PJ_SUCCESS on success. * @return PJ_SUCCESS on success.
*/ */
PJ_DECL(pj_status_t) pjmedia_jbuf_get_state( pjmedia_jbuf *jb, PJ_DECL(pj_status_t) pjmedia_jbuf_get_state( const pjmedia_jbuf *jb,
pjmedia_jb_state *state ); pjmedia_jb_state *state );
PJ_END_DECL PJ_END_DECL
/** /**
* @} * @}
*/ */
#endif /* __PJMEDIA_JBUF_H__ */ #endif /* __PJMEDIA_JBUF_H__ */
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 l16.h   l16.h 
/* $Id: l16.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: l16.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 27 skipping to change at line 27
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A
*/ */
#ifndef __PJMEDIA_CODEC_L16_H__ #ifndef __PJMEDIA_CODEC_L16_H__
#define __PJMEDIA_CODEC_L16_H__ #define __PJMEDIA_CODEC_L16_H__
#include <pjmedia-codec/types.h> #include <pjmedia-codec/types.h>
/** /**
* @defgroup PJMED_L16 L16 Codec Family * @defgroup PJMED_L16 L16 Codec Family
* @ingroup PJMEDIA_CODEC * @ingroup PJMEDIA_CODEC_CODECS
* @brief PCM/16bit/linear codecs * @brief PCM/16bit/linear codecs
* @{ * @{
* *
* This section describes functions to register and register L16 codec * This section describes functions to register and register L16 codec
* factory to the codec manager. After the codec factory has been registere d, * factory to the codec manager. After the codec factory has been registere d,
* application can use @ref PJMEDIA_CODEC API to manipulate the codec. * application can use @ref PJMEDIA_CODEC API to manipulate the codec.
* *
* Note that the L16 codec factory registers several (about fourteen!) * Note that the L16 codec factory registers several (about fourteen!)
* L16 codec types to codec manager (different combinations of clock * L16 codec types to codec manager (different combinations of clock
* rate and number of channels). * rate and number of channels).
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 list.h   list.h 
/* $Id: list.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: list.h 2872 2009-08-12 22:31:49Z 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 95 skipping to change at line 95
PJ_INLINE(void) pj_list_init(pj_list_type * node) PJ_INLINE(void) pj_list_init(pj_list_type * node)
{ {
((pj_list*)node)->next = ((pj_list*)node)->prev = node; ((pj_list*)node)->next = ((pj_list*)node)->prev = node;
} }
/** /**
* Check that the list is empty. * Check that the list is empty.
* *
* @param node The list head. * @param node The list head.
* *
* @return Non-zero if the list is not-empty, or zero if it is empty. * @return Non-zero if the list is empty, or zero if it is not empty.
* *
*/ */
PJ_INLINE(int) pj_list_empty(const pj_list_type * node) PJ_INLINE(int) pj_list_empty(const pj_list_type * node)
{ {
return ((pj_list*)node)->next == node; return ((pj_list*)node)->next == node;
} }
/** /**
* Insert the node to the list before the specified element position. * Insert the node to the list before the specified element position.
* *
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 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


 math.h   math.h 
/* $Id: math.h 2577 2009-04-06 16:41:54Z nanang $ */ /* $Id: math.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 171 skipping to change at line 171
#endif #endif
} }
/** /**
* Get the standard deviation of specified statistics state. * Get the standard deviation of specified statistics state.
* *
* @param stat Statistic state. * @param stat Statistic state.
* *
* @return The standard deviation. * @return The standard deviation.
*/ */
PJ_INLINE(unsigned) pj_math_stat_get_stddev(pj_math_stat *stat) PJ_INLINE(unsigned) pj_math_stat_get_stddev(const pj_math_stat *stat)
{ {
if (stat->n == 0) return 0; if (stat->n == 0) return 0;
return (pj_isqrt((unsigned)(stat->m2_/stat->n))); return (pj_isqrt((unsigned)(stat->m2_/stat->n)));
} }
/** /**
* Set the standard deviation of statistics state. This is useful when * Set the standard deviation of statistics state. This is useful when
* the statistic state is operated in 'read-only' mode as a storage of * the statistic state is operated in 'read-only' mode as a storage of
* statistical data. * statistical data.
* *
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 os.h   os.h 
/* $Id: os.h 2560 2009-03-30 18:22:16Z bennylp $ */ /* $Id: os.h 2843 2009-07-22 11:12:35Z 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 665 skipping to change at line 665
* @return PJ_SUCCESS on success, or the error code. * @return PJ_SUCCESS on success, or the error code.
*/ */
PJ_DECL(pj_status_t) pj_mutex_destroy(pj_mutex_t *mutex); PJ_DECL(pj_status_t) pj_mutex_destroy(pj_mutex_t *mutex);
/** /**
* Determine whether calling thread is owning the mutex (only available whe n * Determine whether calling thread is owning the mutex (only available whe n
* PJ_DEBUG is set). * PJ_DEBUG is set).
* @param mutex The mutex. * @param mutex The mutex.
* @return Non-zero if yes. * @return Non-zero if yes.
*/ */
#if defined(PJ_DEBUG) && PJ_DEBUG != 0 PJ_DECL(pj_bool_t) pj_mutex_is_locked(pj_mutex_t *mutex);
PJ_DECL(pj_bool_t) pj_mutex_is_locked(pj_mutex_t *mutex);
#else
# define pj_mutex_is_locked(mutex) 1
#endif
/** /**
* @} * @}
*/ */
/* ************************************************************************ **/ /* ************************************************************************ **/
/** /**
* @defgroup PJ_RW_MUTEX Reader/Writer Mutex * @defgroup PJ_RW_MUTEX Reader/Writer Mutex
* @ingroup PJ_OS * @ingroup PJ_OS
* @{ * @{
 End of changes. 2 change blocks. 
6 lines changed or deleted 2 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


 pjsip_ua.h   pjsip_ua.h 
/* $Id: pjsip_ua.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: pjsip_ua.h 2858 2009-08-11 12:42:38Z 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 28 skipping to change at line 28
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A
*/ */
#ifndef __PJSIP_UA_H__ #ifndef __PJSIP_UA_H__
#define __PJSIP_UA_H__ #define __PJSIP_UA_H__
#include <pjsip-ua/sip_inv.h> #include <pjsip-ua/sip_inv.h>
#include <pjsip-ua/sip_regc.h> #include <pjsip-ua/sip_regc.h>
#include <pjsip-ua/sip_replaces.h> #include <pjsip-ua/sip_replaces.h>
#include <pjsip-ua/sip_xfer.h> #include <pjsip-ua/sip_xfer.h>
#include <pjsip-ua/sip_100rel.h> #include <pjsip-ua/sip_100rel.h>
#include <pjsip-ua/sip_timer.h>
#endif /* __PJSIP_UA_H__ */ #endif /* __PJSIP_UA_H__ */
 End of changes. 2 change blocks. 
1 lines changed or deleted 2 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


 resamplesubs.h   resamplesubs.h 
skipping to change at line 16 skipping to change at line 16
typedef int RES_WORD; typedef int RES_WORD;
typedef unsigned short RES_UHWORD; typedef unsigned short RES_UHWORD;
typedef unsigned int RES_UWORD; typedef unsigned int RES_UWORD;
#ifdef _USRDLL #ifdef _USRDLL
# define DECL(T) __declspec(dllexport) T # define DECL(T) __declspec(dllexport) T
#else #else
# define DECL(T) T # define DECL(T) T
#endif #endif
#ifdef __cplusplus
extern "C"
{
#endif
DECL(int) res_SrcLinear(const RES_HWORD X[], RES_HWORD Y[], DECL(int) res_SrcLinear(const RES_HWORD X[], RES_HWORD Y[],
double pFactor, RES_UHWORD nx); double pFactor, RES_UHWORD nx);
DECL(int) res_Resample(const RES_HWORD X[], RES_HWORD Y[], double pFactor, DECL(int) res_Resample(const RES_HWORD X[], RES_HWORD Y[], double pFactor,
RES_UHWORD nx, RES_BOOL LargeF, RES_BOOL Interp); RES_UHWORD nx, RES_BOOL LargeF, RES_BOOL Interp);
DECL(int) res_GetXOFF(double pFactor, RES_BOOL LargeF); DECL(int) res_GetXOFF(double pFactor, RES_BOOL LargeF);
#ifdef __cplusplus
}
#endif
#endif #endif
 End of changes. 2 change blocks. 
0 lines changed or deleted 9 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_config.h   sip_config.h 
/* $Id: sip_config.h 2762 2009-06-15 16:03:40Z bennylp $ */ /* $Id: sip_config.h 2859 2009-08-11 16:26:20Z 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 630 skipping to change at line 630
#define PJSIP_MAX_CALL_ID_LEN pj_GUID_STRING_LENGTH() #define PJSIP_MAX_CALL_ID_LEN pj_GUID_STRING_LENGTH()
#define PJSIP_MAX_TAG_LEN pj_GUID_STRING_LENGTH() #define PJSIP_MAX_TAG_LEN pj_GUID_STRING_LENGTH()
#define PJSIP_MAX_BRANCH_LEN (PJSIP_RFC3261_BRANCH_LEN + pj_GUID_ STRING_LENGTH() + 2) #define PJSIP_MAX_BRANCH_LEN (PJSIP_RFC3261_BRANCH_LEN + pj_GUID_ STRING_LENGTH() + 2)
#define PJSIP_MAX_HNAME_LEN 64 #define PJSIP_MAX_HNAME_LEN 64
/* Dialog related constants. */ /* Dialog related constants. */
#define PJSIP_POOL_LEN_DIALOG 1200 #define PJSIP_POOL_LEN_DIALOG 1200
#define PJSIP_POOL_INC_DIALOG 512 #define PJSIP_POOL_INC_DIALOG 512
/* Maximum header types. */ /* Maximum header types. */
#define PJSIP_MAX_HEADER_TYPES 64 #define PJSIP_MAX_HEADER_TYPES 72
/* Maximum URI types. */ /* Maximum URI types. */
#define PJSIP_MAX_URI_TYPES 4 #define PJSIP_MAX_URI_TYPES 4
/************************************************************************** *** /************************************************************************** ***
* Default timeout settings, in miliseconds. * Default timeout settings, in miliseconds.
*/ */
/** Transaction T1 timeout value. */ /** Transaction T1 timeout value. */
#if !defined(PJSIP_T1_TIMEOUT) #if !defined(PJSIP_T1_TIMEOUT)
skipping to change at line 843 skipping to change at line 843
/** /**
* Add "timestamp" information in generated PIDF document for both server * Add "timestamp" information in generated PIDF document for both server
* subscription and presence publication. * subscription and presence publication.
* *
* Default: 1 (yes) * Default: 1 (yes)
*/ */
#ifndef PJSIP_PRES_PIDF_ADD_TIMESTAMP #ifndef PJSIP_PRES_PIDF_ADD_TIMESTAMP
# define PJSIP_PRES_PIDF_ADD_TIMESTAMP 1 # define PJSIP_PRES_PIDF_ADD_TIMESTAMP 1
#endif #endif
/**
* Default session interval for Session Timer (RFC 4028) extension, in
* seconds. As specified in RFC 4028 Section 4, this value must not be
* less than the absolute minimum for the Session-Expires header field
* 90 seconds, and the recommended value is 1800 seconds.
*
* Default: 1800 seconds
*/
#ifndef PJSIP_SESS_TIMER_DEF_SE
# define PJSIP_SESS_TIMER_DEF_SE 1800
#endif
PJ_END_DECL PJ_END_DECL
/** /**
* @} * @}
*/ */
#include <pj/config.h> #include <pj/config.h>
#endif /* __PJSIP_SIP_CONFIG_H__ */ #endif /* __PJSIP_SIP_CONFIG_H__ */
 End of changes. 3 change blocks. 
2 lines changed or deleted 14 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


 transport_loop.h   transport_loop.h 
/* $Id: transport_loop.h 2394 2008-12-23 17:27:53Z bennylp $ */ /* $Id: transport_loop.h 2845 2009-07-29 12:19:25Z 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 36 skipping to change at line 36
*/ */
#include <pjmedia/stream.h> #include <pjmedia/stream.h>
/** /**
* @defgroup PJMEDIA_TRANSPORT_LOOP Loopback Media Transport * @defgroup PJMEDIA_TRANSPORT_LOOP Loopback Media Transport
* @ingroup PJMEDIA_TRANSPORT * @ingroup PJMEDIA_TRANSPORT
* @brief Loopback transport for testing. * @brief Loopback transport for testing.
* @{ * @{
* *
* This is the loopback media transport, where packet sent to this transpor * This is the loopback media transport, where packets sent to this transpo
t rt
* will immediately be sent back to the callback. * will be sent back to the streams attached to this transport. Unlike the
* other PJMEDIA transports, the loop transport may be attached to multiple
* streams (in other words, application should specify the same loop transp
ort
* instance when calling #pjmedia_stream_create()). Any RTP or RTCP packets
* sent by one stream to this transport by default will be sent back to all
* streams that are attached to this transport, including to the stream tha
t
* sends the packet. Application may individually select which stream to
* receive packets by calling #pjmedia_transport_loop_disable_rx().
*/ */
PJ_BEGIN_DECL PJ_BEGIN_DECL
/** /**
* Create the loopback transport. * Create the loopback transport.
* *
* @param endpt The media endpoint instance. * @param endpt The media endpoint instance.
* @param p_tp Pointer to receive the transport instance. * @param p_tp Pointer to receive the transport instance.
* *
* @return PJ_SUCCESS on success. * @return PJ_SUCCESS on success.
*/ */
PJ_DECL(pj_status_t) pjmedia_transport_loop_create(pjmedia_endpt *endpt, PJ_DECL(pj_status_t) pjmedia_transport_loop_create(pjmedia_endpt *endpt,
pjmedia_transport **p_tp) ; pjmedia_transport **p_tp) ;
/**
* Set this stream as the receiver of incoming packets.
*/
PJ_DECL(pj_status_t) pjmedia_transport_loop_disable_rx(pjmedia_transport *t
p,
void *user,
pj_bool_t disabled);
PJ_END_DECL PJ_END_DECL
/** /**
* @} * @}
*/ */
#endif /* __PJMEDIA_TRANSPORT_LOOP_H__ */ #endif /* __PJMEDIA_TRANSPORT_LOOP_H__ */
 End of changes. 3 change blocks. 
4 lines changed or deleted 21 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

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