| alaw_ulaw.h | | alaw_ulaw.h | |
|
| /* $Id: alaw_ulaw.h 2416 2009-01-05 15:27:02Z nanang $ */ | | /* $Id: alaw_ulaw.h 2506 2009-03-12 18:11:37Z 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 145 | | skipping to change at line 145 | |
| */ | | */ | |
| PJ_DECL(unsigned char) pjmedia_ulaw2alaw(unsigned char uval); | | PJ_DECL(unsigned char) pjmedia_ulaw2alaw(unsigned char uval); | |
| | | | |
| #endif | | #endif | |
| | | | |
| /** | | /** | |
| * Encode 16-bit linear PCM data to 8-bit U-Law data. | | * Encode 16-bit linear PCM data to 8-bit U-Law data. | |
| * | | * | |
| * @param dst Destination buffer for 8-bit U-Law data. | | * @param dst Destination buffer for 8-bit U-Law data. | |
| * @param src Source, 16-bit linear PCM data. | | * @param src Source, 16-bit linear PCM data. | |
|
| * @param len Number of samples. | | * @param count Number of samples. | |
| */ | | */ | |
| PJ_INLINE(void) pjmedia_ulaw_encode(pj_uint8_t *dst, const pj_int16_t *src, | | PJ_INLINE(void) pjmedia_ulaw_encode(pj_uint8_t *dst, const pj_int16_t *src, | |
|
| pj_size_t len) | | pj_size_t count) | |
| { | | { | |
|
| const pj_int16_t *end = src + len; | | const pj_int16_t *end = src + count; | |
| | | | |
| while (src < end) { | | while (src < end) { | |
| *dst++ = pjmedia_linear2ulaw(*src++); | | *dst++ = pjmedia_linear2ulaw(*src++); | |
| } | | } | |
| } | | } | |
| | | | |
| /** | | /** | |
| * Encode 16-bit linear PCM data to 8-bit A-Law data. | | * Encode 16-bit linear PCM data to 8-bit A-Law data. | |
| * | | * | |
| * @param dst Destination buffer for 8-bit A-Law data. | | * @param dst Destination buffer for 8-bit A-Law data. | |
| * @param src Source, 16-bit linear PCM data. | | * @param src Source, 16-bit linear PCM data. | |
|
| * @param len Number of samples. | | * @param count Number of samples. | |
| */ | | */ | |
| PJ_INLINE(void) pjmedia_alaw_encode(pj_uint8_t *dst, const pj_int16_t *src, | | PJ_INLINE(void) pjmedia_alaw_encode(pj_uint8_t *dst, const pj_int16_t *src, | |
|
| pj_size_t len) | | pj_size_t count) | |
| { | | { | |
|
| const pj_int16_t *end = src + len; | | const pj_int16_t *end = src + count; | |
| | | | |
| while (src < end) { | | while (src < end) { | |
| *dst++ = pjmedia_linear2alaw(*src++); | | *dst++ = pjmedia_linear2alaw(*src++); | |
| } | | } | |
| } | | } | |
| | | | |
| /** | | /** | |
| * Decode 8-bit U-Law data to 16-bit linear PCM data. | | * Decode 8-bit U-Law data to 16-bit linear PCM data. | |
| * | | * | |
| * @param dst Destination buffer for 16-bit PCM data. | | * @param dst Destination buffer for 16-bit PCM data. | |
| * @param src Source, 8-bit U-Law data. | | * @param src Source, 8-bit U-Law data. | |
|
| * @param len Number of samples. | | * @param len Encoded frame/source length in bytes. | |
| */ | | */ | |
| PJ_INLINE(void) pjmedia_ulaw_decode(pj_int16_t *dst, const pj_uint8_t *src, | | PJ_INLINE(void) pjmedia_ulaw_decode(pj_int16_t *dst, const pj_uint8_t *src, | |
| pj_size_t len) | | pj_size_t len) | |
| { | | { | |
| const pj_uint8_t *end = src + len; | | const pj_uint8_t *end = src + len; | |
| | | | |
| while (src < end) { | | while (src < end) { | |
| *dst++ = pjmedia_ulaw2linear(*src++); | | *dst++ = pjmedia_ulaw2linear(*src++); | |
| } | | } | |
| } | | } | |
| | | | |
| /** | | /** | |
| * Decode 8-bit A-Law data to 16-bit linear PCM data. | | * Decode 8-bit A-Law data to 16-bit linear PCM data. | |
| * | | * | |
| * @param dst Destination buffer for 16-bit PCM data. | | * @param dst Destination buffer for 16-bit PCM data. | |
| * @param src Source, 8-bit A-Law data. | | * @param src Source, 8-bit A-Law data. | |
|
| * @param len Number of samples. | | * @param len Encoded frame/source length in bytes. | |
| */ | | */ | |
| PJ_INLINE(void) pjmedia_alaw_decode(pj_int16_t *dst, const pj_uint8_t *src, | | PJ_INLINE(void) pjmedia_alaw_decode(pj_int16_t *dst, const pj_uint8_t *src, | |
| pj_size_t len) | | pj_size_t len) | |
| { | | { | |
| const pj_uint8_t *end = src + len; | | const pj_uint8_t *end = src + len; | |
| | | | |
| while (src < end) { | | while (src < end) { | |
| *dst++ = pjmedia_alaw2linear(*src++); | | *dst++ = pjmedia_alaw2linear(*src++); | |
| } | | } | |
| } | | } | |
| | | | |
End of changes. 9 change blocks. |
| 9 lines changed or deleted | | 9 lines changed or added | |
|
| amr_helper.h | | amr_helper.h | |
|
| /* $Id: amr_helper.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: amr_helper.h 2506 2009-03-12 18:11:37Z 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 629 | | skipping to change at line 629 | |
| encoder. */ | | encoder. */ | |
| } pjmedia_codec_amr_pack_setting; | | } pjmedia_codec_amr_pack_setting; | |
| | | | |
| /** | | /** | |
| * Get AMR mode based on bitrate. | | * Get AMR mode based on bitrate. | |
| * | | * | |
| * @param bitrate AMR bitrate. | | * @param bitrate AMR bitrate. | |
| * | | * | |
| * @return AMR mode. | | * @return AMR mode. | |
| */ | | */ | |
|
| | | | |
| PJ_INLINE(pj_int8_t) pjmedia_codec_amr_get_mode(unsigned bitrate) | | PJ_INLINE(pj_int8_t) pjmedia_codec_amr_get_mode(unsigned bitrate) | |
| { | | { | |
| pj_int8_t mode = -1; | | pj_int8_t mode = -1; | |
| | | | |
| if(bitrate==4750){ | | if(bitrate==4750){ | |
| mode = 0; | | mode = 0; | |
| } else if(bitrate==5150){ | | } else if(bitrate==5150){ | |
| mode = 1; | | mode = 1; | |
| } else if(bitrate==5900){ | | } else if(bitrate==5900){ | |
| mode = 2; | | mode = 2; | |
| | | | |
| skipping to change at line 675 | | skipping to change at line 674 | |
| mode = 6; | | mode = 6; | |
| } else if(bitrate==23050){ | | } else if(bitrate==23050){ | |
| mode = 7; | | mode = 7; | |
| } else if(bitrate==23850){ | | } else if(bitrate==23850){ | |
| mode = 8; | | mode = 8; | |
| } | | } | |
| return mode; | | return mode; | |
| } | | } | |
| | | | |
| /** | | /** | |
|
| | | * Get AMR mode based on frame length. | |
| | | * | |
| | | * @param amrnb Set to PJ_TRUE for AMR-NB domain or PJ_FALSE for | |
| | | AMR-WB. | |
| | | * @param frame_len The frame length. | |
| | | * | |
| | | * @return AMR mode. | |
| | | */ | |
| | | | |
| | | PJ_INLINE(pj_int8_t) pjmedia_codec_amr_get_mode2(pj_bool_t amrnb, | |
| | | unsigned frame_len) | |
| | | { | |
| | | int i; | |
| | | | |
| | | if (amrnb) { | |
| | | for (i = 0; i < 9; ++i) | |
| | | if (frame_len == pjmedia_codec_amrnb_framelen[i]) | |
| | | return (pj_int8_t)i; | |
| | | } else { | |
| | | for (i = 0; i < 10; ++i) { | |
| | | if (frame_len == pjmedia_codec_amrwb_framelen[i]) | |
| | | return (pj_int8_t)i; | |
| | | } | |
| | | } | |
| | | | |
| | | pj_assert(!"Invalid AMR frame length"); | |
| | | return -1; | |
| | | } | |
| | | | |
| | | /** | |
| * Prepare a frame before pass it to decoder. This function will do: | | * Prepare a frame before pass it to decoder. This function will do: | |
| * - reorder AMR bitstream from descending sensitivity order into | | * - reorder AMR bitstream from descending sensitivity order into | |
| * encoder bits order. This can be enabled/disabled via param | | * encoder bits order. This can be enabled/disabled via param | |
| * 'setting' by setting/resetting field 'reorder'. | | * 'setting' by setting/resetting field 'reorder'. | |
| * - align left the start bit (make the start_bit to be 0). | | * - align left the start bit (make the start_bit to be 0). | |
| * | | * | |
| * @param amr_nb Set PJ_TRUE for AMR-NB and PJ_FALSE for AMR-WB. | | * @param amr_nb Set PJ_TRUE for AMR-NB and PJ_FALSE for AMR-WB. | |
| * @param in Input frame. | | * @param in Input frame. | |
| * @param setting Settings, see @pjmedia_codec_amr_pack_setting. | | * @param setting Settings, see @pjmedia_codec_amr_pack_setting. | |
| * @param out Output frame. | | * @param out Output frame. | |
| | | | |
| skipping to change at line 791 | | skipping to change at line 819 | |
| | | | |
| if (setting->amr_nb) | | if (setting->amr_nb) | |
| FT_ = (pj_uint8_t)((amr_bits[36] << 2) | (amr_bits[37] << 1) | | | FT_ = (pj_uint8_t)((amr_bits[36] << 2) | (amr_bits[37] << 1) | | |
| amr_bits[38]); | | amr_bits[38]); | |
| else | | else | |
| FT_ = (pj_uint8_t)((amr_bits[36] << 3) | (amr_bits[37] << 2) | | | FT_ = (pj_uint8_t)((amr_bits[36] << 3) | (amr_bits[37] << 2) | | |
| (amr_bits[38] << 1) | amr_bits[39]); | | (amr_bits[38] << 1) | amr_bits[39]); | |
| | | | |
| out_info->mode = FT_; | | out_info->mode = FT_; | |
| out->size = 5; | | out->size = 5; | |
|
| PJ_ASSERT_RETURN(out->size <= in->size, PJMEDIA_CODEC_EFRMINLEN); | | | |
| | | | |
| pj_bzero(out->buf, out->size); | | pj_bzero(out->buf, out->size); | |
| for(i = 0; i < framelenbit_tbl[SID_FT]; ++i) { | | for(i = 0; i < framelenbit_tbl[SID_FT]; ++i) { | |
| if (amr_bits[i]) | | if (amr_bits[i]) | |
| *w |= (1 << (7-w_bitptr)); | | *w |= (1 << (7-w_bitptr)); | |
| | | | |
| if (++w_bitptr == 8) { | | if (++w_bitptr == 8) { | |
| ++w; | | ++w; | |
| w_bitptr = 0; | | w_bitptr = 0; | |
| } | | } | |
| | | | |
End of changes. 4 change blocks. |
| 3 lines changed or deleted | | 31 lines changed or added | |
|
| codec.h | | codec.h | |
|
| /* $Id: codec.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: codec.h 2506 2009-03-12 18:11:37Z 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 274 | | skipping to change at line 274 | |
| struct { | | struct { | |
| unsigned clock_rate; /**< Sampling rate in Hz
*/ | | unsigned clock_rate; /**< Sampling rate in Hz
*/ | |
| unsigned channel_cnt; /**< Channel count.
*/ | | unsigned channel_cnt; /**< Channel count.
*/ | |
| pj_uint32_t avg_bps; /**< Average bandwidth in bits/sec
*/ | | pj_uint32_t avg_bps; /**< Average bandwidth in bits/sec
*/ | |
| pj_uint32_t max_bps; /**< Maximum bandwidth in bits/sec
*/ | | pj_uint32_t max_bps; /**< Maximum bandwidth in bits/sec
*/ | |
| pj_uint16_t frm_ptime; /**< Decoder frame ptime in msec.
*/ | | pj_uint16_t frm_ptime; /**< Decoder frame ptime in msec.
*/ | |
| pj_uint16_t enc_ptime; /**< Encoder ptime, or zero if it's | | pj_uint16_t enc_ptime; /**< Encoder ptime, or zero if it's | |
| equal to decoder ptime.
*/ | | equal to decoder ptime.
*/ | |
| pj_uint8_t pcm_bits_per_sample; /**< Bits/sample in the PCM
side */ | | pj_uint8_t pcm_bits_per_sample; /**< Bits/sample in the PCM
side */ | |
| pj_uint8_t pt; /**< Payload type.
*/ | | pj_uint8_t pt; /**< Payload type.
*/ | |
|
| | | pjmedia_format_id fmt_id; /**< Source format, it's format of | |
| | | encoder input and decoder | |
| | | output. | |
| | | */ | |
| } info; | | } info; | |
| | | | |
| /** | | /** | |
| * The "setting" part of codec param describes various settings to be | | * The "setting" part of codec param describes various settings to be | |
| * applied to the codec. When the codec param is retrieved from the cod
ec | | * applied to the codec. When the codec param is retrieved from the cod
ec | |
| * or codec factory, the values of these will be filled by the capabili
ty | | * or codec factory, the values of these will be filled by the capabili
ty | |
| * of the codec. Any features that are supported by the codec (e.g. vad | | * of the codec. Any features that are supported by the codec (e.g. vad | |
| * or plc) will be turned on, so that application can query which | | * or plc) will be turned on, so that application can query which | |
| * capabilities are supported by the codec. Application may change the | | * capabilities are supported by the codec. Application may change the | |
| * settings here before instantiating the codec/stream. | | * settings here before instantiating the codec/stream. | |
| | | | |
End of changes. 2 change blocks. |
| 1 lines changed or deleted | | 5 lines changed or added | |
|
| conference.h | | conference.h | |
|
| /* $Id: conference.h 2790 2009-06-24 15:26:59Z nanang $ */ | | /* $Id: conference.h 2506 2009-03-12 18:11:37Z 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 46 | | skipping to change at line 46 | |
| * conference bridge provides powerful and very efficient mechanism to | | * conference bridge provides powerful and very efficient mechanism to | |
| * route the audio flow and mix the audio signal when required. | | * route the audio flow and mix the audio signal when required. | |
| * | | * | |
| * Some more information about the media flow when conference bridge is | | * Some more information about the media flow when conference bridge is | |
| * used is described in http://www.pjsip.org/trac/wiki/media-flow . | | * used is described in http://www.pjsip.org/trac/wiki/media-flow . | |
| */ | | */ | |
| | | | |
| PJ_BEGIN_DECL | | PJ_BEGIN_DECL | |
| | | | |
| /** | | /** | |
|
| | | * The conference bridge signature in pjmedia_port_info. | |
| | | */ | |
| | | #define PJMEDIA_CONF_BRIDGE_SIGNATURE \ | |
| | | PJMEDIA_PORT_SIGNATURE('C', 'O', 'N', 'F') | |
| | | | |
| | | /** | |
| | | * The audio switchboard signature in pjmedia_port_info. | |
| | | */ | |
| | | #define PJMEDIA_CONF_SWITCH_SIGNATURE \ | |
| | | PJMEDIA_PORT_SIGNATURE('A', 'S', 'W', 'I') | |
| | | | |
| | | /** | |
| * Opaque type for conference bridge. | | * Opaque type for conference bridge. | |
| */ | | */ | |
| typedef struct pjmedia_conf pjmedia_conf; | | typedef struct pjmedia_conf pjmedia_conf; | |
| | | | |
| /** | | /** | |
| * Conference port info. | | * Conference port info. | |
| */ | | */ | |
| typedef struct pjmedia_conf_port_info | | typedef struct pjmedia_conf_port_info | |
| { | | { | |
| unsigned slot; /**< Slot number.
*/ | | unsigned slot; /**< Slot number.
*/ | |
| pj_str_t name; /**< Port name.
*/ | | pj_str_t name; /**< Port name.
*/ | |
|
| | | pjmedia_format format; /**< Format.
*/ | |
| pjmedia_port_op tx_setting; /**< Transmit settings.
*/ | | pjmedia_port_op tx_setting; /**< Transmit settings.
*/ | |
| pjmedia_port_op rx_setting; /**< Receive settings.
*/ | | pjmedia_port_op rx_setting; /**< Receive settings.
*/ | |
| unsigned listener_cnt; /**< Number of listeners.
*/ | | unsigned listener_cnt; /**< Number of listeners.
*/ | |
| unsigned *listener_slots; /**< Array of listeners.
*/ | | unsigned *listener_slots; /**< Array of listeners.
*/ | |
|
| | | unsigned transmitter_cnt; /**< Number of transmitter.
*/ | |
| unsigned clock_rate; /**< Clock rate of the port.
*/ | | unsigned clock_rate; /**< Clock rate of the port.
*/ | |
| unsigned channel_count; /**< Number of channels.
*/ | | unsigned channel_count; /**< Number of channels.
*/ | |
| unsigned samples_per_frame; /**< Samples per frame
*/ | | unsigned samples_per_frame; /**< Samples per frame
*/ | |
| unsigned bits_per_sample; /**< Bits per sample.
*/ | | unsigned bits_per_sample; /**< Bits per sample.
*/ | |
| int tx_adj_level; /**< Tx level adjustment
. */ | | int tx_adj_level; /**< Tx level adjustment
. */ | |
| int rx_adj_level; /**< Rx level adjustment
. */ | | int rx_adj_level; /**< Rx level adjustment
. */ | |
| } pjmedia_conf_port_info; | | } pjmedia_conf_port_info; | |
| | | | |
| /** | | /** | |
| * Conference port options. The values here can be combined in bitmask to | | * Conference port options. The values here can be combined in bitmask to | |
| | | | |
| skipping to change at line 218 | | skipping to change at line 232 | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_conf_add_port( pjmedia_conf *conf, | | PJ_DECL(pj_status_t) pjmedia_conf_add_port( pjmedia_conf *conf, | |
| pj_pool_t *pool, | | pj_pool_t *pool, | |
| pjmedia_port *strm_port, | | pjmedia_port *strm_port, | |
| const pj_str_t *name, | | const pj_str_t *name, | |
| unsigned *p_slot ); | | unsigned *p_slot ); | |
| | | | |
| /** | | /** | |
|
| * <i><b>Warning:</b> This API has been deprecated since 1.3 and will be | | | |
| * removed in the future release, use #PJMEDIA_SPLITCOMB instead.</i> | | | |
| * | | | |
| * Create and add a passive media port to the conference bridge. Unlike | | * Create and add a passive media port to the conference bridge. Unlike | |
| * "normal" media port that is added with #pjmedia_conf_add_port(), media | | * "normal" media port that is added with #pjmedia_conf_add_port(), media | |
| * port created with this function will not have its get_frame() and | | * port created with this function will not have its get_frame() and | |
| * put_frame() called by the bridge; instead, application MUST continuosly | | * put_frame() called by the bridge; instead, application MUST continuosly | |
| * call these functions to the port, to allow media to flow from/to the | | * call these functions to the port, to allow media to flow from/to the | |
| * port. | | * port. | |
| * | | * | |
| * Upon return of this function, application will be given two objects: | | * Upon return of this function, application will be given two objects: | |
| * the slot number of the port in the bridge, and pointer to the media | | * the slot number of the port in the bridge, and pointer to the media | |
| * port where application MUST start calling get_frame() and put_frame() | | * port where application MUST start calling get_frame() and put_frame() | |
| | | | |
End of changes. 5 change blocks. |
| 4 lines changed or deleted | | 15 lines changed or added | |
|
| config_site_sample.h | | config_site_sample.h | |
|
| | | | |
| //#define PJ_CONFIG_MINIMAL_SIZE | | | |
| //#define PJ_CONFIG_MAXIMUM_SPEED | | | |
| | | | |
| /* | | /* | |
|
| * This file (config_site_sample.h) contains various configuration | | * This file contains several sample settings especially for Windows | |
| * settings that I use for certain settings. | | * Mobile and Symbian targets. You can include this file in your | |
| | | * <pj/config_site.h> file. | |
| | | * | |
| | | * The Windows Mobile and Symbian settings will be activated | |
| | | * automatically if you include this file. | |
| | | * | |
| | | * In addition, you may specify one of these macros (before including | |
| | | * this file) to activate additional settings: | |
| | | * | |
| | | * #define PJ_CONFIG_NOKIA_APS_DIRECT | |
| | | * Use this macro to activate the APS-Direct feature. Please see | |
| | | * http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct for more | |
| | | * info. | |
| | | * | |
| | | * #define PJ_CONFIG_WIN32_WMME_DIRECT | |
| | | * Configuration to activate "APS-Direct" media mode on Windows or | |
| | | * Windows Mobile, useful for testing purposes only. | |
| */ | | */ | |
| | | | |
| /* | | /* | |
| * Typical configuration for WinCE target. | | * Typical configuration for WinCE target. | |
| */ | | */ | |
| #if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 | | #if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 | |
|
| # define PJ_HAS_FLOATING_POINT 0 | | | |
| | | | |
|
| # define PJMEDIA_HAS_G711_PLC 0 | | /* | |
| //# define PJMEDIA_HAS_SMALL_FILTER 1 | | * PJLIB settings. | |
| //# define PJMEDIA_HAS_LARGE_FILTER 0 | | */ | |
| # define PJMEDIA_HAS_L16_CODEC 0 | | | |
| /*# define PJMEDIA_HAS_GSM_CODEC 0*/ | | | |
| /*# define PJMEDIA_HAS_ILBC_CODEC 0*/ | | | |
| /*# define PJMEDIA_HAS_SPEEX_CODEC 0*/ | | | |
| # define PJMEDIA_HAS_SPEEX_AEC 0 | | | |
| # undef PJMEDIA_RESAMPLE_IMP | | | |
| # define PJMEDIA_RESAMPLE_IMP PJMEDIA_RESAMPLE_LIBRESAMPLE | | | |
| # define PJMEDIA_WSOLA_IMP PJMEDIA_WSOLA_IMP_WSOLA_LITE | | | |
| | | | |
| /* Speex default quality settings */ | | | |
| # define PJSUA_DEFAULT_CODEC_QUALITY 5 | | | |
| # define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | | | |
| | | | |
|
| # define PJMEDIA_SDP_NEG_PREFER_REMOTE_CODEC_ORDER 0 | | /* Disable floating point support */ | |
| #endif | | #define PJ_HAS_FLOATING_POINT 0 | |
| | | | |
| | | /* | |
| | | * PJMEDIA settings | |
| | | */ | |
| | | | |
| | | /* Select codecs to disable */ | |
| | | #define PJMEDIA_HAS_L16_CODEC 0 | |
| | | #define PJMEDIA_HAS_ILBC_CODEC 0 | |
| | | | |
| | | /* We probably need more buffers on WM, so increase the limit */ | |
| | | #define PJMEDIA_SOUND_BUFFER_COUNT 32 | |
| | | | |
| | | /* Fine tune Speex's default settings for best performance/quality */ | |
| | | #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | |
| | | | |
| | | /* For CPU reason, disable speex AEC and use the echo suppressor. */ | |
| | | #define PJMEDIA_HAS_SPEEX_AEC 0 | |
| | | | |
| | | /* Shouldn't use resampling for performance reason too. */ | |
| | | #define PJMEDIA_RESAMPLE_IMP PJMEDIA_RESAMPLE_NONE | |
| | | | |
| | | /* Use the lighter WSOLA implementation */ | |
| | | #define PJMEDIA_WSOLA_IMP PJMEDIA_WSOLA_IMP_WSOLA_LITE | |
| | | | |
| | | /* | |
| | | * PJSIP settings. | |
| | | */ | |
| | | | |
| | | /* Set maximum number of dialog/transaction/calls to minimum to reduce | |
| | | * memory usage | |
| | | */ | |
| | | #define PJSIP_MAX_TSX_COUNT 31 | |
| | | #define PJSIP_MAX_DIALOG_COUNT 31 | |
| | | #define PJSUA_MAX_CALLS 4 | |
| | | | |
| | | /* | |
| | | * PJSUA settings | |
| | | */ | |
| | | | |
| | | /* Default codec (Speex) quality */ | |
| | | #define PJSUA_DEFAULT_CODEC_QUALITY 5 | |
| | | | |
| | | /* Set maximum number of objects to minimum to reduce memory usage */ | |
| | | #define PJSUA_MAX_ACC 4 | |
| | | #define PJSUA_MAX_PLAYERS 4 | |
| | | #define PJSUA_MAX_RECORDERS 4 | |
| | | #define PJSUA_MAX_CONF_PORTS (PJSUA_MAX_CALLS+2*PJSUA_MAX | |
| | | _PLAYERS) | |
| | | #define PJSUA_MAX_BUDDIES 32 | |
| | | | |
| | | #endif /* PJ_WIN32_WINCE */ | |
| | | | |
| /* | | /* | |
| * Typical configuration for Symbian OS target | | * Typical configuration for Symbian OS target | |
| */ | | */ | |
| #if defined(PJ_SYMBIAN) && PJ_SYMBIAN!=0 | | #if defined(PJ_SYMBIAN) && PJ_SYMBIAN!=0 | |
| | | | |
|
| /* We don't want to use float, for now */ | | /* | |
| # undef PJ_HAS_FLOATING_POINT | | * PJLIB settings. | |
| # define PJ_HAS_FLOATING_POINT 0 | | */ | |
| | | | |
|
| # define PJMEDIA_SOUND_IMPLEMENTATION PJMEDIA_SOUND_NULL_SOUND | | /* Disable floating point support */ | |
| | | #define PJ_HAS_FLOATING_POINT 0 | |
| | | | |
| /* Misc PJLIB setting */ | | /* Misc PJLIB setting */ | |
|
| # define PJ_MAXPATH 80 | | #define PJ_MAXPATH 80 | |
| | | | |
|
| /* SRTP has not been ported to Symbian yet */ | | /* This is important for Symbian. Symbian lacks vsnprintf(), so | |
| # define PJMEDIA_HAS_SRTP 1 | | * if the log buffer is not long enough it's possible that | |
| | | * large incoming packet will corrupt memory when the log tries | |
| | | * to log the packet. | |
| | | */ | |
| | | #define PJ_LOG_MAX_SIZE (PJSIP_MAX_PKT_LEN+500) | |
| | | | |
|
| /* Disable these */ | | /* Since we don't have threads, log buffer can use static buffer | |
| # define PJMEDIA_RESAMPLE_IMP PJMEDIA_RESAMPLE_NONE | | * rather than stack | |
| # define PJMEDIA_HAS_SPEEX_AEC 0 | | */ | |
| # define PJMEDIA_WSOLA_IMP PJMEDIA_WSOLA_IMP_WSOLA_LITE | | #define PJ_LOG_USE_STACK_BUFFER 0 | |
| | | | |
| /* Disable all codecs but G.711 and GSM, for now */ | | | |
| # define PJMEDIA_HAS_GSM_CODEC 1 | | | |
| # define PJMEDIA_HAS_L16_CODEC 0 | | | |
| # define PJMEDIA_HAS_ILBC_CODEC 0 | | | |
| # define PJMEDIA_HAS_SPEEX_CODEC 1 | | | |
| # define PJMEDIA_HAS_G722_CODEC 0 | | | |
| | | | |
|
| /* Need larger sound buffers */ | | /* Disable check stack since it increases footprint */ | |
| # define PJMEDIA_SOUND_BUFFER_COUNT 16 | | #define PJ_OS_HAS_CHECK_STACK 0 | |
| | | | |
|
| /* Disable safe module access */ | | /* | |
| # define PJSIP_SAFE_MODULE 0 | | * PJMEDIA settings | |
| | | */ | |
| | | | |
|
| # define PJSIP_MAX_PKT_LEN 2000 | | /* Disable non-Symbian audio devices */ | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_WMME 0 | |
| | | | |
|
| /* This is important for Symbian. Symbian lacks vsnprintf(), so | | /* Select codecs to disable */ | |
| * if the log buffer is not long enough it's possible that | | #define PJMEDIA_HAS_L16_CODEC 0 | |
| * large incoming packet will corrupt memory when the log tries | | #define PJMEDIA_HAS_ILBC_CODEC 0 | |
| * to log the packet. | | #define PJMEDIA_HAS_G722_CODEC 0 | |
| | | | |
| | | /* Fine tune Speex's default settings for best performance/quality */ | |
| | | #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | |
| | | | |
| | | /* For CPU reason, disable speex AEC and use the echo suppressor. */ | |
| | | #define PJMEDIA_HAS_SPEEX_AEC 0 | |
| | | | |
| | | /* Shouldn't use resampling for performance reason too. */ | |
| | | #define PJMEDIA_RESAMPLE_IMP PJMEDIA_RESAMPLE_NONE | |
| | | | |
| | | /* Use the lighter WSOLA implementation */ | |
| | | #define PJMEDIA_WSOLA_IMP PJMEDIA_WSOLA_IMP_WSOLA_LITE | |
| | | | |
| | | /* We probably need more buffers especially if MDA audio backend | |
| | | * is used, so increase the limit | |
| */ | | */ | |
|
| # define PJ_LOG_MAX_SIZE (PJSIP_MAX_PKT_LEN+500) | | #define PJMEDIA_SOUND_BUFFER_COUNT 32 | |
| | | | |
|
| /* Since we don't have threads, log buffer can use static buffer */ | | /* | |
| # define PJ_LOG_USE_STACK_BUFFER 0 | | * PJSIP settings. | |
| | | */ | |
| | | | |
|
| /* Disable check stack since it increases footprint */ | | /* Disable safe module access, since we don't use multithreading */ | |
| # undef PJ_OS_HAS_CHECK_STACK | | #define PJSIP_SAFE_MODULE 0 | |
| # define PJ_OS_HAS_CHECK_STACK 0 | | | |
| | | /* Increase allowable packet size, just in case */ | |
| | | #define PJSIP_MAX_PKT_LEN 2000 | |
| | | | |
| /* Symbian has problem with too many large blocks */ | | /* Symbian has problem with too many large blocks */ | |
|
| # define PJSIP_POOL_LEN_ENDPT 1000 | | #define PJSIP_POOL_LEN_ENDPT 1000 | |
| # define PJSIP_POOL_INC_ENDPT 1000 | | #define PJSIP_POOL_INC_ENDPT 1000 | |
| # define PJSIP_POOL_RDATA_LEN 2000 | | #define PJSIP_POOL_RDATA_LEN 2000 | |
| # define PJSIP_POOL_RDATA_INC 2000 | | #define PJSIP_POOL_RDATA_INC 2000 | |
| # define PJSIP_POOL_LEN_TDATA 2000 | | #define PJSIP_POOL_LEN_TDATA 2000 | |
| # define PJSIP_POOL_INC_TDATA 512 | | #define PJSIP_POOL_INC_TDATA 512 | |
| # define PJSIP_POOL_LEN_UA 2000 | | #define PJSIP_POOL_LEN_UA 2000 | |
| # define PJSIP_POOL_INC_UA 1000 | | #define PJSIP_POOL_INC_UA 1000 | |
| # define PJSIP_POOL_TSX_LAYER_LEN 256 | | #define PJSIP_POOL_TSX_LAYER_LEN 256 | |
| # define PJSIP_POOL_TSX_LAYER_INC 256 | | #define PJSIP_POOL_TSX_LAYER_INC 256 | |
| # define PJSIP_POOL_TSX_LEN 512 | | #define PJSIP_POOL_TSX_LEN 512 | |
| # define PJSIP_POOL_TSX_INC 128 | | #define PJSIP_POOL_TSX_INC 128 | |
| | | | |
| | | /* | |
| | | * PJSUA settings. | |
| | | */ | |
| | | | |
| | | /* Default codec quality */ | |
| | | #define PJSUA_DEFAULT_CODEC_QUALITY 5 | |
| | | | |
| /* Set maximum number of dialog/transaction/calls to minimum */ | | /* Set maximum number of dialog/transaction/calls to minimum */ | |
|
| # define PJSIP_MAX_TSX_COUNT 31 | | #define PJSIP_MAX_TSX_COUNT 31 | |
| # define PJSIP_MAX_DIALOG_COUNT 31 | | #define PJSIP_MAX_DIALOG_COUNT 31 | |
| # define PJSUA_MAX_CALLS 4 | | #define PJSUA_MAX_CALLS 4 | |
| | | | |
| /* Other pjsua settings */ | | /* Other pjsua settings */ | |
|
| # define PJSUA_MAX_ACC 4 | | #define PJSUA_MAX_ACC 4 | |
| # define PJSUA_MAX_PLAYERS 4 | | #define PJSUA_MAX_PLAYERS 4 | |
| # define PJSUA_MAX_RECORDERS 4 | | #define PJSUA_MAX_RECORDERS 4 | |
| # define PJSUA_MAX_CONF_PORTS (PJSUA_MAX_CALLS+2*PJSUA_MAX | | #define PJSUA_MAX_CONF_PORTS (PJSUA_MAX_CALLS+2*PJSUA_MAX | |
| _PLAYERS) | | _PLAYERS) | |
| # define PJSUA_MAX_BUDDIES 32 | | #define PJSUA_MAX_BUDDIES 32 | |
| | | #endif | |
| /* Speex default quality settings */ | | | |
| # define PJSUA_DEFAULT_CODEC_QUALITY 5 | | /* | |
| # define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY 5 | | * Additional configuration to activate APS-Direct feature for | |
| | | * Nokia S60 target | |
| | | * | |
| | | * Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct | |
| | | */ | |
| | | #ifdef PJ_CONFIG_NOKIA_APS_DIRECT | |
| | | | |
| | | /* MUST use switchboard rather than the conference bridge */ | |
| | | #define PJMEDIA_CONF_USE_SWITCH_BOARD 1 | |
| | | | |
| | | /* Enable APS sound device backend and disable MDA */ | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA 0 | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS 1 | |
| | | | |
| | | /* 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 | |
| | | | |
| | | /* | |
| | | * Configuration to activate "APS-Direct" media mode on Windows, | |
| | | * useful for testing purposes only. | |
| | | */ | |
| | | #ifdef PJ_CONFIG_WIN32_WMME_DIRECT | |
| | | | |
| | | /* MUST use switchboard rather than the conference bridge */ | |
| | | #define PJMEDIA_CONF_USE_SWITCH_BOARD 1 | |
| | | | |
| | | /* Only WMME supports the "direct" feature */ | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 | |
| | | #define PJMEDIA_AUDIO_DEV_HAS_WMME 1 | |
| | | | |
| | | /* Enable passthrough codec framework */ | |
| | | #define PJMEDIA_HAS_PASSTHROUGH_CODECS 1 | |
| | | | |
| | | /* Only PCMA and PCMU are supported by WMME-direct */ | |
| | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 1 | |
| | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1 | |
| | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR 0 | |
| | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 0 | |
| | | #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC 0 | |
| | | | |
| #endif | | #endif | |
| | | | |
| /* | | /* | |
| * Minimum size | | * Minimum size | |
| */ | | */ | |
| #ifdef PJ_CONFIG_MINIMAL_SIZE | | #ifdef PJ_CONFIG_MINIMAL_SIZE | |
| | | | |
| # undef PJ_OS_HAS_CHECK_STACK | | # undef PJ_OS_HAS_CHECK_STACK | |
| # define PJ_OS_HAS_CHECK_STACK 0 | | # define PJ_OS_HAS_CHECK_STACK 0 | |
| # define PJ_LOG_MAX_LEVEL 0 | | # define PJ_LOG_MAX_LEVEL 0 | |
| | | | |
End of changes. 20 change blocks. |
| 82 lines changed or deleted | | 206 lines changed or added | |
|
| jbuf.h | | jbuf.h | |
|
| /* $Id: jbuf.h 2788 2009-06-24 14:46:36Z nanang $ */ | | /* $Id: jbuf.h 2394 2008-12-23 17:27:53Z 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 64 | | skipping to change at line 64 | |
| PJMEDIA_JB_ZERO_EMPTY_FRAME = 3 /**< Zero frame is being ret
urned | | PJMEDIA_JB_ZERO_EMPTY_FRAME = 3 /**< Zero frame is being ret
urned | |
| because JB is empty.
*/ | | because JB is empty.
*/ | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * @see pjmedia_jb_frame_type. | | * @see pjmedia_jb_frame_type. | |
| */ | | */ | |
| typedef enum pjmedia_jb_frame_type pjmedia_jb_frame_type; | | typedef enum pjmedia_jb_frame_type pjmedia_jb_frame_type; | |
| | | | |
| /** | | /** | |
|
| * This structure describes jitter buffer state. | | * This structure describes jitter buffer current status. | |
| */ | | */ | |
| struct pjmedia_jb_state | | struct pjmedia_jb_state | |
| { | | { | |
|
| /* Setting */ | | | |
| unsigned frame_size; /**< Individual frame size, in bytes.
*/ | | unsigned frame_size; /**< Individual frame size, in bytes.
*/ | |
|
| | | unsigned prefetch; /**< Current prefetch value, in frames
*/ | |
| unsigned min_prefetch; /**< Minimum allowed prefetch, in frms.
*/ | | unsigned min_prefetch; /**< Minimum allowed prefetch, in frms.
*/ | |
| unsigned max_prefetch; /**< Maximum allowed prefetch, in frms.
*/ | | unsigned max_prefetch; /**< Maximum allowed prefetch, in frms.
*/ | |
|
| | | | |
| /* Status */ | | | |
| unsigned prefetch; /**< Current prefetch value, in frames | | | |
| */ | | | |
| unsigned size; /**< Current buffer size, in frames.
*/ | | unsigned size; /**< Current buffer size, in frames.
*/ | |
|
| | | | |
| /* Statistic */ | | | |
| unsigned avg_delay; /**< Average delay, in ms.
*/ | | unsigned avg_delay; /**< Average delay, in ms.
*/ | |
| unsigned min_delay; /**< Minimum delay, in ms.
*/ | | unsigned min_delay; /**< Minimum delay, in ms.
*/ | |
| unsigned max_delay; /**< Maximum delay, in ms.
*/ | | unsigned max_delay; /**< Maximum delay, in ms.
*/ | |
|
| unsigned dev_delay; /**< Standard deviation of delay, in ms. | | unsigned dev_delay; /**< Standard deviation of delay, in ms. | |
| */ | | */ | |
| unsigned avg_burst; /**< Average burst, in frames. | | | |
| */ | | | |
| unsigned lost; /**< Number of lost frames. | | | |
| */ | | | |
| unsigned discard; /**< Number of discarded frames. | | | |
| */ | | | |
| unsigned empty; /**< Number of empty on GET events. | | | |
| */ | | | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * @see pjmedia_jb_state | | * @see pjmedia_jb_state | |
| */ | | */ | |
| typedef struct pjmedia_jb_state pjmedia_jb_state; | | typedef struct pjmedia_jb_state pjmedia_jb_state; | |
| | | | |
| /** | | /** | |
| * The constant PJMEDIA_JB_DEFAULT_INIT_DELAY specifies default jitter | | * The constant PJMEDIA_JB_DEFAULT_INIT_DELAY specifies default jitter | |
| * buffer prefetch count during jitter buffer creation. | | * buffer prefetch count during jitter buffer creation. | |
| | | | |
End of changes. 7 change blocks. |
| 19 lines changed or deleted | | 5 lines changed or added | |
|
| os.h | | os.h | |
|
| /* $Id: os.h 2805 2009-06-25 12:29:04Z bennylp $ */ | | /* $Id: os.h 2481 2009-03-02 15:48:45Z 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 1251 | | skipping to change at line 1251 | |
| * @param stop The end timestamp. | | * @param stop The end timestamp. | |
| * | | * | |
| * @return Elapsed time in milisecond. | | * @return Elapsed time in milisecond. | |
| * | | * | |
| * @see pj_elapsed_time(), pj_elapsed_cycle(), pj_elapsed_nanosec() | | * @see pj_elapsed_time(), pj_elapsed_cycle(), pj_elapsed_nanosec() | |
| */ | | */ | |
| PJ_DECL(pj_uint32_t) pj_elapsed_msec( const pj_timestamp *start, | | PJ_DECL(pj_uint32_t) pj_elapsed_msec( const pj_timestamp *start, | |
| const pj_timestamp *stop ); | | const pj_timestamp *stop ); | |
| | | | |
| /** | | /** | |
|
| * Variant of #pj_elapsed_msec() which returns 64bit value. | | | |
| */ | | | |
| PJ_DECL(pj_uint64_t) pj_elapsed_msec64(const pj_timestamp *start, | | | |
| const pj_timestamp *stop ); | | | |
| | | | |
| /** | | | |
| * Calculate the elapsed time in 32-bit microseconds. | | * Calculate the elapsed time in 32-bit microseconds. | |
| * This function calculates the elapsed time using highest precision | | * This function calculates the elapsed time using highest precision | |
| * calculation that is available for current platform, considering | | * calculation that is available for current platform, considering | |
| * whether floating point or 64-bit precision arithmetic is available. | | * whether floating point or 64-bit precision arithmetic is available. | |
| * For maximum portability, application should prefer to use this function | | * For maximum portability, application should prefer to use this function | |
| * rather than calculating the elapsed time by itself. | | * rather than calculating the elapsed time by itself. | |
| * | | * | |
| * @param start The starting timestamp. | | * @param start The starting timestamp. | |
| * @param stop The end timestamp. | | * @param stop The end timestamp. | |
| * | | * | |
| | | | |
End of changes. 2 change blocks. |
| 7 lines changed or deleted | | 1 lines changed or added | |
|
| pjsua.h | | pjsua.h | |
|
| /* $Id: pjsua.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: pjsua.h 2506 2009-03-12 18:11:37Z 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 4068 | | skipping to change at line 4068 | |
| unsigned ec_options; | | unsigned ec_options; | |
| | | | |
| /** | | /** | |
| * Echo canceller tail length, in miliseconds. | | * Echo canceller tail length, in miliseconds. | |
| * | | * | |
| * Default: PJSUA_DEFAULT_EC_TAIL_LEN | | * Default: PJSUA_DEFAULT_EC_TAIL_LEN | |
| */ | | */ | |
| unsigned ec_tail_len; | | unsigned ec_tail_len; | |
| | | | |
| /** | | /** | |
|
| | | * Audio capture buffer length, in milliseconds. | |
| | | * | |
| | | * Default: PJMEDIA_SND_DEFAULT_REC_LATENCY | |
| | | */ | |
| | | unsigned snd_rec_latency; | |
| | | | |
| | | /** | |
| | | * Audio playback buffer length, in milliseconds. | |
| | | * | |
| | | * Default: PJMEDIA_SND_DEFAULT_PLAY_LATENCY | |
| | | */ | |
| | | unsigned snd_play_latency; | |
| | | | |
| | | /** | |
| * Jitter buffer initial prefetch delay in msec. The value must be | | * Jitter buffer initial prefetch delay in msec. The value must be | |
| * between jb_min_pre and jb_max_pre below. | | * between jb_min_pre and jb_max_pre below. | |
| * | | * | |
| * Default: -1 (to use default stream settings, currently 150 msec) | | * Default: -1 (to use default stream settings, currently 150 msec) | |
| */ | | */ | |
| int jb_init; | | int jb_init; | |
| | | | |
| /** | | /** | |
| * Jitter buffer minimum prefetch delay in msec. | | * Jitter buffer minimum prefetch delay in msec. | |
| * | | * | |
| | | | |
| skipping to change at line 4139 | | skipping to change at line 4153 | |
| */ | | */ | |
| pj_turn_tp_type turn_conn_type; | | pj_turn_tp_type turn_conn_type; | |
| | | | |
| /** | | /** | |
| * Specify the credential to authenticate with the TURN server. | | * Specify the credential to authenticate with the TURN server. | |
| */ | | */ | |
| pj_stun_auth_cred turn_auth_cred; | | pj_stun_auth_cred turn_auth_cred; | |
| | | | |
| /** | | /** | |
| * Specify idle time of sound device before it is automatically closed, | | * Specify idle time of sound device before it is automatically closed, | |
|
| * in seconds. | | * in seconds. Use value -1 to disable the auto-close feature of sound | |
| | | * device | |
| * | | * | |
|
| * Default : -1 (Disable the auto-close feature of sound device) | | * Default : 1 | |
| */ | | */ | |
| int snd_auto_close_time; | | int snd_auto_close_time; | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * Use this function to initialize media config. | | * Use this function to initialize media config. | |
| * | | * | |
| * @param cfg The media config to be initialized. | | * @param cfg The media config to be initialized. | |
| * | | * | |
| * \par Python: | | * \par Python: | |
| | | | |
| skipping to change at line 4630 | | skipping to change at line 4645 | |
| status = py_pjsua.recorder_destroy(id) | | status = py_pjsua.recorder_destroy(id) | |
| * \endcode | | * \endcode | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsua_recorder_destroy(pjsua_recorder_id id); | | PJ_DECL(pj_status_t) pjsua_recorder_destroy(pjsua_recorder_id id); | |
| | | | |
| /**************************************************************************
*** | | /**************************************************************************
*** | |
| * Sound devices. | | * Sound devices. | |
| */ | | */ | |
| | | | |
| /** | | /** | |
|
| * Enum all sound devices installed in the system. | | * Enum all audio devices installed in the system. | |
| | | * | |
| | | * @param info Array of info to be initialized. | |
| | | * @param count On input, specifies max elements in the arra | |
| | | y. | |
| | | * On return, it contains actual number of elements | |
| | | * that have been initialized. | |
| | | * | |
| | | * @return PJ_SUCCESS on success, or the appropriate error code | |
| | | . | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsua_enum_aud_devs(pjmedia_aud_dev_info info[], | |
| | | unsigned *count); | |
| | | | |
| | | /** | |
| | | * Enum all sound devices installed in the system (old API). | |
| * | | * | |
| * @param info Array of info to be initialized. | | * @param info Array of info to be initialized. | |
| * @param count On input, specifies max elements in the arra
y. | | * @param count On input, specifies max elements in the arra
y. | |
| * On return, it contains actual number of elements | | * On return, it contains actual number of elements | |
| * that have been initialized. | | * that have been initialized. | |
| * | | * | |
| * @return PJ_SUCCESS on success, or the appropriate error code
. | | * @return PJ_SUCCESS on success, or the appropriate error code
. | |
| * | | * | |
| * | | * | |
| * \par Python: | | * \par Python: | |
| | | | |
| skipping to change at line 4716 | | skipping to change at line 4744 | |
| * @return The port interface of the conference bridge, | | * @return The port interface of the conference bridge, | |
| * so that application can connect this to it's own | | * so that application can connect this to it's own | |
| * sound device or master port. | | * sound device or master port. | |
| * | | * | |
| * \par Python: | | * \par Python: | |
| * Not applicable (for now). | | * Not applicable (for now). | |
| */ | | */ | |
| PJ_DECL(pjmedia_port*) pjsua_set_no_snd_dev(void); | | PJ_DECL(pjmedia_port*) pjsua_set_no_snd_dev(void); | |
| | | | |
| /** | | /** | |
|
| * Configure the echo canceller tail length of the sound port. | | * Change the echo cancellation settings. | |
| | | * | |
| | | * The behavior of this function depends on whether the sound device is | |
| | | * currently active, and if it is, whether device or software AEC is | |
| | | * being used. | |
| | | * | |
| | | * If the sound device is currently active, and if the device supports AEC, | |
| | | * this function will forward the change request to the device and it will | |
| | | * be up to the device on whether support the request. If software AEC is | |
| | | * being used (the software EC will be used if the device does not support | |
| | | * AEC), this function will change the software EC settings. In all cases, | |
| | | * the setting will be saved for future opening of the sound device. | |
| | | * | |
| | | * If the sound device is not currently active, this will only change the | |
| | | * default AEC settings and the setting will be applied next time the | |
| | | * sound device is opened. | |
| * | | * | |
| * @param tail_ms The tail length, in miliseconds. Set to zero to | | * @param tail_ms The tail length, in miliseconds. Set to zero to | |
| * disable AEC. | | * disable AEC. | |
| * @param options Options to be passed to pjmedia_echo_create(). | | * @param options Options to be passed to pjmedia_echo_create(). | |
| * Normally the value should be zero. | | * Normally the value should be zero. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| * | | * | |
| * \par Python: | | * \par Python: | |
| * \code | | * \code | |
| | | | |
| skipping to change at line 4747 | | skipping to change at line 4790 | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| * | | * | |
| * \par Python: | | * \par Python: | |
| * \code | | * \code | |
| tail_ms = py_pjsua.get_ec_tail() | | tail_ms = py_pjsua.get_ec_tail() | |
| * \endcode | | * \endcode | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsua_get_ec_tail(unsigned *p_tail_ms); | | PJ_DECL(pj_status_t) pjsua_get_ec_tail(unsigned *p_tail_ms); | |
| | | | |
|
| | | /** | |
| | | * Check whether the sound device is currently active. The sound device | |
| | | * may be inactive if the application has set the auto close feature to | |
| | | * non-zero (the snd_auto_close_time setting in #pjsua_media_config), or | |
| | | * if null sound device or no sound device has been configured via the | |
| | | * #pjsua_set_no_snd_dev() function. | |
| | | */ | |
| | | PJ_DECL(pj_bool_t) pjsua_snd_is_active(void); | |
| | | | |
| | | /** | |
| | | * Configure sound device setting to the sound device being used. If sound | |
| | | * device is currently active, the function will forward the setting to the | |
| | | * sound device instance to be applied immediately, if it supports it. | |
| | | * | |
| | | * The setting will be saved for future opening of the sound device, if the | |
| | | * "keep" argument is set to non-zero. If the sound device is currently | |
| | | * inactive, and the "keep" argument is false, this function will return | |
| | | * error. | |
| | | * | |
| | | * Note that in case the setting is kept for future use, it will be applied | |
| | | * to any devices, even when application has changed the sound device to be | |
| | | * used. | |
| | | * | |
| | | * Note also that the echo cancellation setting should be set with | |
| | | * #pjsua_set_ec() API instead. | |
| | | * | |
| | | * See also #pjmedia_aud_stream_set_cap() for more information about settin | |
| | | g | |
| | | * an audio device capability. | |
| | | * | |
| | | * @param cap The sound device setting to change. | |
| | | * @param pval Pointer to value. Please see #pjmedia_aud_dev_cap | |
| | | * documentation about the type of value to be | |
| | | * supplied for each setting. | |
| | | * @param keep Specify whether the setting is to be kept for future | |
| | | * use. | |
| | | * | |
| | | * @return PJ_SUCCESS on success or the appropriate error code. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsua_snd_set_setting(pjmedia_aud_dev_cap cap, | |
| | | const void *pval, | |
| | | pj_bool_t keep); | |
| | | | |
| | | /** | |
| | | * Retrieve a sound device setting. If sound device is currently active, | |
| | | * the function will forward the request to the sound device. If sound devi | |
| | | ce | |
| | | * is currently inactive, and if application had previously set the setting | |
| | | * and mark the setting as kept, then that setting will be returned. | |
| | | * Otherwise, this function will return error. | |
| | | * | |
| | | * Note that echo cancellation settings should be retrieved with | |
| | | * #pjsua_get_ec_tail() API instead. | |
| | | * | |
| | | * @param cap The sound device setting to retrieve. | |
| | | * @param pval Pointer to receive the value. | |
| | | * Please see #pjmedia_aud_dev_cap documentation about | |
| | | * the type of value to be supplied for each setting. | |
| | | * | |
| | | * @return PJ_SUCCESS on success or the appropriate error code. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjsua_snd_get_setting(pjmedia_aud_dev_cap cap, | |
| | | void *pval); | |
| | | | |
| /**************************************************************************
*** | | /**************************************************************************
*** | |
| * Codecs. | | * Codecs. | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * Enum all supported codecs in the system. | | * Enum all supported codecs in the system. | |
| * | | * | |
| * @param id Array of ID to be initialized. | | * @param id Array of ID to be initialized. | |
| * @param count On input, specifies max elements in the arra
y. | | * @param count On input, specifies max elements in the arra
y. | |
| * On return, it contains actual number of elements | | * On return, it contains actual number of elements | |
| | | | |
End of changes. 7 change blocks. |
| 5 lines changed or deleted | | 114 lines changed or added | |
|
| pjsua_internal.h | | pjsua_internal.h | |
|
| /* $Id: pjsua_internal.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: pjsua_internal.h 2506 2009-03-12 18:11:37Z 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 268 | | skipping to change at line 268 | |
| pjsua_buddy buddy[PJSUA_MAX_BUDDIES]; /**< Buddy array
. */ | | pjsua_buddy buddy[PJSUA_MAX_BUDDIES]; /**< Buddy array
. */ | |
| | | | |
| /* Presence: */ | | /* Presence: */ | |
| pj_timer_entry pres_timer;/**< Presence refresh timer. */ | | pj_timer_entry pres_timer;/**< Presence refresh timer. */ | |
| | | | |
| /* Media: */ | | /* Media: */ | |
| pjsua_media_config media_cfg; /**< Media config. */ | | pjsua_media_config media_cfg; /**< Media config. */ | |
| pjmedia_endpt *med_endpt; /**< Media endpoint. */ | | pjmedia_endpt *med_endpt; /**< Media endpoint. */ | |
| pjsua_conf_setting mconf_cfg; /**< Additionan conf. bridge. param */ | | pjsua_conf_setting mconf_cfg; /**< Additionan conf. bridge. param */ | |
| pjmedia_conf *mconf; /**< Conference bridge. */ | | pjmedia_conf *mconf; /**< Conference bridge. */ | |
|
| int cap_dev; /**< Capture device ID. | | pj_bool_t is_mswitch;/**< Are we using audio switchboard | |
| */ | | (a.k.a APS-Direct) */ | |
| int play_dev; /**< Playback device ID. | | | |
| */ | | /* Sound device */ | |
| | | pjmedia_aud_dev_index cap_dev; /**< Capture device ID. */ | |
| | | pjmedia_aud_dev_index play_dev; /**< Playback device ID. */ | |
| | | pj_uint32_t aud_svmask;/**< Which settings to save | |
| | | */ | |
| | | pjmedia_aud_param aud_param; /**< User settings to sound dev */ | |
| | | pj_bool_t aud_open_cnt;/**< How many # device is opened */ | |
| pj_bool_t no_snd; /**< No sound (app will manage it) */ | | pj_bool_t no_snd; /**< No sound (app will manage it) */ | |
| pj_pool_t *snd_pool; /**< Sound's private pool. */ | | pj_pool_t *snd_pool; /**< Sound's private pool. */ | |
| pjmedia_snd_port *snd_port; /**< Sound port. */ | | pjmedia_snd_port *snd_port; /**< Sound port. */ | |
| pj_timer_entry snd_idle_timer;/**< Sound device idle timer. */ | | pj_timer_entry snd_idle_timer;/**< Sound device idle timer. */ | |
| pjmedia_master_port *null_snd; /**< Master port for null sound.
*/ | | pjmedia_master_port *null_snd; /**< Master port for null sound.
*/ | |
| pjmedia_port *null_port; /**< Null port. */ | | pjmedia_port *null_port; /**< Null port. */ | |
| | | | |
| /* File players: */ | | /* File players: */ | |
| unsigned player_cnt;/**< Number of file players. */ | | unsigned player_cnt;/**< Number of file players. */ | |
| pjsua_file_data player[PJSUA_MAX_PLAYERS];/**< Array of players.*/ | | pjsua_file_data player[PJSUA_MAX_PLAYERS];/**< Array of players.*/ | |
| | | | |
End of changes. 2 change blocks. |
| 5 lines changed or deleted | | 11 lines changed or added | |
|
| port.h | | port.h | |
|
| /* $Id: port.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: port.h 2506 2009-03-12 18:11:37Z 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 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 __PJMEDIA_PORT_H__ | | #ifndef __PJMEDIA_PORT_H__ | |
| #define __PJMEDIA_PORT_H__ | | #define __PJMEDIA_PORT_H__ | |
| | | | |
| /** | | /** | |
| * @file port.h | | * @file port.h | |
| * @brief Port interface declaration | | * @brief Port interface declaration | |
| */ | | */ | |
| #include <pjmedia/types.h> | | #include <pjmedia/types.h> | |
|
| | | #include <pj/assert.h> | |
| #include <pj/os.h> | | #include <pj/os.h> | |
| | | | |
| /** | | /** | |
| @addtogroup PJMEDIA_PORT Media Ports Framework | | @addtogroup PJMEDIA_PORT Media Ports Framework | |
| @{ | | @{ | |
| | | | |
| @section media_port_intro Media Port Concepts | | @section media_port_intro Media Port Concepts | |
| | | | |
| @subsection The Media Port | | @subsection The Media Port | |
| A media port (represented with pjmedia_port "class") provides a generic | | A media port (represented with pjmedia_port "class") provides a generic | |
| | | | |
| skipping to change at line 207 | | skipping to change at line 208 | |
| * Port info. | | * Port info. | |
| */ | | */ | |
| typedef struct pjmedia_port_info | | typedef struct pjmedia_port_info | |
| { | | { | |
| pj_str_t name; /**< Port name.
*/ | | pj_str_t name; /**< Port name.
*/ | |
| pj_uint32_t signature; /**< Port signature.
*/ | | pj_uint32_t signature; /**< Port signature.
*/ | |
| pjmedia_type type; /**< Media type.
*/ | | pjmedia_type type; /**< Media type.
*/ | |
| pj_bool_t has_info; /**< Has info?
*/ | | pj_bool_t has_info; /**< Has info?
*/ | |
| pj_bool_t need_info; /**< Need info on connect?
*/ | | pj_bool_t need_info; /**< Need info on connect?
*/ | |
| unsigned pt; /**< Payload type (can be dynamic).
*/ | | unsigned pt; /**< Payload type (can be dynamic).
*/ | |
|
| | | pjmedia_format format; /**< Format.
*/ | |
| pj_str_t encoding_name; /**< Encoding name.
*/ | | pj_str_t encoding_name; /**< Encoding name.
*/ | |
| unsigned clock_rate; /**< Sampling rate.
*/ | | unsigned clock_rate; /**< Sampling rate.
*/ | |
| unsigned channel_count; /**< Number of channels.
*/ | | unsigned channel_count; /**< Number of channels.
*/ | |
| unsigned bits_per_sample; /**< Bits/sample
*/ | | unsigned bits_per_sample; /**< Bits/sample
*/ | |
| unsigned samples_per_frame; /**< No of samples per frame.
*/ | | unsigned samples_per_frame; /**< No of samples per frame.
*/ | |
| unsigned bytes_per_frame; /**< No of samples per frame.
*/ | | unsigned bytes_per_frame; /**< No of samples per frame.
*/ | |
| } pjmedia_port_info; | | } pjmedia_port_info; | |
| | | | |
| /** | | /** | |
|
| * Types of media frame. | | | |
| */ | | | |
| typedef enum pjmedia_frame_type | | | |
| { | | | |
| PJMEDIA_FRAME_TYPE_NONE, /**< No frame. */ | | | |
| PJMEDIA_FRAME_TYPE_AUDIO /**< Normal audio frame. */ | | | |
| | | | |
| } pjmedia_frame_type; | | | |
| | | | |
| /** | | | |
| * This structure describes a media frame. | | | |
| */ | | | |
| typedef struct pjmedia_frame | | | |
| { | | | |
| pjmedia_frame_type type; /**< Frame type. | | | |
| */ | | | |
| void *buf; /**< Pointer to buffer. | | | |
| */ | | | |
| pj_size_t size; /**< Frame size in bytes. | | | |
| */ | | | |
| pj_timestamp timestamp; /**< Frame timestamp. | | | |
| */ | | | |
| pj_uint32_t bit_info; /**< Bit info of the frame, samp | | | |
| le case: | | | |
| a frame may not exactly start and e | | | |
| nd | | | |
| at the octet boundary, so this fiel | | | |
| d | | | |
| may be used for specifying start & | | | |
| end bit offset. | | | |
| */ | | | |
| } pjmedia_frame; | | | |
| | | | |
| /** | | | |
| * Port interface. | | * Port interface. | |
| */ | | */ | |
| typedef struct pjmedia_port | | typedef struct pjmedia_port | |
| { | | { | |
| pjmedia_port_info info; /**< Port information. */ | | pjmedia_port_info info; /**< Port information. */ | |
| | | | |
| /** Port data can be used by the port creator to attach arbitrary | | /** Port data can be used by the port creator to attach arbitrary | |
| * value to be associated with the port. | | * value to be associated with the port. | |
| */ | | */ | |
| struct port_data { | | struct port_data { | |
| | | | |
End of changes. 4 change blocks. |
| 35 lines changed or deleted | | 3 lines changed or added | |
|
| sip_inv.h | | sip_inv.h | |
|
| /* $Id: sip_inv.h 2799 2009-06-25 10:58:13Z bennylp $ */ | | /* $Id: sip_inv.h 2394 2008-12-23 17:27:53Z 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 638 | | skipping to change at line 638 | |
| * | | * | |
| * @return PJ_SUCCESS if local answer can be accepted by | | * @return PJ_SUCCESS if local answer can be accepted by | |
| * SDP negotiator. | | * SDP negotiator. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_inv_set_sdp_answer(pjsip_inv_session *inv, | | PJ_DECL(pj_status_t) pjsip_inv_set_sdp_answer(pjsip_inv_session *inv, | |
| const pjmedia_sdp_session *sdp
); | | const pjmedia_sdp_session *sdp
); | |
| | | | |
| /** | | /** | |
| * Create a SIP message to initiate invite session termination. Depending o
n | | * Create a SIP message to initiate invite session termination. Depending o
n | |
| * the state of the session, this function may return CANCEL request, | | * the state of the session, this function may return CANCEL request, | |
|
| * a non-2xx final response, a BYE request, or even no request. | | * a non-2xx final response, or a BYE request. If the session has not answe | |
| * | | red | |
| * For UAS, if the session has not answered the incoming INVITE, this funct | | * the incoming INVITE, this function creates the non-2xx final response wi | |
| ion | | th | |
| * creates the non-2xx final response with the specified status code in | | * the specified status code in st_code and optional status text in st_text | |
| * \a st_code and optional status text in \a st_text. | | . | |
| * | | | |
| * For UAC, if the original INVITE has not been answered with a final | | | |
| * response, the behavior depends on whether provisional response has been | | | |
| * received. If provisional response has been received, this function will | | | |
| * create CANCEL request. If no provisional response has been received, the | | | |
| * function will not create CANCEL request (the function will return | | | |
| * PJ_SUCCESS but the \a p_tdata will contain NULL) because we cannot send | | | |
| * CANCEL before receiving provisional response. If then a provisional | | | |
| * response is received, the invite session will send CANCEL automatically. | | | |
| * | | | |
| * For both UAC and UAS, if the INVITE session has been answered with final | | | |
| * response, a BYE request will be created. | | | |
| * | | * | |
| * @param inv The invite session. | | * @param inv The invite session. | |
| * @param st_code Status code to be used for terminating the session. | | * @param st_code Status code to be used for terminating the session. | |
| * @param st_text Optional status text. | | * @param st_text Optional status text. | |
|
| * @param p_tdata Pointer to receive the message to be created. Note | | * @param p_tdata Pointer to receive the message to be created. | |
| * that it's possible to receive NULL here while the | | | |
| * function returns PJ_SUCCESS, see the description. | | | |
| * | | * | |
|
| * @return PJ_SUCCESS if termination is initiated. | | * @return PJ_SUCCESS if termination message can be created. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_inv_end_session( pjsip_inv_session *inv, | | PJ_DECL(pj_status_t) pjsip_inv_end_session( pjsip_inv_session *inv, | |
| int st_code, | | int st_code, | |
| const pj_str_t *st_text, | | const pj_str_t *st_text, | |
| pjsip_tx_data **p_tdata ); | | pjsip_tx_data **p_tdata ); | |
| | | | |
| /** | | /** | |
| * Create a re-INVITE request. | | * Create a re-INVITE request. | |
| * | | * | |
| * @param inv The invite session. | | * @param inv The invite session. | |
| | | | |
End of changes. 4 change blocks. |
| 23 lines changed or deleted | | 9 lines changed or added | |
|
| sip_transaction.h | | sip_transaction.h | |
|
| /* $Id: sip_transaction.h 2798 2009-06-25 10:48:08Z bennylp $ */ | | /* $Id: sip_transaction.h 2394 2008-12-23 17:27:53Z 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 | |
| int code ); | | int code ); | |
| | | | |
| /** | | /** | |
| * Cease retransmission on the UAC transaction. The UAC transaction is | | * Cease retransmission on the UAC transaction. The UAC transaction is | |
| * still considered running, and it will complete when either final | | * still considered running, and it will complete when either final | |
| * response is received or the transaction times out. | | * response is received or the transaction times out. | |
| * | | * | |
| * This operation normally is used for INVITE transaction only, when | | * This operation normally is used for INVITE transaction only, when | |
| * the transaction is cancelled before any provisional response has been | | * the transaction is cancelled before any provisional response has been | |
| * received. | | * received. | |
|
| * | | | |
| * @param tsx The transaction. | | | |
| * | | | |
| * @return PJ_SUCCESS or the appropriate error code. | | | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjsip_tsx_stop_retransmit(pjsip_transaction *tsx); | | PJ_DECL(pj_status_t) pjsip_tsx_stop_retransmit(pjsip_transaction *tsx); | |
| | | | |
| /** | | /** | |
|
| * Start a timer to terminate transaction after the specified time | | | |
| * has elapsed. This function is only valid for INVITE transaction, | | | |
| * and only before final response is received for the INVITE transaction. | | | |
| * It is normally called after the UAC has sent CANCEL for this | | | |
| * INVITE transaction. | | | |
| * | | | |
| * The purpose of this function is to terminate the transaction if UAS | | | |
| * does not send final response to this INVITE transaction even after | | | |
| * it sends 200/OK to CANCEL (for example when the UAS complies to RFC | | | |
| * 2543). | | | |
| * | | | |
| * Once this timer is set, the transaction will be terminated either when | | | |
| * a final response is received or the timer expires. | | | |
| * | | | |
| * @param tsx The transaction. | | | |
| * @param millisec Timeout value in milliseconds. | | | |
| * | | | |
| * @return PJ_SUCCESS or the appropriate error code. | | | |
| */ | | | |
| PJ_DECL(pj_status_t) pjsip_tsx_set_timeout(pjsip_transaction *tsx, | | | |
| unsigned millisec); | | | |
| | | | |
| /** | | | |
| * Get the transaction instance in the incoming message. If the message | | * Get the transaction instance in the incoming message. If the message | |
| * has a corresponding transaction, this function will return non NULL | | * has a corresponding transaction, this function will return non NULL | |
| * value. | | * value. | |
| * | | * | |
| * @param rdata The incoming message buffer. | | * @param rdata The incoming message buffer. | |
| * | | * | |
| * @return The transaction instance associated with this message, | | * @return The transaction instance associated with this message, | |
| * or NULL if the message doesn't match any transactions. | | * or NULL if the message doesn't match any transactions. | |
| */ | | */ | |
| PJ_DECL(pjsip_transaction*) pjsip_rdata_get_tsx( pjsip_rx_data *rdata ); | | PJ_DECL(pjsip_transaction*) pjsip_rdata_get_tsx( pjsip_rx_data *rdata ); | |
| | | | |
End of changes. 3 change blocks. |
| 28 lines changed or deleted | | 1 lines changed or added | |
|
| sound.h | | sound.h | |
|
| /* $Id: sound.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sound.h 2506 2009-03-12 18:11:37Z 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 25 | | skipping to change at line 25 | |
| * | | * | |
| * You should have received a copy of the GNU General Public License | | * You should have received a copy of the GNU General Public License | |
| * along with this program; if not, write to the Free Software | | * along with this program; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US
A | | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US
A | |
| */ | | */ | |
| #ifndef __PJMEDIA_SOUND_H__ | | #ifndef __PJMEDIA_SOUND_H__ | |
| #define __PJMEDIA_SOUND_H__ | | #define __PJMEDIA_SOUND_H__ | |
| | | | |
| /** | | /** | |
| * @file sound.h | | * @file sound.h | |
|
| * @brief Sound player and recorder device framework. | | * @brief Legacy sound device API | |
| */ | | */ | |
|
| | | #include <pjmedia-audiodev/audiodev.h> | |
| #include <pjmedia/types.h> | | #include <pjmedia/types.h> | |
|
| #include <pj/pool.h> | | | |
| | | | |
| PJ_BEGIN_DECL | | PJ_BEGIN_DECL | |
| | | | |
| /** | | /** | |
| * @defgroup PJMED_SND Portable Sound Hardware Abstraction | | * @defgroup PJMED_SND Portable Sound Hardware Abstraction | |
| * @ingroup PJMED_SND_PORT | | * @ingroup PJMED_SND_PORT | |
| * @brief PJMEDIA abstraction for sound device hardware | | * @brief PJMEDIA abstraction for sound device hardware | |
| * @{ | | * @{ | |
| * | | * | |
|
| | | * <strong>Warning: this sound device API has been deprecated | |
| | | * and replaced by PJMEDIA Audio Device API. Please see | |
| | | * http://trac.pjsip.org/repos/wiki/Audio_Dev_API for more | |
| | | * information.</strong> | |
| | | * | |
| * This section describes lower level abstraction for sound device | | * This section describes lower level abstraction for sound device | |
| * hardware. Application normally uses the higher layer @ref | | * hardware. Application normally uses the higher layer @ref | |
| * PJMED_SND_PORT abstraction since it works seamlessly with | | * PJMED_SND_PORT abstraction since it works seamlessly with | |
| * @ref PJMEDIA_PORT. | | * @ref PJMEDIA_PORT. | |
| * | | * | |
| * The sound hardware abstraction basically runs <b>asychronously</b>, | | * The sound hardware abstraction basically runs <b>asychronously</b>, | |
| * and application must register callbacks to be called to receive/ | | * and application must register callbacks to be called to receive/ | |
| * supply audio frames from/to the sound hardware. | | * supply audio frames from/to the sound hardware. | |
| * | | * | |
| * A full duplex sound stream (created with #pjmedia_snd_open()) | | * A full duplex sound stream (created with #pjmedia_snd_open()) | |
| | | | |
| skipping to change at line 63 | | skipping to change at line 68 | |
| * | | * | |
| * Half duplex sound stream (created with #pjmedia_snd_open_rec() or | | * Half duplex sound stream (created with #pjmedia_snd_open_rec() or | |
| * #pjmedia_snd_open_player()) will only need one of the callback to | | * #pjmedia_snd_open_player()) will only need one of the callback to | |
| * be specified. | | * be specified. | |
| * | | * | |
| * After sound stream is created, application need to call | | * After sound stream is created, application need to call | |
| * #pjmedia_snd_stream_start() to start capturing/playing back media | | * #pjmedia_snd_stream_start() to start capturing/playing back media | |
| * frames from/to the sound device. | | * frames from/to the sound device. | |
| */ | | */ | |
| | | | |
|
| /** Opaque data type for audio stream. */ | | /** Opaque declaration for pjmedia_snd_stream. */ | |
| typedef struct pjmedia_snd_stream pjmedia_snd_stream; | | typedef struct pjmedia_snd_stream pjmedia_snd_stream; | |
| | | | |
| /** | | /** | |
| * Device information structure returned by #pjmedia_snd_get_dev_info. | | * Device information structure returned by #pjmedia_snd_get_dev_info. | |
| */ | | */ | |
| typedef struct pjmedia_snd_dev_info | | typedef struct pjmedia_snd_dev_info | |
| { | | { | |
| char name[64]; /**< Device name.
*/ | | char name[64]; /**< Device name.
*/ | |
| unsigned input_count; /**< Max number of input channels.
*/ | | unsigned input_count; /**< Max number of input channels.
*/ | |
| unsigned output_count; /**< Max number of output channels.
*/ | | unsigned output_count; /**< Max number of output channels.
*/ | |
| | | | |
End of changes. 6 change blocks. |
| 4 lines changed or deleted | | 9 lines changed or added | |
|
| sound_port.h | | sound_port.h | |
|
| /* $Id: sound_port.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: sound_port.h 2506 2009-03-12 18:11:37Z 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_SOUND_PORT_H__ | | #ifndef __PJMEDIA_SOUND_PORT_H__ | |
| #define __PJMEDIA_SOUND_PORT_H__ | | #define __PJMEDIA_SOUND_PORT_H__ | |
| | | | |
| /** | | /** | |
| * @file sound_port.h | | * @file sound_port.h | |
| * @brief Media port connection abstraction to sound device. | | * @brief Media port connection abstraction to sound device. | |
| */ | | */ | |
|
| #include <pjmedia/sound.h> | | #include <pjmedia-audiodev/audiodev.h> | |
| #include <pjmedia/port.h> | | #include <pjmedia/port.h> | |
| | | | |
| PJ_BEGIN_DECL | | PJ_BEGIN_DECL | |
| | | | |
| /** | | /** | |
| * @defgroup PJMED_SND_PORT Sound Device Port | | * @defgroup PJMED_SND_PORT Sound Device Port | |
| * @ingroup PJMEDIA_PORT_CLOCK | | * @ingroup PJMEDIA_PORT_CLOCK | |
| * @brief Media Port Connection Abstraction to the Sound Device | | * @brief Media Port Connection Abstraction to the Sound Device | |
| @{ | | @{ | |
| | | | |
| | | | |
| skipping to change at line 163 | | skipping to change at line 163 | |
| PJ_DECL(pj_status_t) pjmedia_snd_port_create_player(pj_pool_t *pool, | | PJ_DECL(pj_status_t) pjmedia_snd_port_create_player(pj_pool_t *pool, | |
| int index, | | int index, | |
| unsigned clock_rate, | | unsigned clock_rate, | |
| unsigned channel_count, | | unsigned channel_count, | |
| unsigned samples_per_fra
me, | | unsigned samples_per_fra
me, | |
| unsigned bits_per_sample
, | | unsigned bits_per_sample
, | |
| unsigned options, | | unsigned options, | |
| pjmedia_snd_port **p_por
t); | | pjmedia_snd_port **p_por
t); | |
| | | | |
| /** | | /** | |
|
| | | * Create sound device port according to the specified parameters. | |
| | | * | |
| | | * @param pool Pool to allocate sound port structure. | |
| | | * @param prm Sound device settings. | |
| | | * @param p_port Pointer to receive the sound device port instanc | |
| | | e. | |
| | | * | |
| | | * @return PJ_SUCCESS on success, or the appropriate error | |
| | | * code. | |
| | | */ | |
| | | PJ_DECL(pj_status_t) pjmedia_snd_port_create2(pj_pool_t *pool, | |
| | | const pjmedia_aud_param *prm, | |
| | | pjmedia_snd_port **p_port); | |
| | | | |
| | | /** | |
| * Destroy sound device port. | | * Destroy sound device port. | |
| * | | * | |
| * @param snd_port The sound device port. | | * @param snd_port The sound device port. | |
| * | | * | |
| * @return PJ_SUCCESS on success, or the appropriate error | | * @return PJ_SUCCESS on success, or the appropriate error | |
| * code. | | * code. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_snd_port_destroy(pjmedia_snd_port *snd_port); | | PJ_DECL(pj_status_t) pjmedia_snd_port_destroy(pjmedia_snd_port *snd_port); | |
| | | | |
| /** | | /** | |
| * Retrieve the sound stream associated by this sound device port. | | * Retrieve the sound stream associated by this sound device port. | |
| * | | * | |
| * @param snd_port The sound device port. | | * @param snd_port The sound device port. | |
| * | | * | |
| * @return The sound stream instance. | | * @return The sound stream instance. | |
| */ | | */ | |
|
| PJ_DECL(pjmedia_snd_stream*) pjmedia_snd_port_get_snd_stream( | | PJ_DECL(pjmedia_aud_stream*) pjmedia_snd_port_get_snd_stream( | |
| pjmedia_snd_port *snd_port); | | pjmedia_snd_port *snd_port); | |
| | | | |
| /** | | /** | |
|
| * Configure the echo cancellation tail length. By default, echo canceller | | * Change the echo cancellation settings. The echo cancellation settings | |
| * is enabled in the sound device with the default tail length. After the | | * should have been specified when this sound port was created, by setting | |
| * sound port is created, application can query the current echo canceller | | * the appropriate fields in the pjmedia_aud_param, because not all sound | |
| * tail length by calling #pjmedia_snd_port_get_ec_tail. | | * device implementation supports changing the EC setting once the device | |
| * | | * has been opened. | |
| * Note that you should only change the EC settings when the sound port | | * | |
| * is not connected to any downstream ports, otherwise race condition may | | * The behavior of this function depends on whether device or software AEC | |
| * occur. | | * is being used. If the device supports AEC, this function will forward | |
| | | * the change request to the device and it will be up to the device whether | |
| | | * to support the request. If software AEC is being used (the software EC | |
| | | * will be used if the device does not support AEC), this function will | |
| | | * change the software EC settings. | |
| * | | * | |
| * @param snd_port The sound device port. | | * @param snd_port The sound device port. | |
| * @param pool Pool to re-create the echo canceller if necessar
y. | | * @param pool Pool to re-create the echo canceller if necessar
y. | |
| * @param tail_ms Maximum echo tail length to be supported, in | | * @param tail_ms Maximum echo tail length to be supported, in | |
| * miliseconds. If zero is specified, the EC would | | * miliseconds. If zero is specified, the EC would | |
| * be disabled. | | * be disabled. | |
| * @param options The options to be passed to #pjmedia_echo_create
(). | | * @param options The options to be passed to #pjmedia_echo_create
(). | |
|
| | | * This is only used if software EC is being used. | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
| PJ_DECL(pj_status_t) pjmedia_snd_port_set_ec( pjmedia_snd_port *snd_port, | | PJ_DECL(pj_status_t) pjmedia_snd_port_set_ec( pjmedia_snd_port *snd_port, | |
| pj_pool_t *pool, | | pj_pool_t *pool, | |
| unsigned tail_ms, | | unsigned tail_ms, | |
| unsigned options); | | unsigned options); | |
| | | | |
| /** | | /** | |
| * Get current echo canceller tail length, in miliseconds. The tail length | | * Get current echo canceller tail length, in miliseconds. The tail length | |
| | | | |
End of changes. 6 change blocks. |
| 11 lines changed or deleted | | 31 lines changed or added | |
|
| symbian_sound_aps.h | | symbian_sound_aps.h | |
|
| /* $Id: symbian_sound_aps.h 2394 2008-12-23 17:27:53Z bennylp $ */ | | /* $Id: symbian_sound_aps.h 2506 2009-03-12 18:11:37Z 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 33 | | skipping to change at line 33 | |
| /** | | /** | |
| * @file symbian_sound_aps.h | | * @file symbian_sound_aps.h | |
| * @brief Sound device wrapper using Audio Proxy Server on | | * @brief Sound device wrapper using Audio Proxy Server on | |
| * Symbian S60 3rd edition. | | * Symbian S60 3rd edition. | |
| */ | | */ | |
| #include <pjmedia/types.h> | | #include <pjmedia/types.h> | |
| | | | |
| PJ_BEGIN_DECL | | PJ_BEGIN_DECL | |
| | | | |
| /** | | /** | |
|
| * Activate/deactivate loudspeaker, when loudspeaker is inactive, audio | | * Set audio routing for APS sound device. | |
| * will be routed to earpiece. | | | |
| * | | * | |
| * @param stream The sound device stream, the stream should be starte
d | | * @param stream The sound device stream, the stream should be starte
d | |
|
| * before calling this function. This param can be NULL | | * before calling this function. | |
| * to set the behaviour of next opened stream. | | * @param route Audio routing to be set. | |
| * @param active Specify PJ_TRUE to activate loudspeaker, and PJ_FALS | | | |
| E | | | |
| * otherwise. | | | |
| * | | * | |
| * @return PJ_SUCCESS on success. | | * @return PJ_SUCCESS on success. | |
| */ | | */ | |
|
| PJ_DECL(pj_status_t) pjmedia_snd_aps_activate_loudspeaker( | | PJ_DECL(pj_status_t) pjmedia_snd_aps_set_route( pjmedia_snd_stream *stream, | |
| pjmedia_snd_stream *stream, | | pjmedia_snd_route route); | |
| pj_bool_t active); | | | |
| | | | |
| PJ_END_DECL | | PJ_END_DECL | |
| | | | |
| #endif /* __PJMEDIA_SYMBIAN_SOUND_APS_H__ */ | | #endif /* __PJMEDIA_SYMBIAN_SOUND_APS_H__ */ | |
| | | | |
End of changes. 4 change blocks. |
| 11 lines changed or deleted | | 6 lines changed or added | |
|