Full Code of AGProjects/python-sipsimple for AI

master a644f25948de cached
1819 files
18.8 MB
5.0M tokens
12426 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (20,111K chars total). Download the full file to get everything.
Repository: AGProjects/python-sipsimple
Branch: master
Commit: a644f25948de
Files: 1819
Total size: 18.8 MB

Directory structure:
gitextract_iouho92m/

├── .boring
├── AUTHORS
├── LICENSE
├── MANIFEST.in
├── README
├── TODO
├── build_inplace
├── debian/
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── docs
│   ├── python-sipsimple.lintian-overrides
│   ├── rules
│   └── source/
│       └── format
├── deps/
│   └── pjsip/
│       ├── COPYING
│       ├── Makefile
│       ├── README.txt
│       ├── aconfigure
│       ├── aconfigure.ac
│       ├── base_rev
│       ├── build/
│       │   ├── cc-auto.mak.in
│       │   ├── cc-gcc.mak
│       │   ├── common.mak
│       │   ├── host-mingw.mak
│       │   ├── host-unix.mak
│       │   ├── host-win32.mak
│       │   ├── m-arm.mak
│       │   ├── m-auto.mak
│       │   ├── m-i386.mak
│       │   ├── m-x86_64.mak
│       │   ├── os-auto.mak.in
│       │   └── rules.mak
│       ├── build.mak.in
│       ├── config.guess
│       ├── config.sub
│       ├── configure
│       ├── install-sh
│       ├── pjlib/
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   └── os-auto.mak.in
│       │   ├── docs/
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.css
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pj/
│       │   │   │   ├── activesock.h
│       │   │   │   ├── addr_resolv.h
│       │   │   │   ├── array.h
│       │   │   │   ├── assert.h
│       │   │   │   ├── compat/
│       │   │   │   │   ├── assert.h
│       │   │   │   │   ├── cc_armcc.h
│       │   │   │   │   ├── cc_codew.h
│       │   │   │   │   ├── cc_gcc.h
│       │   │   │   │   ├── cc_gcce.h
│       │   │   │   │   ├── cc_msvc.h
│       │   │   │   │   ├── cc_mwcc.h
│       │   │   │   │   ├── ctype.h
│       │   │   │   │   ├── errno.h
│       │   │   │   │   ├── high_precision.h
│       │   │   │   │   ├── m_alpha.h
│       │   │   │   │   ├── m_armv4.h
│       │   │   │   │   ├── m_auto.h.in
│       │   │   │   │   ├── m_i386.h
│       │   │   │   │   ├── m_m68k.h
│       │   │   │   │   ├── m_powerpc.h
│       │   │   │   │   ├── m_sparc.h
│       │   │   │   │   ├── m_x86_64.h
│       │   │   │   │   ├── malloc.h
│       │   │   │   │   ├── os_auto.h.in
│       │   │   │   │   ├── os_darwinos.h
│       │   │   │   │   ├── os_linux.h
│       │   │   │   │   ├── os_linux_kernel.h
│       │   │   │   │   ├── os_palmos.h
│       │   │   │   │   ├── os_rtems.h
│       │   │   │   │   ├── os_sunos.h
│       │   │   │   │   ├── os_symbian.h
│       │   │   │   │   ├── os_win32.h
│       │   │   │   │   ├── os_win32_wince.h
│       │   │   │   │   ├── rand.h
│       │   │   │   │   ├── setjmp.h
│       │   │   │   │   ├── size_t.h
│       │   │   │   │   ├── socket.h
│       │   │   │   │   ├── stdarg.h
│       │   │   │   │   ├── stdfileio.h
│       │   │   │   │   ├── string.h
│       │   │   │   │   └── time.h
│       │   │   │   ├── config.h
│       │   │   │   ├── config_site_sample.h
│       │   │   │   ├── ctype.h
│       │   │   │   ├── doxygen.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── except.h
│       │   │   │   ├── fifobuf.h
│       │   │   │   ├── file_access.h
│       │   │   │   ├── file_io.h
│       │   │   │   ├── guid.h
│       │   │   │   ├── hash.h
│       │   │   │   ├── ioqueue.h
│       │   │   │   ├── ip_helper.h
│       │   │   │   ├── list.h
│       │   │   │   ├── list_i.h
│       │   │   │   ├── lock.h
│       │   │   │   ├── log.h
│       │   │   │   ├── math.h
│       │   │   │   ├── os.h
│       │   │   │   ├── pool.h
│       │   │   │   ├── pool_alt.h
│       │   │   │   ├── pool_buf.h
│       │   │   │   ├── pool_i.h
│       │   │   │   ├── rand.h
│       │   │   │   ├── rbtree.h
│       │   │   │   ├── sock.h
│       │   │   │   ├── sock_qos.h
│       │   │   │   ├── sock_select.h
│       │   │   │   ├── ssl_sock.h
│       │   │   │   ├── string.h
│       │   │   │   ├── string_i.h
│       │   │   │   ├── timer.h
│       │   │   │   ├── types.h
│       │   │   │   └── unicode.h
│       │   │   ├── pj++/
│       │   │   │   ├── file.hpp
│       │   │   │   ├── hash.hpp
│       │   │   │   ├── list.hpp
│       │   │   │   ├── lock.hpp
│       │   │   │   ├── os.hpp
│       │   │   │   ├── pool.hpp
│       │   │   │   ├── proactor.hpp
│       │   │   │   ├── scanner.hpp
│       │   │   │   ├── sock.hpp
│       │   │   │   ├── string.hpp
│       │   │   │   ├── timer.hpp
│       │   │   │   ├── tree.hpp
│       │   │   │   └── types.hpp
│       │   │   ├── pjlib++.hpp
│       │   │   └── pjlib.h
│       │   └── src/
│       │       └── pj/
│       │           ├── activesock.c
│       │           ├── addr_resolv_linux_kernel.c
│       │           ├── addr_resolv_sock.c
│       │           ├── addr_resolv_symbian.cpp
│       │           ├── array.c
│       │           ├── compat/
│       │           │   ├── longjmp_i386.S
│       │           │   ├── setjmp_i386.S
│       │           │   ├── sigjmp.c
│       │           │   ├── string.c
│       │           │   └── string_compat.c
│       │           ├── config.c
│       │           ├── ctype.c
│       │           ├── errno.c
│       │           ├── except.c
│       │           ├── exception_symbian.cpp
│       │           ├── extra-exports.c
│       │           ├── fifobuf.c
│       │           ├── file_access_unistd.c
│       │           ├── file_access_win32.c
│       │           ├── file_io_ansi.c
│       │           ├── file_io_win32.c
│       │           ├── guid.c
│       │           ├── guid_simple.c
│       │           ├── guid_uuid.c
│       │           ├── guid_win32.c
│       │           ├── hash.c
│       │           ├── ioqueue_common_abs.c
│       │           ├── ioqueue_common_abs.h
│       │           ├── ioqueue_dummy.c
│       │           ├── ioqueue_epoll.c
│       │           ├── ioqueue_linux_kernel.c
│       │           ├── ioqueue_select.c
│       │           ├── ioqueue_symbian.cpp
│       │           ├── ioqueue_winnt.c
│       │           ├── ip_helper_generic.c
│       │           ├── ip_helper_symbian.cpp
│       │           ├── ip_helper_win32.c
│       │           ├── list.c
│       │           ├── lock.c
│       │           ├── log.c
│       │           ├── log_writer_printk.c
│       │           ├── log_writer_stdout.c
│       │           ├── log_writer_symbian_console.cpp
│       │           ├── os_core_darwin.m
│       │           ├── os_core_linux_kernel.c
│       │           ├── os_core_symbian.cpp
│       │           ├── os_core_unix.c
│       │           ├── os_core_win32.c
│       │           ├── os_error_linux_kernel.c
│       │           ├── os_error_symbian.cpp
│       │           ├── os_error_unix.c
│       │           ├── os_error_win32.c
│       │           ├── os_info.c
│       │           ├── os_info_iphone.m
│       │           ├── os_info_symbian.cpp
│       │           ├── os_rwmutex.c
│       │           ├── os_symbian.h
│       │           ├── os_time_bsd.c
│       │           ├── os_time_common.c
│       │           ├── os_time_linux_kernel.c
│       │           ├── os_time_unix.c
│       │           ├── os_time_win32.c
│       │           ├── os_timestamp_common.c
│       │           ├── os_timestamp_linux_kernel.c
│       │           ├── os_timestamp_posix.c
│       │           ├── os_timestamp_win32.c
│       │           ├── pool.c
│       │           ├── pool_buf.c
│       │           ├── pool_caching.c
│       │           ├── pool_dbg.c
│       │           ├── pool_policy_kmalloc.c
│       │           ├── pool_policy_malloc.c
│       │           ├── pool_policy_new.cpp
│       │           ├── pool_signature.h
│       │           ├── rand.c
│       │           ├── rbtree.c
│       │           ├── sock_bsd.c
│       │           ├── sock_common.c
│       │           ├── sock_linux_kernel.c
│       │           ├── sock_qos_bsd.c
│       │           ├── sock_qos_common.c
│       │           ├── sock_qos_dummy.c
│       │           ├── sock_qos_symbian.cpp
│       │           ├── sock_qos_wm.c
│       │           ├── sock_select.c
│       │           ├── sock_select_symbian.cpp
│       │           ├── sock_symbian.cpp
│       │           ├── ssl_sock_common.c
│       │           ├── ssl_sock_dump.c
│       │           ├── ssl_sock_ossl.c
│       │           ├── ssl_sock_symbian.cpp
│       │           ├── string.c
│       │           ├── symbols.c
│       │           ├── timer.c
│       │           ├── timer_symbian.cpp
│       │           ├── types.c
│       │           ├── unicode_symbian.cpp
│       │           └── unicode_win32.c
│       ├── pjlib-util/
│       │   ├── build/
│       │   │   └── Makefile
│       │   ├── docs/
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.css
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pjlib-util/
│       │   │   │   ├── base64.h
│       │   │   │   ├── config.h
│       │   │   │   ├── crc32.h
│       │   │   │   ├── dns.h
│       │   │   │   ├── dns_server.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── getopt.h
│       │   │   │   ├── hmac_md5.h
│       │   │   │   ├── hmac_sha1.h
│       │   │   │   ├── http_client.h
│       │   │   │   ├── json.h
│       │   │   │   ├── md5.h
│       │   │   │   ├── pcap.h
│       │   │   │   ├── resolver.h
│       │   │   │   ├── scanner.h
│       │   │   │   ├── scanner_cis_bitwise.h
│       │   │   │   ├── scanner_cis_uint.h
│       │   │   │   ├── sha1.h
│       │   │   │   ├── srv_resolver.h
│       │   │   │   ├── string.h
│       │   │   │   ├── stun_simple.h
│       │   │   │   ├── types.h
│       │   │   │   └── xml.h
│       │   │   └── pjlib-util.h
│       │   └── src/
│       │       └── pjlib-util/
│       │           ├── base64.c
│       │           ├── crc32.c
│       │           ├── dns.c
│       │           ├── dns_dump.c
│       │           ├── dns_server.c
│       │           ├── errno.c
│       │           ├── getopt.c
│       │           ├── hmac_md5.c
│       │           ├── hmac_sha1.c
│       │           ├── http_client.c
│       │           ├── json.c
│       │           ├── md5.c
│       │           ├── pcap.c
│       │           ├── resolver.c
│       │           ├── resolver_wrap.cpp
│       │           ├── scanner.c
│       │           ├── scanner_cis_bitwise.c
│       │           ├── scanner_cis_uint.c
│       │           ├── sha1.c
│       │           ├── srv_resolver.c
│       │           ├── string.c
│       │           ├── stun_simple.c
│       │           ├── stun_simple_client.c
│       │           ├── symbols.c
│       │           ├── xml.c
│       │           └── xml_wrap.cpp
│       ├── pjmedia/
│       │   ├── README.txt
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   └── os-auto.mak.in
│       │   ├── docs/
│       │   │   ├── doxygen.cfg
│       │   │   ├── footer.html
│       │   │   ├── header.html
│       │   │   └── media-flow.vsd
│       │   ├── include/
│       │   │   ├── pjmedia/
│       │   │   │   ├── alaw_ulaw.h
│       │   │   │   ├── avi.h
│       │   │   │   ├── avi_stream.h
│       │   │   │   ├── bidirectional.h
│       │   │   │   ├── circbuf.h
│       │   │   │   ├── clock.h
│       │   │   │   ├── codec.h
│       │   │   │   ├── conference.h
│       │   │   │   ├── config.h
│       │   │   │   ├── config_auto.h.in
│       │   │   │   ├── converter.h
│       │   │   │   ├── delaybuf.h
│       │   │   │   ├── doxygen.h
│       │   │   │   ├── echo.h
│       │   │   │   ├── echo_port.h
│       │   │   │   ├── endpoint.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── event.h
│       │   │   │   ├── format.h
│       │   │   │   ├── frame.h
│       │   │   │   ├── g711.h
│       │   │   │   ├── jbuf.h
│       │   │   │   ├── master_port.h
│       │   │   │   ├── mem_port.h
│       │   │   │   ├── mixer_port.h
│       │   │   │   ├── null_port.h
│       │   │   │   ├── plc.h
│       │   │   │   ├── port.h
│       │   │   │   ├── resample.h
│       │   │   │   ├── rtcp.h
│       │   │   │   ├── rtcp_xr.h
│       │   │   │   ├── rtp.h
│       │   │   │   ├── sdp.h
│       │   │   │   ├── sdp_neg.h
│       │   │   │   ├── session.h
│       │   │   │   ├── signatures.h
│       │   │   │   ├── silencedet.h
│       │   │   │   ├── sound.h
│       │   │   │   ├── sound_port.h
│       │   │   │   ├── splitcomb.h
│       │   │   │   ├── stereo.h
│       │   │   │   ├── stream.h
│       │   │   │   ├── stream_common.h
│       │   │   │   ├── symbian_sound_aps.h
│       │   │   │   ├── tonegen.h
│       │   │   │   ├── transport.h
│       │   │   │   ├── transport_adapter_sample.h
│       │   │   │   ├── transport_ice.h
│       │   │   │   ├── transport_loop.h
│       │   │   │   ├── transport_srtp.h
│       │   │   │   ├── transport_udp.h
│       │   │   │   ├── transport_zrtp.h
│       │   │   │   ├── types.h
│       │   │   │   ├── vid_codec.h
│       │   │   │   ├── vid_codec_util.h
│       │   │   │   ├── vid_port.h
│       │   │   │   ├── vid_stream.h
│       │   │   │   ├── vid_tee.h
│       │   │   │   ├── wav_playlist.h
│       │   │   │   ├── wav_port.h
│       │   │   │   ├── wave.h
│       │   │   │   └── wsola.h
│       │   │   ├── pjmedia-audiodev/
│       │   │   │   ├── audiodev.h
│       │   │   │   ├── audiodev_imp.h
│       │   │   │   ├── config.h
│       │   │   │   └── errno.h
│       │   │   ├── pjmedia-codec/
│       │   │   │   ├── audio_codecs.h
│       │   │   │   ├── config.h
│       │   │   │   ├── config_auto.h.in
│       │   │   │   ├── ffmpeg_vid_codecs.h
│       │   │   │   ├── g722.h
│       │   │   │   ├── g7221.h
│       │   │   │   ├── g7221_sdp_match.h
│       │   │   │   ├── gsm.h
│       │   │   │   ├── h263_packetizer.h
│       │   │   │   ├── h264_packetizer.h
│       │   │   │   ├── ilbc.h
│       │   │   │   ├── openh264.h
│       │   │   │   ├── opus.h
│       │   │   │   ├── passthrough.h
│       │   │   │   ├── speex.h
│       │   │   │   ├── types.h
│       │   │   │   └── vpx.h
│       │   │   ├── pjmedia-codec.h
│       │   │   ├── pjmedia-videodev/
│       │   │   │   ├── avi_dev.h
│       │   │   │   ├── config.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── fb_dev.h
│       │   │   │   ├── videodev.h
│       │   │   │   └── videodev_imp.h
│       │   │   ├── pjmedia.h
│       │   │   ├── pjmedia_audiodev.h
│       │   │   └── pjmedia_videodev.h
│       │   └── src/
│       │       ├── pjmedia/
│       │       │   ├── alaw_ulaw.c
│       │       │   ├── alaw_ulaw_table.c
│       │       │   ├── avi_player.c
│       │       │   ├── bidirectional.c
│       │       │   ├── clock_thread.c
│       │       │   ├── codec.c
│       │       │   ├── conf_switch.c
│       │       │   ├── conference.c
│       │       │   ├── converter.c
│       │       │   ├── converter_libswscale.c
│       │       │   ├── converter_libyuv.c
│       │       │   ├── delaybuf.c
│       │       │   ├── dummy.c
│       │       │   ├── echo_common.c
│       │       │   ├── echo_internal.h
│       │       │   ├── echo_port.c
│       │       │   ├── echo_speex.c
│       │       │   ├── echo_suppress.c
│       │       │   ├── echo_webrtc_aec.c
│       │       │   ├── endpoint.c
│       │       │   ├── errno.c
│       │       │   ├── event.c
│       │       │   ├── ffmpeg_util.c
│       │       │   ├── ffmpeg_util.h
│       │       │   ├── format.c
│       │       │   ├── g711.c
│       │       │   ├── jbuf.c
│       │       │   ├── master_port.c
│       │       │   ├── mem_capture.c
│       │       │   ├── mem_player.c
│       │       │   ├── mixer_port.c
│       │       │   ├── null_port.c
│       │       │   ├── plc_common.c
│       │       │   ├── port.c
│       │       │   ├── resample_libsamplerate.c
│       │       │   ├── resample_port.c
│       │       │   ├── resample_resample.c
│       │       │   ├── resample_speex.c
│       │       │   ├── rtcp.c
│       │       │   ├── rtcp_xr.c
│       │       │   ├── rtp.c
│       │       │   ├── sdp.c
│       │       │   ├── sdp_cmp.c
│       │       │   ├── sdp_neg.c
│       │       │   ├── sdp_wrap.cpp
│       │       │   ├── session.c
│       │       │   ├── silencedet.c
│       │       │   ├── sound_legacy.c
│       │       │   ├── sound_port.c
│       │       │   ├── splitcomb.c
│       │       │   ├── stereo_port.c
│       │       │   ├── stream.c
│       │       │   ├── stream_common.c
│       │       │   ├── stream_info.c
│       │       │   ├── tonegen.c
│       │       │   ├── transport_adapter_sample.c
│       │       │   ├── transport_ice.c
│       │       │   ├── transport_loop.c
│       │       │   ├── transport_srtp.c
│       │       │   ├── transport_udp.c
│       │       │   ├── transport_zrtp.c
│       │       │   ├── types.c
│       │       │   ├── vid_codec.c
│       │       │   ├── vid_codec_util.c
│       │       │   ├── vid_port.c
│       │       │   ├── vid_stream.c
│       │       │   ├── vid_stream_info.c
│       │       │   ├── vid_tee.c
│       │       │   ├── wav_player.c
│       │       │   ├── wav_playlist.c
│       │       │   ├── wav_writer.c
│       │       │   ├── wave.c
│       │       │   └── wsola.c
│       │       ├── pjmedia-audiodev/
│       │       │   ├── alsa_dev.c
│       │       │   ├── audiodev.c
│       │       │   ├── coreaudio_dev.m
│       │       │   ├── errno.c
│       │       │   ├── null_dev.c
│       │       │   └── wmme_dev.c
│       │       ├── pjmedia-codec/
│       │       │   ├── audio_codecs.c
│       │       │   ├── ffmpeg_vid_codecs.c
│       │       │   ├── g722/
│       │       │   │   ├── g722_dec.c
│       │       │   │   ├── g722_dec.h
│       │       │   │   ├── g722_enc.c
│       │       │   │   └── g722_enc.h
│       │       │   ├── g722.c
│       │       │   ├── g7221.c
│       │       │   ├── g7221_sdp_match.c
│       │       │   ├── gsm.c
│       │       │   ├── h263_packetizer.c
│       │       │   ├── h264_packetizer.c
│       │       │   ├── ilbc.c
│       │       │   ├── openh264.cpp
│       │       │   ├── opus.c
│       │       │   ├── passthrough.c
│       │       │   ├── speex_codec.c
│       │       │   └── vpx.c
│       │       └── pjmedia-videodev/
│       │           ├── avf_dev.m
│       │           ├── avi_dev.c
│       │           ├── colorbar_dev.c
│       │           ├── dshow_dev.c
│       │           ├── dshow_filter.cpp
│       │           ├── errno.c
│       │           ├── fb_dev.c
│       │           ├── null_dev.c
│       │           ├── util.c
│       │           ├── util.h
│       │           ├── v4l2_dev.c
│       │           └── videodev.c
│       ├── pjnath/
│       │   ├── build/
│       │   │   └── Makefile
│       │   ├── docs/
│       │   │   ├── UML-class-diagram.dia
│       │   │   ├── doc_ice.h
│       │   │   ├── doc_mainpage.h
│       │   │   ├── doc_nat.h
│       │   │   ├── doc_samples.h
│       │   │   ├── doc_stun.h
│       │   │   ├── doc_turn.h
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.css
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pjnath/
│       │   │   │   ├── config.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── ice_session.h
│       │   │   │   ├── ice_strans.h
│       │   │   │   ├── nat_detect.h
│       │   │   │   ├── stun_auth.h
│       │   │   │   ├── stun_config.h
│       │   │   │   ├── stun_msg.h
│       │   │   │   ├── stun_session.h
│       │   │   │   ├── stun_sock.h
│       │   │   │   ├── stun_transaction.h
│       │   │   │   ├── turn_session.h
│       │   │   │   ├── turn_sock.h
│       │   │   │   └── types.h
│       │   │   └── pjnath.h
│       │   └── src/
│       │       ├── pjnath/
│       │       │   ├── errno.c
│       │       │   ├── ice_session.c
│       │       │   ├── ice_strans.c
│       │       │   ├── nat_detect.c
│       │       │   ├── stun_auth.c
│       │       │   ├── stun_msg.c
│       │       │   ├── stun_msg_dump.c
│       │       │   ├── stun_session.c
│       │       │   ├── stun_sock.c
│       │       │   ├── stun_transaction.c
│       │       │   ├── turn_session.c
│       │       │   └── turn_sock.c
│       │       ├── pjturn-client/
│       │       │   └── client_main.c
│       │       └── pjturn-srv/
│       │           ├── allocation.c
│       │           ├── auth.c
│       │           ├── auth.h
│       │           ├── listener_tcp.c
│       │           ├── listener_udp.c
│       │           ├── main.c
│       │           ├── server.c
│       │           └── turn.h
│       ├── pjsip/
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   └── os-auto.mak.in
│       │   ├── docs/
│       │   │   ├── PJSUA-TESTING.txt
│       │   │   ├── TRANSPORT-PROBLEMS.TXT
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.h
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pjsip/
│       │   │   │   ├── print_util.h
│       │   │   │   ├── sip_auth.h
│       │   │   │   ├── sip_auth_aka.h
│       │   │   │   ├── sip_auth_msg.h
│       │   │   │   ├── sip_auth_parser.h
│       │   │   │   ├── sip_autoconf.h.in
│       │   │   │   ├── sip_config.h
│       │   │   │   ├── sip_dialog.h
│       │   │   │   ├── sip_endpoint.h
│       │   │   │   ├── sip_errno.h
│       │   │   │   ├── sip_event.h
│       │   │   │   ├── sip_module.h
│       │   │   │   ├── sip_msg.h
│       │   │   │   ├── sip_multipart.h
│       │   │   │   ├── sip_parser.h
│       │   │   │   ├── sip_private.h
│       │   │   │   ├── sip_resolve.h
│       │   │   │   ├── sip_tel_uri.h
│       │   │   │   ├── sip_transaction.h
│       │   │   │   ├── sip_transport.h
│       │   │   │   ├── sip_transport_loop.h
│       │   │   │   ├── sip_transport_tcp.h
│       │   │   │   ├── sip_transport_tls.h
│       │   │   │   ├── sip_transport_udp.h
│       │   │   │   ├── sip_types.h
│       │   │   │   ├── sip_ua_layer.h
│       │   │   │   ├── sip_uri.h
│       │   │   │   └── sip_util.h
│       │   │   ├── pjsip-simple/
│       │   │   │   ├── errno.h
│       │   │   │   ├── evsub.h
│       │   │   │   ├── evsub_msg.h
│       │   │   │   ├── iscomposing.h
│       │   │   │   ├── mwi.h
│       │   │   │   ├── pidf.h
│       │   │   │   ├── presence.h
│       │   │   │   ├── publish.h
│       │   │   │   ├── rpid.h
│       │   │   │   ├── types.h
│       │   │   │   └── xpidf.h
│       │   │   ├── pjsip-ua/
│       │   │   │   ├── sip_100rel.h
│       │   │   │   ├── sip_inv.h
│       │   │   │   ├── sip_regc.h
│       │   │   │   ├── sip_replaces.h
│       │   │   │   ├── sip_timer.h
│       │   │   │   └── sip_xfer.h
│       │   │   ├── pjsip.h
│       │   │   ├── pjsip_auth.h
│       │   │   ├── pjsip_simple.h
│       │   │   └── pjsip_ua.h
│       │   └── src/
│       │       ├── pjsip/
│       │       │   ├── sip_auth_aka.c
│       │       │   ├── sip_auth_client.c
│       │       │   ├── sip_auth_msg.c
│       │       │   ├── sip_auth_parser.c
│       │       │   ├── sip_auth_parser_wrap.cpp
│       │       │   ├── sip_auth_server.c
│       │       │   ├── sip_config.c
│       │       │   ├── sip_dialog.c
│       │       │   ├── sip_dialog_wrap.cpp
│       │       │   ├── sip_endpoint.c
│       │       │   ├── sip_endpoint_wrap.cpp
│       │       │   ├── sip_errno.c
│       │       │   ├── sip_msg.c
│       │       │   ├── sip_multipart.c
│       │       │   ├── sip_parser.c
│       │       │   ├── sip_parser_wrap.cpp
│       │       │   ├── sip_resolve.c
│       │       │   ├── sip_tel_uri.c
│       │       │   ├── sip_tel_uri_wrap.cpp
│       │       │   ├── sip_transaction.c
│       │       │   ├── sip_transport.c
│       │       │   ├── sip_transport_loop.c
│       │       │   ├── sip_transport_tcp.c
│       │       │   ├── sip_transport_tls.c
│       │       │   ├── sip_transport_udp.c
│       │       │   ├── sip_transport_wrap.cpp
│       │       │   ├── sip_ua_layer.c
│       │       │   ├── sip_uri.c
│       │       │   ├── sip_util.c
│       │       │   ├── sip_util_proxy.c
│       │       │   ├── sip_util_proxy_wrap.cpp
│       │       │   ├── sip_util_statefull.c
│       │       │   └── sip_util_wrap.cpp
│       │       ├── pjsip-simple/
│       │       │   ├── errno.c
│       │       │   ├── evsub.c
│       │       │   ├── evsub_msg.c
│       │       │   ├── iscomposing.c
│       │       │   ├── mwi.c
│       │       │   ├── pidf.c
│       │       │   ├── presence.c
│       │       │   ├── presence_body.c
│       │       │   ├── publishc.c
│       │       │   ├── rpid.c
│       │       │   └── xpidf.c
│       │       └── pjsip-ua/
│       │           ├── sip_100rel.c
│       │           ├── sip_inv.c
│       │           ├── sip_reg.c
│       │           ├── sip_replaces.c
│       │           ├── sip_timer.c
│       │           └── sip_xfer.c
│       ├── third_party/
│       │   ├── README.txt
│       │   ├── bdsound/
│       │   │   └── include/
│       │   │       └── bdimad.h
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   ├── g7221/
│       │   │   │   └── Makefile
│       │   │   ├── gsm/
│       │   │   │   ├── Makefile
│       │   │   │   └── config.h
│       │   │   ├── ilbc/
│       │   │   │   └── Makefile
│       │   │   ├── milenage/
│       │   │   │   └── Makefile
│       │   │   ├── opus/
│       │   │   │   └── Makefile
│       │   │   ├── os-auto.mak.in
│       │   │   ├── resample/
│       │   │   │   ├── Makefile
│       │   │   │   └── config.h
│       │   │   ├── speex/
│       │   │   │   ├── Makefile
│       │   │   │   ├── config.h
│       │   │   │   └── speex/
│       │   │   │       └── speex_config_types.h
│       │   │   ├── srtp/
│       │   │   │   ├── Makefile
│       │   │   │   └── srtp_config.h
│       │   │   ├── webrtc/
│       │   │   │   ├── Makefile
│       │   │   │   └── os-auto.mak.in
│       │   │   └── zsrtp/
│       │   │       └── Makefile
│       │   ├── g7221/
│       │   │   ├── common/
│       │   │   │   ├── basic_op.c
│       │   │   │   ├── basic_op.h
│       │   │   │   ├── basic_op_i.h
│       │   │   │   ├── common.c
│       │   │   │   ├── config.h
│       │   │   │   ├── count.h
│       │   │   │   ├── defs.h
│       │   │   │   ├── huff_def.h
│       │   │   │   ├── huff_tab.c
│       │   │   │   ├── huff_tab.h
│       │   │   │   ├── tables.c
│       │   │   │   ├── tables.h
│       │   │   │   └── typedef.h
│       │   │   ├── decode/
│       │   │   │   ├── coef2sam.c
│       │   │   │   ├── dct4_s.c
│       │   │   │   ├── dct4_s.h
│       │   │   │   └── decoder.c
│       │   │   └── encode/
│       │   │       ├── dct4_a.c
│       │   │       ├── dct4_a.h
│       │   │       ├── encoder.c
│       │   │       └── sam2coef.c
│       │   ├── gsm/
│       │   │   ├── COPYRIGHT
│       │   │   ├── ChangeLog
│       │   │   ├── INSTALL
│       │   │   ├── MACHINES
│       │   │   ├── MANIFEST
│       │   │   ├── Makefile
│       │   │   ├── README
│       │   │   ├── add-test/
│       │   │   │   ├── add_test.c
│       │   │   │   └── add_test.dta
│       │   │   ├── inc/
│       │   │   │   ├── config.h
│       │   │   │   ├── gsm.h
│       │   │   │   ├── private.h
│       │   │   │   ├── proto.h
│       │   │   │   ├── toast.h
│       │   │   │   └── unproto.h
│       │   │   ├── man/
│       │   │   │   ├── bitter.1
│       │   │   │   ├── gsm.3
│       │   │   │   ├── gsm_explode.3
│       │   │   │   ├── gsm_option.3
│       │   │   │   ├── gsm_print.3
│       │   │   │   └── toast.1
│       │   │   ├── src/
│       │   │   │   ├── add.c
│       │   │   │   ├── code.c
│       │   │   │   ├── debug.c
│       │   │   │   ├── decode.c
│       │   │   │   ├── gsm_create.c
│       │   │   │   ├── gsm_decode.c
│       │   │   │   ├── gsm_destroy.c
│       │   │   │   ├── gsm_encode.c
│       │   │   │   ├── gsm_explode.c
│       │   │   │   ├── gsm_implode.c
│       │   │   │   ├── gsm_option.c
│       │   │   │   ├── gsm_print.c
│       │   │   │   ├── long_term.c
│       │   │   │   ├── lpc.c
│       │   │   │   ├── preprocess.c
│       │   │   │   ├── rpe.c
│       │   │   │   ├── short_term.c
│       │   │   │   ├── table.c
│       │   │   │   ├── toast.c
│       │   │   │   ├── toast_alaw.c
│       │   │   │   ├── toast_audio.c
│       │   │   │   ├── toast_lin.c
│       │   │   │   └── toast_ulaw.c
│       │   │   ├── tls/
│       │   │   │   ├── bitter.c
│       │   │   │   ├── bitter.dta
│       │   │   │   ├── ginger.c
│       │   │   │   ├── sour.c
│       │   │   │   ├── sour1.dta
│       │   │   │   ├── sour2.dta
│       │   │   │   ├── sweet.c
│       │   │   │   ├── taste.c
│       │   │   │   └── taste.h
│       │   │   └── tst/
│       │   │       ├── cod2lin.c
│       │   │       ├── cod2txt.c
│       │   │       ├── gsm2cod.c
│       │   │       ├── lin2cod.c
│       │   │       ├── lin2txt.c
│       │   │       └── run
│       │   ├── ilbc/
│       │   │   ├── FrameClassify.c
│       │   │   ├── FrameClassify.h
│       │   │   ├── LPCdecode.c
│       │   │   ├── LPCdecode.h
│       │   │   ├── LPCencode.c
│       │   │   ├── LPCencode.h
│       │   │   ├── StateConstructW.c
│       │   │   ├── StateConstructW.h
│       │   │   ├── StateSearchW.c
│       │   │   ├── StateSearchW.h
│       │   │   ├── anaFilter.c
│       │   │   ├── anaFilter.h
│       │   │   ├── constants.c
│       │   │   ├── constants.h
│       │   │   ├── createCB.c
│       │   │   ├── createCB.h
│       │   │   ├── doCPLC.c
│       │   │   ├── doCPLC.h
│       │   │   ├── enhancer.c
│       │   │   ├── enhancer.h
│       │   │   ├── filter.c
│       │   │   ├── filter.h
│       │   │   ├── gainquant.c
│       │   │   ├── gainquant.h
│       │   │   ├── getCBvec.c
│       │   │   ├── getCBvec.h
│       │   │   ├── helpfun.c
│       │   │   ├── helpfun.h
│       │   │   ├── hpInput.c
│       │   │   ├── hpInput.h
│       │   │   ├── hpOutput.c
│       │   │   ├── hpOutput.h
│       │   │   ├── iCBConstruct.c
│       │   │   ├── iCBConstruct.h
│       │   │   ├── iCBSearch.c
│       │   │   ├── iCBSearch.h
│       │   │   ├── iLBC_decode.c
│       │   │   ├── iLBC_decode.h
│       │   │   ├── iLBC_define.h
│       │   │   ├── iLBC_encode.c
│       │   │   ├── iLBC_encode.h
│       │   │   ├── iLBC_test.c
│       │   │   ├── lsf.c
│       │   │   ├── lsf.h
│       │   │   ├── packing.c
│       │   │   ├── packing.h
│       │   │   ├── syntFilter.c
│       │   │   └── syntFilter.h
│       │   ├── milenage/
│       │   │   ├── milenage.c
│       │   │   ├── milenage.h
│       │   │   ├── rijndael.c
│       │   │   └── rijndael.h
│       │   ├── mp3/
│       │   │   ├── BladeMP3EncDLL.h
│       │   │   ├── mp3_port.h
│       │   │   └── mp3_writer.c
│       │   ├── opus/
│       │   │   ├── .gitignore
│       │   │   ├── AUTHORS
│       │   │   ├── COPYING
│       │   │   ├── ChangeLog
│       │   │   ├── INSTALL
│       │   │   ├── Makefile.am
│       │   │   ├── Makefile.mips
│       │   │   ├── Makefile.unix
│       │   │   ├── NEWS
│       │   │   ├── README
│       │   │   ├── celt/
│       │   │   │   ├── _kiss_fft_guts.h
│       │   │   │   ├── arch.h
│       │   │   │   ├── arm/
│       │   │   │   │   ├── arm2gnu.pl
│       │   │   │   │   ├── arm_celt_map.c
│       │   │   │   │   ├── armcpu.c
│       │   │   │   │   ├── armcpu.h
│       │   │   │   │   ├── armopts.s.in
│       │   │   │   │   ├── celt_ne10_fft.c
│       │   │   │   │   ├── celt_ne10_mdct.c
│       │   │   │   │   ├── celt_neon_intr.c
│       │   │   │   │   ├── celt_pitch_xcorr_arm-gnu.S
│       │   │   │   │   ├── celt_pitch_xcorr_arm.s
│       │   │   │   │   ├── fft_arm.h
│       │   │   │   │   ├── fixed_armv4.h
│       │   │   │   │   ├── fixed_armv5e.h
│       │   │   │   │   ├── kiss_fft_armv4.h
│       │   │   │   │   ├── kiss_fft_armv5e.h
│       │   │   │   │   ├── mdct_arm.h
│       │   │   │   │   └── pitch_arm.h
│       │   │   │   ├── bands.c
│       │   │   │   ├── bands.h
│       │   │   │   ├── celt.c
│       │   │   │   ├── celt.h
│       │   │   │   ├── celt_decoder.c
│       │   │   │   ├── celt_encoder.c
│       │   │   │   ├── celt_lpc.c
│       │   │   │   ├── celt_lpc.h
│       │   │   │   ├── cpu_support.h
│       │   │   │   ├── cwrs.c
│       │   │   │   ├── cwrs.h
│       │   │   │   ├── ecintrin.h
│       │   │   │   ├── entcode.c
│       │   │   │   ├── entcode.h
│       │   │   │   ├── entdec.c
│       │   │   │   ├── entdec.h
│       │   │   │   ├── entenc.c
│       │   │   │   ├── entenc.h
│       │   │   │   ├── fixed_debug.h
│       │   │   │   ├── fixed_generic.h
│       │   │   │   ├── float_cast.h
│       │   │   │   ├── kiss_fft.c
│       │   │   │   ├── kiss_fft.h
│       │   │   │   ├── laplace.c
│       │   │   │   ├── laplace.h
│       │   │   │   ├── mathops.c
│       │   │   │   ├── mathops.h
│       │   │   │   ├── mdct.c
│       │   │   │   ├── mdct.h
│       │   │   │   ├── mfrngcod.h
│       │   │   │   ├── mips/
│       │   │   │   │   ├── celt_mipsr1.h
│       │   │   │   │   ├── fixed_generic_mipsr1.h
│       │   │   │   │   ├── kiss_fft_mipsr1.h
│       │   │   │   │   ├── mdct_mipsr1.h
│       │   │   │   │   ├── pitch_mipsr1.h
│       │   │   │   │   └── vq_mipsr1.h
│       │   │   │   ├── modes.c
│       │   │   │   ├── modes.h
│       │   │   │   ├── opus_custom_demo.c
│       │   │   │   ├── os_support.h
│       │   │   │   ├── pitch.c
│       │   │   │   ├── pitch.h
│       │   │   │   ├── quant_bands.c
│       │   │   │   ├── quant_bands.h
│       │   │   │   ├── rate.c
│       │   │   │   ├── rate.h
│       │   │   │   ├── stack_alloc.h
│       │   │   │   ├── static_modes_fixed.h
│       │   │   │   ├── static_modes_fixed_arm_ne10.h
│       │   │   │   ├── static_modes_float.h
│       │   │   │   ├── static_modes_float_arm_ne10.h
│       │   │   │   ├── tests/
│       │   │   │   │   ├── test_unit_cwrs32.c
│       │   │   │   │   ├── test_unit_dft.c
│       │   │   │   │   ├── test_unit_entropy.c
│       │   │   │   │   ├── test_unit_laplace.c
│       │   │   │   │   ├── test_unit_mathops.c
│       │   │   │   │   ├── test_unit_mdct.c
│       │   │   │   │   ├── test_unit_rotation.c
│       │   │   │   │   └── test_unit_types.c
│       │   │   │   ├── vq.c
│       │   │   │   ├── vq.h
│       │   │   │   └── x86/
│       │   │   │       ├── celt_lpc_sse.c
│       │   │   │       ├── celt_lpc_sse.h
│       │   │   │       ├── pitch_sse.c
│       │   │   │       ├── pitch_sse.h
│       │   │   │       ├── pitch_sse2.c
│       │   │   │       ├── pitch_sse4_1.c
│       │   │   │       ├── x86_celt_map.c
│       │   │   │       ├── x86cpu.c
│       │   │   │       └── x86cpu.h
│       │   │   ├── celt_headers.mk
│       │   │   ├── celt_sources.mk
│       │   │   ├── configure.ac
│       │   │   ├── doc/
│       │   │   │   ├── Doxyfile.in
│       │   │   │   ├── Makefile.am
│       │   │   │   ├── TODO
│       │   │   │   ├── customdoxygen.css
│       │   │   │   ├── footer.html
│       │   │   │   ├── header.html
│       │   │   │   └── trivial_example.c
│       │   │   ├── include/
│       │   │   │   ├── opus.h
│       │   │   │   ├── opus_custom.h
│       │   │   │   ├── opus_defines.h
│       │   │   │   ├── opus_multistream.h
│       │   │   │   └── opus_types.h
│       │   │   ├── m4/
│       │   │   │   ├── as-gcc-inline-assembly.m4
│       │   │   │   ├── libtool.m4
│       │   │   │   ├── ltoptions.m4
│       │   │   │   ├── ltsugar.m4
│       │   │   │   ├── ltversion.m4
│       │   │   │   ├── lt~obsolete.m4
│       │   │   │   └── opus-intrinsics.m4
│       │   │   ├── opus-uninstalled.pc.in
│       │   │   ├── opus.m4
│       │   │   ├── opus.pc.in
│       │   │   ├── opus_headers.mk
│       │   │   ├── opus_sources.mk
│       │   │   ├── package_version
│       │   │   ├── silk/
│       │   │   │   ├── A2NLSF.c
│       │   │   │   ├── API.h
│       │   │   │   ├── CNG.c
│       │   │   │   ├── HP_variable_cutoff.c
│       │   │   │   ├── Inlines.h
│       │   │   │   ├── LPC_analysis_filter.c
│       │   │   │   ├── LPC_inv_pred_gain.c
│       │   │   │   ├── LP_variable_cutoff.c
│       │   │   │   ├── MacroCount.h
│       │   │   │   ├── MacroDebug.h
│       │   │   │   ├── NLSF2A.c
│       │   │   │   ├── NLSF_VQ.c
│       │   │   │   ├── NLSF_VQ_weights_laroia.c
│       │   │   │   ├── NLSF_decode.c
│       │   │   │   ├── NLSF_del_dec_quant.c
│       │   │   │   ├── NLSF_encode.c
│       │   │   │   ├── NLSF_stabilize.c
│       │   │   │   ├── NLSF_unpack.c
│       │   │   │   ├── NSQ.c
│       │   │   │   ├── NSQ_del_dec.c
│       │   │   │   ├── PLC.c
│       │   │   │   ├── PLC.h
│       │   │   │   ├── SigProc_FIX.h
│       │   │   │   ├── VAD.c
│       │   │   │   ├── VQ_WMat_EC.c
│       │   │   │   ├── ana_filt_bank_1.c
│       │   │   │   ├── arm/
│       │   │   │   │   ├── SigProc_FIX_armv4.h
│       │   │   │   │   ├── SigProc_FIX_armv5e.h
│       │   │   │   │   ├── macros_armv4.h
│       │   │   │   │   └── macros_armv5e.h
│       │   │   │   ├── biquad_alt.c
│       │   │   │   ├── bwexpander.c
│       │   │   │   ├── bwexpander_32.c
│       │   │   │   ├── check_control_input.c
│       │   │   │   ├── code_signs.c
│       │   │   │   ├── control.h
│       │   │   │   ├── control_SNR.c
│       │   │   │   ├── control_audio_bandwidth.c
│       │   │   │   ├── control_codec.c
│       │   │   │   ├── debug.c
│       │   │   │   ├── debug.h
│       │   │   │   ├── dec_API.c
│       │   │   │   ├── decode_core.c
│       │   │   │   ├── decode_frame.c
│       │   │   │   ├── decode_indices.c
│       │   │   │   ├── decode_parameters.c
│       │   │   │   ├── decode_pitch.c
│       │   │   │   ├── decode_pulses.c
│       │   │   │   ├── decoder_set_fs.c
│       │   │   │   ├── define.h
│       │   │   │   ├── enc_API.c
│       │   │   │   ├── encode_indices.c
│       │   │   │   ├── encode_pulses.c
│       │   │   │   ├── errors.h
│       │   │   │   ├── fixed/
│       │   │   │   │   ├── LTP_analysis_filter_FIX.c
│       │   │   │   │   ├── LTP_scale_ctrl_FIX.c
│       │   │   │   │   ├── apply_sine_window_FIX.c
│       │   │   │   │   ├── autocorr_FIX.c
│       │   │   │   │   ├── burg_modified_FIX.c
│       │   │   │   │   ├── corrMatrix_FIX.c
│       │   │   │   │   ├── encode_frame_FIX.c
│       │   │   │   │   ├── find_LPC_FIX.c
│       │   │   │   │   ├── find_LTP_FIX.c
│       │   │   │   │   ├── find_pitch_lags_FIX.c
│       │   │   │   │   ├── find_pred_coefs_FIX.c
│       │   │   │   │   ├── k2a_FIX.c
│       │   │   │   │   ├── k2a_Q16_FIX.c
│       │   │   │   │   ├── main_FIX.h
│       │   │   │   │   ├── mips/
│       │   │   │   │   │   ├── noise_shape_analysis_FIX_mipsr1.h
│       │   │   │   │   │   ├── prefilter_FIX_mipsr1.h
│       │   │   │   │   │   └── warped_autocorrelation_FIX_mipsr1.h
│       │   │   │   │   ├── noise_shape_analysis_FIX.c
│       │   │   │   │   ├── pitch_analysis_core_FIX.c
│       │   │   │   │   ├── prefilter_FIX.c
│       │   │   │   │   ├── process_gains_FIX.c
│       │   │   │   │   ├── regularize_correlations_FIX.c
│       │   │   │   │   ├── residual_energy16_FIX.c
│       │   │   │   │   ├── residual_energy_FIX.c
│       │   │   │   │   ├── schur64_FIX.c
│       │   │   │   │   ├── schur_FIX.c
│       │   │   │   │   ├── solve_LS_FIX.c
│       │   │   │   │   ├── structs_FIX.h
│       │   │   │   │   ├── vector_ops_FIX.c
│       │   │   │   │   ├── warped_autocorrelation_FIX.c
│       │   │   │   │   └── x86/
│       │   │   │   │       ├── burg_modified_FIX_sse.c
│       │   │   │   │       ├── prefilter_FIX_sse.c
│       │   │   │   │       └── vector_ops_FIX_sse.c
│       │   │   │   ├── float/
│       │   │   │   │   ├── LPC_analysis_filter_FLP.c
│       │   │   │   │   ├── LPC_inv_pred_gain_FLP.c
│       │   │   │   │   ├── LTP_analysis_filter_FLP.c
│       │   │   │   │   ├── LTP_scale_ctrl_FLP.c
│       │   │   │   │   ├── SigProc_FLP.h
│       │   │   │   │   ├── apply_sine_window_FLP.c
│       │   │   │   │   ├── autocorrelation_FLP.c
│       │   │   │   │   ├── burg_modified_FLP.c
│       │   │   │   │   ├── bwexpander_FLP.c
│       │   │   │   │   ├── corrMatrix_FLP.c
│       │   │   │   │   ├── encode_frame_FLP.c
│       │   │   │   │   ├── energy_FLP.c
│       │   │   │   │   ├── find_LPC_FLP.c
│       │   │   │   │   ├── find_LTP_FLP.c
│       │   │   │   │   ├── find_pitch_lags_FLP.c
│       │   │   │   │   ├── find_pred_coefs_FLP.c
│       │   │   │   │   ├── inner_product_FLP.c
│       │   │   │   │   ├── k2a_FLP.c
│       │   │   │   │   ├── levinsondurbin_FLP.c
│       │   │   │   │   ├── main_FLP.h
│       │   │   │   │   ├── noise_shape_analysis_FLP.c
│       │   │   │   │   ├── pitch_analysis_core_FLP.c
│       │   │   │   │   ├── prefilter_FLP.c
│       │   │   │   │   ├── process_gains_FLP.c
│       │   │   │   │   ├── regularize_correlations_FLP.c
│       │   │   │   │   ├── residual_energy_FLP.c
│       │   │   │   │   ├── scale_copy_vector_FLP.c
│       │   │   │   │   ├── scale_vector_FLP.c
│       │   │   │   │   ├── schur_FLP.c
│       │   │   │   │   ├── solve_LS_FLP.c
│       │   │   │   │   ├── sort_FLP.c
│       │   │   │   │   ├── structs_FLP.h
│       │   │   │   │   ├── warped_autocorrelation_FLP.c
│       │   │   │   │   └── wrappers_FLP.c
│       │   │   │   ├── gain_quant.c
│       │   │   │   ├── init_decoder.c
│       │   │   │   ├── init_encoder.c
│       │   │   │   ├── inner_prod_aligned.c
│       │   │   │   ├── interpolate.c
│       │   │   │   ├── lin2log.c
│       │   │   │   ├── log2lin.c
│       │   │   │   ├── macros.h
│       │   │   │   ├── main.h
│       │   │   │   ├── mips/
│       │   │   │   │   ├── NSQ_del_dec_mipsr1.h
│       │   │   │   │   ├── macros_mipsr1.h
│       │   │   │   │   └── sigproc_fix_mipsr1.h
│       │   │   │   ├── pitch_est_defines.h
│       │   │   │   ├── pitch_est_tables.c
│       │   │   │   ├── process_NLSFs.c
│       │   │   │   ├── quant_LTP_gains.c
│       │   │   │   ├── resampler.c
│       │   │   │   ├── resampler_down2.c
│       │   │   │   ├── resampler_down2_3.c
│       │   │   │   ├── resampler_private.h
│       │   │   │   ├── resampler_private_AR2.c
│       │   │   │   ├── resampler_private_IIR_FIR.c
│       │   │   │   ├── resampler_private_down_FIR.c
│       │   │   │   ├── resampler_private_up2_HQ.c
│       │   │   │   ├── resampler_rom.c
│       │   │   │   ├── resampler_rom.h
│       │   │   │   ├── resampler_structs.h
│       │   │   │   ├── shell_coder.c
│       │   │   │   ├── sigm_Q15.c
│       │   │   │   ├── sort.c
│       │   │   │   ├── stereo_LR_to_MS.c
│       │   │   │   ├── stereo_MS_to_LR.c
│       │   │   │   ├── stereo_decode_pred.c
│       │   │   │   ├── stereo_encode_pred.c
│       │   │   │   ├── stereo_find_predictor.c
│       │   │   │   ├── stereo_quant_pred.c
│       │   │   │   ├── structs.h
│       │   │   │   ├── sum_sqr_shift.c
│       │   │   │   ├── table_LSF_cos.c
│       │   │   │   ├── tables.h
│       │   │   │   ├── tables_LTP.c
│       │   │   │   ├── tables_NLSF_CB_NB_MB.c
│       │   │   │   ├── tables_NLSF_CB_WB.c
│       │   │   │   ├── tables_gain.c
│       │   │   │   ├── tables_other.c
│       │   │   │   ├── tables_pitch_lag.c
│       │   │   │   ├── tables_pulses_per_block.c
│       │   │   │   ├── tuning_parameters.h
│       │   │   │   ├── typedef.h
│       │   │   │   └── x86/
│       │   │   │       ├── NSQ_del_dec_sse.c
│       │   │   │       ├── NSQ_sse.c
│       │   │   │       ├── SigProc_FIX_sse.h
│       │   │   │       ├── VAD_sse.c
│       │   │   │       ├── VQ_WMat_EC_sse.c
│       │   │   │       ├── main_sse.h
│       │   │   │       └── x86_silk_map.c
│       │   │   ├── silk_headers.mk
│       │   │   ├── silk_sources.mk
│       │   │   ├── src/
│       │   │   │   ├── analysis.c
│       │   │   │   ├── analysis.h
│       │   │   │   ├── mlp.c
│       │   │   │   ├── mlp.h
│       │   │   │   ├── mlp_data.c
│       │   │   │   ├── opus.c
│       │   │   │   ├── opus_compare.c
│       │   │   │   ├── opus_decoder.c
│       │   │   │   ├── opus_demo.c
│       │   │   │   ├── opus_encoder.c
│       │   │   │   ├── opus_multistream.c
│       │   │   │   ├── opus_multistream_decoder.c
│       │   │   │   ├── opus_multistream_encoder.c
│       │   │   │   ├── opus_private.h
│       │   │   │   ├── repacketizer.c
│       │   │   │   ├── repacketizer_demo.c
│       │   │   │   └── tansig_table.h
│       │   │   ├── test-driver
│       │   │   ├── tests/
│       │   │   │   ├── run_vectors.sh
│       │   │   │   ├── test_opus_api.c
│       │   │   │   ├── test_opus_common.h
│       │   │   │   ├── test_opus_decode.c
│       │   │   │   ├── test_opus_encode.c
│       │   │   │   └── test_opus_padding.c
│       │   │   ├── version.mk
│       │   │   └── win32/
│       │   │       ├── VS2010/
│       │   │       │   ├── celt.vcxproj
│       │   │       │   ├── celt.vcxproj.filters
│       │   │       │   ├── opus.sln
│       │   │       │   ├── opus.vcxproj
│       │   │       │   ├── opus.vcxproj.filters
│       │   │       │   ├── opus_demo.vcxproj
│       │   │       │   ├── opus_demo.vcxproj.filters
│       │   │       │   ├── silk_common.vcxproj
│       │   │       │   ├── silk_common.vcxproj.filters
│       │   │       │   ├── silk_fixed.vcxproj
│       │   │       │   ├── silk_fixed.vcxproj.filters
│       │   │       │   ├── silk_float.vcxproj
│       │   │       │   ├── silk_float.vcxproj.filters
│       │   │       │   ├── test_opus_api.vcxproj
│       │   │       │   ├── test_opus_api.vcxproj.filters
│       │   │       │   ├── test_opus_decode.vcxproj
│       │   │       │   ├── test_opus_decode.vcxproj.filters
│       │   │       │   ├── test_opus_encode.vcxproj
│       │   │       │   └── test_opus_encode.vcxproj.filters
│       │   │       └── genversion.bat
│       │   ├── resample/
│       │   │   ├── COPYING
│       │   │   ├── README.resample
│       │   │   ├── include/
│       │   │   │   └── resamplesubs.h
│       │   │   └── src/
│       │   │       ├── largefilter.h
│       │   │       ├── libresample_dll.c
│       │   │       ├── resample.h
│       │   │       ├── resamplesubs.c
│       │   │       ├── smallfilter.h
│       │   │       └── stddefs.h
│       │   ├── speex/
│       │   │   ├── AUTHORS
│       │   │   ├── COPYING
│       │   │   ├── include/
│       │   │   │   └── speex/
│       │   │   │       ├── speex.h
│       │   │   │       ├── speex_bits.h
│       │   │   │       ├── speex_buffer.h
│       │   │   │       ├── speex_callbacks.h
│       │   │   │       ├── speex_config_types.h.in
│       │   │   │       ├── speex_echo.h
│       │   │   │       ├── speex_header.h
│       │   │   │       ├── speex_jitter.h
│       │   │   │       ├── speex_preprocess.h
│       │   │   │       ├── speex_resampler.h
│       │   │   │       ├── speex_stereo.h
│       │   │   │       └── speex_types.h
│       │   │   ├── libspeex/
│       │   │   │   ├── _kiss_fft_guts.h
│       │   │   │   ├── arch.h
│       │   │   │   ├── bits.c
│       │   │   │   ├── buffer.c
│       │   │   │   ├── cb_search.c
│       │   │   │   ├── cb_search.h
│       │   │   │   ├── cb_search_arm4.h
│       │   │   │   ├── cb_search_bfin.h
│       │   │   │   ├── cb_search_sse.h
│       │   │   │   ├── echo_diagnostic.m
│       │   │   │   ├── exc_10_16_table.c
│       │   │   │   ├── exc_10_32_table.c
│       │   │   │   ├── exc_20_32_table.c
│       │   │   │   ├── exc_5_256_table.c
│       │   │   │   ├── exc_5_64_table.c
│       │   │   │   ├── exc_8_128_table.c
│       │   │   │   ├── fftwrap.c
│       │   │   │   ├── fftwrap.h
│       │   │   │   ├── filterbank.c
│       │   │   │   ├── filterbank.h
│       │   │   │   ├── filters.c
│       │   │   │   ├── filters.h
│       │   │   │   ├── filters_arm4.h
│       │   │   │   ├── filters_bfin.h
│       │   │   │   ├── filters_sse.h
│       │   │   │   ├── fixed_arm4.h
│       │   │   │   ├── fixed_arm5e.h
│       │   │   │   ├── fixed_bfin.h
│       │   │   │   ├── fixed_debug.h
│       │   │   │   ├── fixed_generic.h
│       │   │   │   ├── gain_table.c
│       │   │   │   ├── gain_table_lbr.c
│       │   │   │   ├── hexc_10_32_table.c
│       │   │   │   ├── hexc_table.c
│       │   │   │   ├── high_lsp_tables.c
│       │   │   │   ├── jitter.c
│       │   │   │   ├── kiss_fft.c
│       │   │   │   ├── kiss_fft.h
│       │   │   │   ├── kiss_fftr.c
│       │   │   │   ├── kiss_fftr.h
│       │   │   │   ├── lpc.c
│       │   │   │   ├── lpc.h
│       │   │   │   ├── lpc_bfin.h
│       │   │   │   ├── lsp.c
│       │   │   │   ├── lsp.h
│       │   │   │   ├── lsp_bfin.h
│       │   │   │   ├── lsp_tables_nb.c
│       │   │   │   ├── ltp.c
│       │   │   │   ├── ltp.h
│       │   │   │   ├── ltp_arm4.h
│       │   │   │   ├── ltp_bfin.h
│       │   │   │   ├── ltp_sse.h
│       │   │   │   ├── math_approx.h
│       │   │   │   ├── mdf.c
│       │   │   │   ├── misc_bfin.h
│       │   │   │   ├── modes.c
│       │   │   │   ├── modes.h
│       │   │   │   ├── modes_wb.c
│       │   │   │   ├── nb_celp.c
│       │   │   │   ├── nb_celp.h
│       │   │   │   ├── os_support.h
│       │   │   │   ├── preprocess.c
│       │   │   │   ├── pseudofloat.h
│       │   │   │   ├── quant_lsp.c
│       │   │   │   ├── quant_lsp.h
│       │   │   │   ├── quant_lsp_bfin.h
│       │   │   │   ├── resample.c
│       │   │   │   ├── resample_sse.h
│       │   │   │   ├── sb_celp.c
│       │   │   │   ├── sb_celp.h
│       │   │   │   ├── scal.c
│       │   │   │   ├── smallft.c
│       │   │   │   ├── smallft.h
│       │   │   │   ├── speex.c
│       │   │   │   ├── speex_callbacks.c
│       │   │   │   ├── speex_header.c
│       │   │   │   ├── stack_alloc.h
│       │   │   │   ├── stereo.c
│       │   │   │   ├── testdenoise.c
│       │   │   │   ├── testecho.c
│       │   │   │   ├── testenc.c
│       │   │   │   ├── testenc_uwb.c
│       │   │   │   ├── testenc_wb.c
│       │   │   │   ├── testjitter.c
│       │   │   │   ├── testresample.c
│       │   │   │   ├── vbr.c
│       │   │   │   ├── vbr.h
│       │   │   │   ├── vorbis_psy.c
│       │   │   │   ├── vorbis_psy.h
│       │   │   │   ├── vq.c
│       │   │   │   ├── vq.h
│       │   │   │   ├── vq_arm4.h
│       │   │   │   ├── vq_bfin.h
│       │   │   │   ├── vq_sse.h
│       │   │   │   └── window.c
│       │   │   ├── symbian/
│       │   │   │   └── config.h
│       │   │   └── win32/
│       │   │       └── config.h
│       │   ├── srtp/
│       │   │   ├── CHANGES
│       │   │   ├── LICENSE
│       │   │   ├── Makefile.in
│       │   │   ├── README
│       │   │   ├── TODO
│       │   │   ├── VERSION
│       │   │   ├── config.h_win32vc7
│       │   │   ├── config.hw
│       │   │   ├── config_in.h
│       │   │   ├── configure
│       │   │   ├── configure.in
│       │   │   ├── crypto/
│       │   │   │   ├── Makefile
│       │   │   │   ├── Makefile.in
│       │   │   │   ├── VERSION
│       │   │   │   ├── ae_xfm/
│       │   │   │   │   └── xfm.c
│       │   │   │   ├── cipher/
│       │   │   │   │   ├── aes.c
│       │   │   │   │   ├── aes_cbc.c
│       │   │   │   │   ├── aes_icm.c
│       │   │   │   │   ├── cipher.c
│       │   │   │   │   └── null_cipher.c
│       │   │   │   ├── hash/
│       │   │   │   │   ├── auth.c
│       │   │   │   │   ├── hmac.c
│       │   │   │   │   ├── null_auth.c
│       │   │   │   │   └── sha1.c
│       │   │   │   ├── include/
│       │   │   │   │   ├── aes.h
│       │   │   │   │   ├── aes_cbc.h
│       │   │   │   │   ├── aes_icm.h
│       │   │   │   │   ├── alloc.h
│       │   │   │   │   ├── auth.h
│       │   │   │   │   ├── cipher.h
│       │   │   │   │   ├── crypto.h
│       │   │   │   │   ├── crypto_kernel.h
│       │   │   │   │   ├── crypto_math.h
│       │   │   │   │   ├── crypto_types.h
│       │   │   │   │   ├── cryptoalg.h
│       │   │   │   │   ├── datatypes.h
│       │   │   │   │   ├── err.h
│       │   │   │   │   ├── gf2_8.h
│       │   │   │   │   ├── hmac.h
│       │   │   │   │   ├── integers.h
│       │   │   │   │   ├── kernel_compat.h
│       │   │   │   │   ├── key.h
│       │   │   │   │   ├── null_auth.h
│       │   │   │   │   ├── null_cipher.h
│       │   │   │   │   ├── prng.h
│       │   │   │   │   ├── rand_source.h
│       │   │   │   │   ├── rdb.h
│       │   │   │   │   ├── rdbx.h
│       │   │   │   │   ├── sha1.h
│       │   │   │   │   ├── stat.h
│       │   │   │   │   └── xfm.h
│       │   │   │   ├── kernel/
│       │   │   │   │   ├── alloc.c
│       │   │   │   │   ├── crypto_kernel.c
│       │   │   │   │   ├── err.c
│       │   │   │   │   └── key.c
│       │   │   │   ├── math/
│       │   │   │   │   ├── datatypes.c
│       │   │   │   │   ├── gf2_8.c
│       │   │   │   │   ├── math.c
│       │   │   │   │   └── stat.c
│       │   │   │   ├── replay/
│       │   │   │   │   ├── rdb.c
│       │   │   │   │   ├── rdbx.c
│       │   │   │   │   └── ut_sim.c
│       │   │   │   └── rng/
│       │   │   │       ├── ctr_prng.c
│       │   │   │       ├── prng.c
│       │   │   │       ├── rand_linux_kernel.c
│       │   │   │       └── rand_source.c
│       │   │   ├── doc/
│       │   │   │   ├── Doxyfile
│       │   │   │   ├── Makefile
│       │   │   │   ├── Makefile.in
│       │   │   │   ├── crypto_kernel.txt
│       │   │   │   ├── header.template
│       │   │   │   ├── intro.txt
│       │   │   │   └── references.txt
│       │   │   ├── include/
│       │   │   │   ├── getopt_s.h
│       │   │   │   ├── rtp.h
│       │   │   │   ├── rtp_priv.h
│       │   │   │   ├── srtp.h
│       │   │   │   ├── srtp_priv.h
│       │   │   │   └── ut_sim.h
│       │   │   ├── install-sh
│       │   │   ├── pjlib/
│       │   │   │   └── srtp_err.c
│       │   │   ├── srtp/
│       │   │   │   └── srtp.c
│       │   │   ├── srtp.def
│       │   │   ├── srtp7.sln
│       │   │   ├── tables/
│       │   │   │   └── aes_tables.c
│       │   │   ├── timing
│       │   │   ├── undos.sh
│       │   │   └── update.sh
│       │   ├── webrtc/
│       │   │   └── src/
│       │   │       ├── common_audio/
│       │   │       │   └── signal_processing_library/
│       │   │       │       ├── OWNERS
│       │   │       │       └── main/
│       │   │       │           ├── interface/
│       │   │       │           │   ├── signal_processing_library.h
│       │   │       │           │   ├── spl_inl.h
│       │   │       │           │   └── spl_inl_armv7.h
│       │   │       │           └── source/
│       │   │       │               ├── auto_corr_to_refl_coef.c
│       │   │       │               ├── auto_correlation.c
│       │   │       │               ├── complex_bit_reverse.c
│       │   │       │               ├── complex_fft.c
│       │   │       │               ├── complex_ifft.c
│       │   │       │               ├── copy_set_operations.c
│       │   │       │               ├── cos_table.c
│       │   │       │               ├── cross_correlation.c
│       │   │       │               ├── division_operations.c
│       │   │       │               ├── dot_product_with_scale.c
│       │   │       │               ├── downsample_fast.c
│       │   │       │               ├── energy.c
│       │   │       │               ├── filter_ar.c
│       │   │       │               ├── filter_ar_fast_q12.c
│       │   │       │               ├── filter_ma_fast_q12.c
│       │   │       │               ├── get_hanning_window.c
│       │   │       │               ├── get_scaling_square.c
│       │   │       │               ├── hanning_table.c
│       │   │       │               ├── ilbc_specific_functions.c
│       │   │       │               ├── levinson_durbin.c
│       │   │       │               ├── lpc_to_refl_coef.c
│       │   │       │               ├── min_max_operations.c
│       │   │       │               ├── min_max_operations_neon.c
│       │   │       │               ├── randn_table.c
│       │   │       │               ├── randomization_functions.c
│       │   │       │               ├── refl_coef_to_lpc.c
│       │   │       │               ├── resample.c
│       │   │       │               ├── resample_48khz.c
│       │   │       │               ├── resample_by_2.c
│       │   │       │               ├── resample_by_2_internal.c
│       │   │       │               ├── resample_by_2_internal.h
│       │   │       │               ├── resample_fractional.c
│       │   │       │               ├── sin_table.c
│       │   │       │               ├── sin_table_1024.c
│       │   │       │               ├── spl_sqrt.c
│       │   │       │               ├── spl_sqrt_floor.c
│       │   │       │               ├── spl_version.c
│       │   │       │               ├── splitting_filter.c
│       │   │       │               ├── sqrt_of_one_minus_x_squared.c
│       │   │       │               ├── vector_scaling_operations.c
│       │   │       │               ├── webrtc_fft_t_1024_8.c
│       │   │       │               └── webrtc_fft_t_rad.c
│       │   │       ├── common_types.h
│       │   │       ├── engine_configurations.h
│       │   │       ├── modules/
│       │   │       │   └── audio_processing/
│       │   │       │       ├── aec/
│       │   │       │       │   └── main/
│       │   │       │       │       ├── interface/
│       │   │       │       │       │   └── echo_cancellation.h
│       │   │       │       │       ├── matlab/
│       │   │       │       │       │   └── fullaec.m
│       │   │       │       │       └── source/
│       │   │       │       │           ├── aec_core.c
│       │   │       │       │           ├── aec_core.h
│       │   │       │       │           ├── aec_core_sse2.c
│       │   │       │       │           ├── aec_rdft.c
│       │   │       │       │           ├── aec_rdft.h
│       │   │       │       │           ├── aec_rdft_sse2.c
│       │   │       │       │           ├── echo_cancellation.c
│       │   │       │       │           ├── resampler.c
│       │   │       │       │           └── resampler.h
│       │   │       │       ├── agc/
│       │   │       │       │   └── main/
│       │   │       │       │       ├── interface/
│       │   │       │       │       │   └── gain_control.h
│       │   │       │       │       └── source/
│       │   │       │       │           ├── analog_agc.c
│       │   │       │       │           ├── analog_agc.h
│       │   │       │       │           ├── digital_agc.c
│       │   │       │       │           └── digital_agc.h
│       │   │       │       ├── ns/
│       │   │       │       │   └── main/
│       │   │       │       │       ├── interface/
│       │   │       │       │       │   ├── noise_suppression.h
│       │   │       │       │       │   └── noise_suppression_x.h
│       │   │       │       │       └── source/
│       │   │       │       │           ├── defines.h
│       │   │       │       │           ├── noise_suppression.c
│       │   │       │       │           ├── noise_suppression_x.c
│       │   │       │       │           ├── ns_core.c
│       │   │       │       │           ├── ns_core.h
│       │   │       │       │           ├── nsx_core.c
│       │   │       │       │           ├── nsx_core.h
│       │   │       │       │           ├── nsx_core_neon.c
│       │   │       │       │           ├── nsx_defines.h
│       │   │       │       │           └── windows_private.h
│       │   │       │       └── utility/
│       │   │       │           ├── fft4g.c
│       │   │       │           ├── fft4g.h
│       │   │       │           ├── ring_buffer.c
│       │   │       │           └── ring_buffer.h
│       │   │       ├── system_wrappers/
│       │   │       │   ├── OWNERS
│       │   │       │   ├── interface/
│       │   │       │   │   ├── aligned_malloc.h
│       │   │       │   │   ├── atomic32_wrapper.h
│       │   │       │   │   ├── condition_variable_wrapper.h
│       │   │       │   │   ├── constructor_magic.h
│       │   │       │   │   ├── cpu_features_wrapper.h
│       │   │       │   │   ├── cpu_wrapper.h
│       │   │       │   │   ├── critical_section_wrapper.h
│       │   │       │   │   ├── data_log.h
│       │   │       │   │   ├── data_log_impl.h
│       │   │       │   │   ├── event_wrapper.h
│       │   │       │   │   ├── file_wrapper.h
│       │   │       │   │   ├── fix_interlocked_exchange_pointer_windows.h
│       │   │       │   │   ├── list_wrapper.h
│       │   │       │   │   ├── map_wrapper.h
│       │   │       │   │   ├── ref_count.h
│       │   │       │   │   ├── rpcsal.h
│       │   │       │   │   ├── rw_lock_wrapper.h
│       │   │       │   │   ├── scoped_ptr.h
│       │   │       │   │   ├── sort.h
│       │   │       │   │   ├── thread_wrapper.h
│       │   │       │   │   ├── tick_util.h
│       │   │       │   │   └── trace.h
│       │   │       │   └── source/
│       │   │       │       ├── aligned_malloc.cc
│       │   │       │       ├── atomic32.cc
│       │   │       │       ├── atomic32_linux.h
│       │   │       │       ├── atomic32_mac.h
│       │   │       │       ├── atomic32_windows.h
│       │   │       │       ├── condition_variable.cc
│       │   │       │       ├── condition_variable_posix.cc
│       │   │       │       ├── condition_variable_posix.h
│       │   │       │       ├── condition_variable_windows.cc
│       │   │       │       ├── condition_variable_windows.h
│       │   │       │       ├── cpu.cc
│       │   │       │       ├── cpu_features.cc
│       │   │       │       ├── cpu_linux.cc
│       │   │       │       ├── cpu_linux.h
│       │   │       │       ├── cpu_mac.cc
│       │   │       │       ├── cpu_mac.h
│       │   │       │       ├── cpu_windows.cc
│       │   │       │       ├── cpu_windows.h
│       │   │       │       ├── critical_section.cc
│       │   │       │       ├── critical_section_posix.cc
│       │   │       │       ├── critical_section_posix.h
│       │   │       │       ├── critical_section_windows.cc
│       │   │       │       ├── critical_section_windows.h
│       │   │       │       ├── data_log.cc
│       │   │       │       ├── data_log_dummy.cc
│       │   │       │       ├── data_log_helpers_unittest.cc
│       │   │       │       ├── data_log_unittest.cc
│       │   │       │       ├── event.cc
│       │   │       │       ├── event_posix.cc
│       │   │       │       ├── event_posix.h
│       │   │       │       ├── event_windows.cc
│       │   │       │       ├── event_windows.h
│       │   │       │       ├── file_impl.cc
│       │   │       │       ├── file_impl.h
│       │   │       │       ├── list_no_stl.cc
│       │   │       │       ├── list_no_stl.h
│       │   │       │       ├── list_stl.cc
│       │   │       │       ├── list_stl.h
│       │   │       │       ├── list_unittest.cc
│       │   │       │       ├── map.cc
│       │   │       │       ├── map_no_stl.cc
│       │   │       │       ├── map_no_stl.h
│       │   │       │       ├── map_unittest.cc
│       │   │       │       ├── rw_lock.cc
│       │   │       │       ├── rw_lock_generic.cc
│       │   │       │       ├── rw_lock_generic.h
│       │   │       │       ├── rw_lock_posix.cc
│       │   │       │       ├── rw_lock_posix.h
│       │   │       │       ├── rw_lock_windows.cc
│       │   │       │       ├── rw_lock_windows.h
│       │   │       │       ├── sort.cc
│       │   │       │       ├── spreadsortlib/
│       │   │       │       │   ├── constants.hpp
│       │   │       │       │   └── spreadsort.hpp
│       │   │       │       ├── thread.cc
│       │   │       │       ├── thread_posix.cc
│       │   │       │       ├── thread_posix.h
│       │   │       │       ├── thread_windows.cc
│       │   │       │       ├── thread_windows.h
│       │   │       │       ├── thread_windows_set_name.h
│       │   │       │       ├── trace_impl.cc
│       │   │       │       ├── trace_impl.h
│       │   │       │       ├── trace_posix.cc
│       │   │       │       ├── trace_posix.h
│       │   │       │       ├── trace_windows.cc
│       │   │       │       └── trace_windows.h
│       │   │       └── typedefs.h
│       │   └── zsrtp/
│       │       ├── include/
│       │       │   ├── ZsrtpCWrapper.h
│       │       │   └── openssl_compat.h
│       │       ├── srtp/
│       │       │   └── ZsrtpCWrapper.cpp
│       │       └── zrtp/
│       │           ├── COPYING
│       │           ├── README.md
│       │           ├── base_version
│       │           ├── common/
│       │           │   ├── EventClass.cpp
│       │           │   ├── EventClass.h
│       │           │   ├── MutexClass.cpp
│       │           │   ├── MutexClass.h
│       │           │   ├── Thread.cpp
│       │           │   ├── Thread.h
│       │           │   ├── osSpecifics.c
│       │           │   └── osSpecifics.h
│       │           ├── cryptcommon/
│       │           │   ├── ZrtpRandom.cpp
│       │           │   ├── ZrtpRandom.h
│       │           │   ├── aes.h
│       │           │   ├── aes_modes.c
│       │           │   ├── aescpp.h
│       │           │   ├── aescrypt.c
│       │           │   ├── aeskey.c
│       │           │   ├── aesopt.h
│       │           │   ├── aestab.c
│       │           │   ├── aestab.h
│       │           │   ├── brg_endian.h
│       │           │   ├── brg_types.h
│       │           │   ├── macSkein.cpp
│       │           │   ├── macSkein.h
│       │           │   ├── skein.c
│       │           │   ├── skein.h
│       │           │   ├── skeinApi.c
│       │           │   ├── skeinApi.h
│       │           │   ├── skein_block.c
│       │           │   ├── skein_iv.h
│       │           │   ├── skein_port.h
│       │           │   ├── twofish.c
│       │           │   ├── twofish.h
│       │           │   └── twofish_cfb.c
│       │           ├── srtp/
│       │           │   ├── CryptoContext.cpp
│       │           │   ├── CryptoContext.h
│       │           │   ├── CryptoContextCtrl.cpp
│       │           │   ├── CryptoContextCtrl.h
│       │           │   ├── SrtpHandler.cpp
│       │           │   ├── SrtpHandler.h
│       │           │   └── crypto/
│       │           │       ├── SrtpSymCrypto.cpp
│       │           │       ├── SrtpSymCrypto.h
│       │           │       ├── gcrypt/
│       │           │       │   ├── InitializeGcrypt.cpp
│       │           │       │   ├── gcryptSrtpSymCrypto.cpp
│       │           │       │   └── gcrypthmac.cpp
│       │           │       ├── hmac.cpp
│       │           │       ├── hmac.h
│       │           │       ├── openssl/
│       │           │       │   ├── SrtpSymCrypto.cpp
│       │           │       │   └── hmac.cpp
│       │           │       ├── sha1.c
│       │           │       └── sha1.h
│       │           └── zrtp/
│       │               ├── Base32.cpp
│       │               ├── ZIDCacheDb.cpp
│       │               ├── ZIDCacheFile.cpp
│       │               ├── ZIDRecordDb.cpp
│       │               ├── ZIDRecordFile.cpp
│       │               ├── ZRtp.cpp
│       │               ├── ZrtpCWrapper.cpp
│       │               ├── ZrtpCallbackWrapper.cpp
│       │               ├── ZrtpConfigure.cpp
│       │               ├── ZrtpCrc32.cpp
│       │               ├── ZrtpPacketClearAck.cpp
│       │               ├── ZrtpPacketCommit.cpp
│       │               ├── ZrtpPacketConf2Ack.cpp
│       │               ├── ZrtpPacketConfirm.cpp
│       │               ├── ZrtpPacketDHPart.cpp
│       │               ├── ZrtpPacketError.cpp
│       │               ├── ZrtpPacketErrorAck.cpp
│       │               ├── ZrtpPacketGoClear.cpp
│       │               ├── ZrtpPacketHello.cpp
│       │               ├── ZrtpPacketHelloAck.cpp
│       │               ├── ZrtpPacketPing.cpp
│       │               ├── ZrtpPacketPingAck.cpp
│       │               ├── ZrtpPacketRelayAck.cpp
│       │               ├── ZrtpPacketSASrelay.cpp
│       │               ├── ZrtpSdesStream.cpp
│       │               ├── ZrtpStateClass.cpp
│       │               ├── ZrtpTextData.cpp
│       │               ├── crypto/
│       │               │   ├── aesCFB.cpp
│       │               │   ├── aesCFB.h
│       │               │   ├── gcrypt/
│       │               │   │   ├── InitializeGcrypt.cpp
│       │               │   │   ├── gcryptAesCFB.cpp
│       │               │   │   ├── gcryptZrtpDH.cpp
│       │               │   │   ├── gcrypthmac256.cpp
│       │               │   │   ├── gcrypthmac384.cpp
│       │               │   │   ├── gcryptsha256.cpp
│       │               │   │   └── gcryptsha384.cpp
│       │               │   ├── hmac256.cpp
│       │               │   ├── hmac256.h
│       │               │   ├── hmac384.cpp
│       │               │   ├── hmac384.h
│       │               │   ├── openssl/
│       │               │   │   ├── InitializeOpenSSL.cpp
│       │               │   │   ├── aesCFB.cpp
│       │               │   │   ├── hmac256.cpp
│       │               │   │   ├── hmac384.cpp
│       │               │   │   ├── sha256.cpp
│       │               │   │   ├── sha384.cpp
│       │               │   │   └── zrtpDH.cpp
│       │               │   ├── sha2.c
│       │               │   ├── sha2.h
│       │               │   ├── sha256.cpp
│       │               │   ├── sha256.h
│       │               │   ├── sha384.cpp
│       │               │   ├── sha384.h
│       │               │   ├── skein256.cpp
│       │               │   ├── skein256.h
│       │               │   ├── skein384.cpp
│       │               │   ├── skein384.h
│       │               │   ├── skeinMac256.cpp
│       │               │   ├── skeinMac256.h
│       │               │   ├── skeinMac384.cpp
│       │               │   ├── skeinMac384.h
│       │               │   ├── twoCFB.cpp
│       │               │   ├── twoCFB.h
│       │               │   ├── zrtpDH.cpp
│       │               │   └── zrtpDH.h
│       │               ├── libzrtpcpp/
│       │               │   ├── Base32.h
│       │               │   ├── ZIDCache.h
│       │               │   ├── ZIDCacheDb.h
│       │               │   ├── ZIDCacheFile.h
│       │               │   ├── ZIDRecord.h
│       │               │   ├── ZIDRecordDb.h
│       │               │   ├── ZIDRecordFile.h
│       │               │   ├── ZRtp.h
│       │               │   ├── ZrtpCWrapper.h
│       │               │   ├── ZrtpCallback.h
│       │               │   ├── ZrtpCallbackWrapper.h
│       │               │   ├── ZrtpCodes.h
│       │               │   ├── ZrtpConfigure.h
│       │               │   ├── ZrtpCrc32.h
│       │               │   ├── ZrtpPacketBase.h
│       │               │   ├── ZrtpPacketClearAck.h
│       │               │   ├── ZrtpPacketCommit.h
│       │               │   ├── ZrtpPacketConf2Ack.h
│       │               │   ├── ZrtpPacketConfirm.h
│       │               │   ├── ZrtpPacketDHPart.h
│       │               │   ├── ZrtpPacketError.h
│       │               │   ├── ZrtpPacketErrorAck.h
│       │               │   ├── ZrtpPacketGoClear.h
│       │               │   ├── ZrtpPacketHello.h
│       │               │   ├── ZrtpPacketHelloAck.h
│       │               │   ├── ZrtpPacketPing.h
│       │               │   ├── ZrtpPacketPingAck.h
│       │               │   ├── ZrtpPacketRelayAck.h
│       │               │   ├── ZrtpPacketSASrelay.h
│       │               │   ├── ZrtpSdesStream.h
│       │               │   ├── ZrtpStateClass.h
│       │               │   ├── ZrtpStates.h
│       │               │   ├── ZrtpTextData.h
│       │               │   ├── ZrtpUserCallback.h
│       │               │   ├── zrtpB64Decode.h
│       │               │   ├── zrtpB64Encode.h
│       │               │   ├── zrtpCacheDbBackend.h
│       │               │   └── zrtpPacket.h
│       │               ├── zrtpB64Decode.c
│       │               ├── zrtpB64Encode.c
│       │               └── zrtpCacheSqliteBackend.c
│       └── version.mak
├── docs/
│   ├── Dependencies.txt
│   ├── DeveloperGuide.txt
│   ├── Install.debian
│   ├── Install.linux
│   ├── Install.osx
│   ├── Install.rasbian
│   ├── Install.ubuntu
│   ├── Install.windows
│   ├── Licenses.txt
│   └── Uninstall.txt
├── setup.py
├── setup_pjsip.py
└── sipsimple/
    ├── __info__.py
    ├── __init__.py
    ├── account/
    │   ├── __init__.py
    │   ├── bonjour/
    │   │   ├── __init__.py
    │   │   └── _bonjour.py
    │   ├── publication.py
    │   ├── registration.py
    │   ├── subscription.py
    │   └── xcap/
    │       ├── __init__.py
    │       └── storage/
    │           ├── __init__.py
    │           ├── file.py
    │           └── memory.py
    ├── addressbook.py
    ├── application.py
    ├── audio.py
    ├── configuration/
    │   ├── __init__.py
    │   ├── backend/
    │   │   ├── __init__.py
    │   │   ├── file.py
    │   │   └── memory.py
    │   ├── datatypes.py
    │   └── settings.py
    ├── core/
    │   ├── __init__.py
    │   ├── _core.error.pxi
    │   ├── _core.event.pxi
    │   ├── _core.headers.pxi
    │   ├── _core.helper.pxi
    │   ├── _core.invitation.pxi
    │   ├── _core.lib.pxi
    │   ├── _core.mediatransport.pxi
    │   ├── _core.pxd
    │   ├── _core.pyx
    │   ├── _core.referral.pxi
    │   ├── _core.request.pxi
    │   ├── _core.sdp.pxi
    │   ├── _core.sound.pxi
    │   ├── _core.subscription.pxi
    │   ├── _core.ua.pxi
    │   ├── _core.util.pxi
    │   ├── _core.video.pxi
    │   ├── _engine.py
    │   ├── _helpers.py
    │   └── _primitives.py
    ├── logging.py
    ├── lookup.py
    ├── payloads/
    │   ├── README.txt
    │   ├── __init__.py
    │   ├── addressbook.py
    │   ├── caps.py
    │   ├── cipid.py
    │   ├── commonpolicy.py
    │   ├── conference.py
    │   ├── datatypes.py
    │   ├── dialoginfo.py
    │   ├── dialogrules.py
    │   ├── directory.py
    │   ├── imdn.py
    │   ├── iscomposing.py
    │   ├── messagesummary.py
    │   ├── omapolicy.py
    │   ├── pidf.py
    │   ├── prescontent.py
    │   ├── presrules.py
    │   ├── resourcelists.py
    │   ├── rlmi.py
    │   ├── rlsnotify.py
    │   ├── rlsservices.py
    │   ├── rpid.py
    │   ├── watcherinfo.py
    │   ├── xcapcaps.py
    │   ├── xcapdiff.py
    │   └── xml-schemas/
    │       ├── addressbook.xsd
    │       ├── caps.xsd
    │       ├── cipid.xsd
    │       ├── common-policy.xsd
    │       ├── common-schema.xsd
    │       ├── conference.xsd
    │       ├── data-model.xsd
    │       ├── dialog-info.xsd
    │       ├── dialog-rules.xsd
    │       ├── im-iscomposing.xsd
    │       ├── imdn.xsd
    │       ├── oma-common-policy.xsd
    │       ├── oma-pres-content.xsd
    │       ├── patchops.xsd
    │       ├── pidf.xsd
    │       ├── pres-rules.xsd
    │       ├── resourcelists.xsd
    │       ├── rlmi.xsd
    │       ├── rlsservices.xsd
    │       ├── rpid.xsd
    │       ├── watcherinfo.xsd
    │       ├── xcap-caps.xsd
    │       ├── xcap-directory.xsd
    │       ├── xcapdiff.xsd
    │       └── xml.xsd
    ├── session.py
    ├── storage.py
    ├── streams/
    │   ├── __init__.py
    │   ├── msrp/
    │   │   ├── __init__.py
    │   │   ├── chat.py
    │   │   ├── filetransfer.py
    │   │   └── screensharing.py
    │   └── rtp/
    │       ├── __init__.py
    │       ├── audio.py
    │       └── video.py
    ├── threading/
    │   ├── __init__.py
    │   └── green.py
    ├── util/
    │   ├── __init__.py
    │   ├── _sha1.h
    │   └── _sha1.pyx
    └── video.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .boring
================================================
#
# Boring file regular expresions
#

~$
\#
(^|/)\.DS_Store$
(^|/)Thumbs\.db$
(^|/)core(\.[0-9]+)?$
\.(pyc|pyo|o|so|orig|rej|prof|bak|BAK|tmp|wpr|wpu|swp|swo|komodoproject)$

(^|/)\.idea($|/)
(^|/)\.komodotools($|/)
(^|/)_darcs($|/)
(^|/)autom4te.cache($|/)
(^|/)tags($|/)

^MANIFEST$
^build($|/)
^dist($|/)
^test($|/)
^sipsimple/core/_core.c$
^sipsimple/util/_sha1.c$


================================================
FILE: AUTHORS
================================================
Adrian Georgescu
Dan Pascu
Ruud Klaver
Denis Bilenko
Lucian Stanescu
Saúl Ibarra


================================================
FILE: LICENSE
================================================
Copyright: 2008-2020 AG Projects

License: GPL-3+

    This package is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 3 of the License, or (at your
    option) any later version.

    This package is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    For a copy of the license see https://www.gnu.org/licenses/gpl.html



================================================
FILE: MANIFEST.in
================================================
include AUTHORS
include LICENSE
include README
include MANIFEST.in

include build_inplace
include setup_pjsip.py

include sipsimple/payloads/xml-schemas/*.xsd
include sipsimple/util/_sha1.h

include debian/changelog
include debian/compat
include debian/control
include debian/copyright
include debian/dirs
include debian/docs
include debian/pycompat
include debian/pyversions
include debian/python-sipsimple.lintian-overrides
include debian/python-sipsimple-dbg.lintian-overrides
include debian/rules
include debian/source/format

recursive-include docs *
recursive-include deps *


================================================
FILE: README
================================================

SIP SIMPLE Client SDK
---------------------

Copyright (c) 2008-2020 AG Projects
http://ag-projects.com


Description
-----------

SIP SIMPLE client SDK is a Software Development Kit for easy development of
SIP end-points that support rich media like Audio, Video, Instant Messaging,
File Transfers, Desktop Sharing and Presence.  Other media types can be
easily added by using an extensible high-level API.

The software has undergone in the past years several interoperability tests
at SIPIT (http://www.sipit.net) and today is of industry strength quality.


Background
----------

SIP stands for 'Sessions Initiation Protocol', an IETF standard described by
RFC 3261. SIP is an application-layer control protocol that can establish,
modify and terminate multimedia sessions such as Internet telephony calls
(VoIP). Media can be added to (and removed from) an existing session.

SIP allows the endpoints to negotiate and combine any type of session they
mutually understand like video, instant messaging (IM), file transfer,
desktop sharing and provides a generic event notification system with
real-time publications and subscriptions about state changes that can be
used for asynchronous services like presence, message waiting indicator and
busy line appearance.


Features
--------

The library has cross platform capabilities on Linux OS, Mac OSX and
Microsoft Windows.  The library should work with minimal changes on any
platform that supports C and Python development environments.

The SDK is suitable for building end-points like SIP clients or SIP
Application Servers.  To see what the SDK is capable of, you can try Blink
from http://icanblink.com


General

 * Written in Python
 * Non-blocking asynchronous engine
 * Built-in configuration framework
 * TLS Security for signaling (SIP) and media (MSRP, XCAP)
 * Support for multiple SIP accounts
 * Multiple Media Types per Session (e.g. Video, Audio and IM)
 * Failover support for DNS lookups, SIP and MSRP routing
 * Implements re-INVITEs for adding and removing media streams
 * Automatically handling if IP Address changes
 * Audio conference bridge
 * Wav player and recorder
 * Acoustic Echo Cancelation
 * Answering machine
 * Wide-band Internet audio codecs: Opus and Speex
 * PSTN compatible codecs: G722, G711, iLBC, GSM
 * Video codecs: H.264, VP8

Supported media

 * Audio and Video (RTP/SRTP/ZRTP)
 * Instant Messaging (MSRP and its relay extension)
 * File Transfer (MSRP and its relay extension)
 * Screen Sharing (VNC over MSRP)

All media types can be combined together in the same SIP session.


Normative References
--------------------

SIP Signaling

 * SIP, Session Initiation Protocol (RFC 3261)
 * SDP, Session Description Protocol (RFC 4566)
 * An Offer/Answer Model with Session Description Protocol (SDP) (RFC 3264)
 * Reliability of Provisional Responses in Session Initiation Protocol (RFC 3262)
 * HTTP Authentication: Basic and Digest Access Authentication (RFC 2617)
 * The Reason Header Field for the Session Initiation Protocol (RFC 3326)
 * The Session Initiation Protocol (SIP) Refer Method (RFC 3515)
 * The Session Initiation Protocol (SIP) "Replaces" Header (RFC 3891)
 * Session Initiation Protocol (SIP) Call Control - Transfer  (RFC 5589)

Address Resolution

 * DNS resolution (RFC 3263)
 * Bonjour multicast DNS (draft-lee-sip-dns-sd-uri-03)

NAT Traversal

 * SIP Signaling: Symmetric Response Routing Symmetric media (RFC 3581)
 * RTP media (Audio and Video): ICE, Interactive Connectivity Establishment
   (RFC 5245)
 * MSRP media (Instant Messaging and File Transfer): MSRP protocol relay
   extension (RFC 4976)

Audio and Video

 * RTP, A Transport Protocol for Real-Time Applications (RFC 3550)
 * Real Time Control Protocol (RTCP) attribute in Session Description
   Protocol (SDP) (RFC 3605)
 * SRTP, The Secure Real-time Transport Protocol (RFC 3711)
 * Generation and parsing of telephone-events payload in both RTP and SDP
   (RFC 2833)
 * ZRTP: Media Path Key Agreement for Unicast Secure RTP (RFC 6189)

Instant Messaging

 * CPIM, Common Presence and Instant Messaging: (RFC 3862)
 * Session Initiation Protocol (SIP) Extension for Instant Messaging
   (RFC 3428)
 * MSRP Protocol (RFC 4975)
 * Indication of Message Composition for Instant Messaging (RFC 3994)
 * Message Summary Event Package (RFC 3842)
 * File Transfer (RFC 5547)

Screen Sharing

 * Variation of draft-garcia-mmusic-sdp-collaboration-00 using RFB over MSRP

Conferencing

 * Conference Event Package (RFC 4575)
 * A Framework for Conferencing with the Session Initiation Protocol (RFC 4353)
 * SIP Call Control - Conferencing for User Agents (RFC 4579)
 * MSRP ad-hoc multi-party chat sessions (RFC 7701)

Presence

 * SIP Specific Event Notification (RFC 3265)
 * SIP Extension for Event State Publication (RFC 3903) 
 * PIDF: Presence Data Model (RFC 3863, RFC 3379, RFC 4479)
 * Watcher-info Event Package (RFC 3857, RFC 3858)
 * Rich Presence Extensions to PIDF (RFC 4480)
 * Contact Information Extension to PIDF (RFC 4482)
 * User Agent Capability Extension to PIDF (RFC 5196) 
 * XCAP Protocol (RFC 4825)
 * Common Policy (RFC 4745)
 * Presence Rules (RFC 5025)
 * Resource Lists (RFC 4826)
 * RLS Services (RFC 4826)
 * PIDF manipulation (RFC 4827)
 * XCAP Diff (RFC 5874)
 * OMA Reference Release Definition for XDM v1.1 and Presence SIMPLE v1.1
   Implementation Guidelines
 * OMA XML  Document Management V1.1


Support
-------

The project is developed and supported by AG Projects. The support is
provided on a best-effort basis. "best-effort" means that we try to solve
the bugs you report or help fix your problems as soon as we can, subject to
available resources.

To request support you must use the mailing list available at

http://lists.ag-projects.com/mailman/listinfo/sipbeyondvoip

Patches and bug reports must be submitted by opening a ticket at

http://sipsimpleclient.org/projects/sipsimpleclient/issues

To open ticket please Register first.


Acknowledgments
---------------

SIP SIMPLE client SDK has been partly funded by the European Commission
under grant number FP7-IST-216217.



================================================
FILE: TODO
================================================
- If the SIP account password is changed on the server, then the client
  modifies some contact, xcap PUT will keep failing with 401 even after
  the password is reverted on the server. This will only be fixed by
  deactivating/reactivating the account or restarting the application.

- Warning header takes a code (300-399) a hostname (not user agent) and a
  message. Class allows any code (100-999) and we use engine.user_agent
  for the hostname where we use this header in session.py

- 202 is deprecated (see https://tools.ietf.org/html/rfc6665#page-43)

- After ICE negotiation completed we do not save state and later re-INVITEs
  can fail, we must send re-INVITE or UPDATE with chosen candidate

+ Allow resume of failed file transfers (a=file-range SDP attribute)

+ combine account.uri and account.contact into account.uri.aor and
  account.uri.contact. This will also remove the confusion between
  account.contact and account.contact_manager

+ change settings so they store changes in a thread local container
  which is made public (accessible for all threads) when save is called.
  This will make changes be atomic inside a thread (everything from 
  attribute changes up to the save operation is contained in the thread
  and will not mix with changes done in parallel from other threads).

+ there is a race condition that can prevent an account to start if it is
  created while the start method of SIPApplication runs and it passed the
  point where it called AccountManager.start. A quick workaround is to
  never create an account before SIPApplicationDidStart is posted

+ SIPApplication.start attempts to be restartable in case of errors, but
  there are cases where it may enter into a state where it will raise
  exceptions perpetually, even if the condition that led to the exception
  was fixed.

- allow deleting transport on SIPURI

- modify Invitation/Request/Subscription to reset transport on request_uri

- in application.py it subscribes to notifications but doesn't remove them
  when it stops

- End a session while in accepting state (requires session serialization)

- Model file transfer after desktop sharing (use handlers on termination)
  have internal/external handlers (notifications based or file bridges)

- Use an ordered dict for keeping accounts in the AccountManager ?!?
  see http://code.activestate.com/recipes/576693/

- send notifications when local/remote party becomes focus
  SIPSessionLocalPartyIsFocus, SIPSessionRemotePartyIsFocus

- have higher level notifications on conference events


To fix this exception:

sip:nwpsefvl@10.0.0.1:52067 52067
sip:nwpsefvl@10.0.0.1:52067 52067
sip:nwpsefvl@10.0.0.1;transport=tcp None
Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/twisted/internet/base.py", line 778, in runUntilCurrent
    call.func(*call.args, **call.kw)
  File "/usr/lib/pymodules/python2.5/eventlet/hubs/twistedr.py", line 158, in call_if_greenlet_alive
    return func(*args1, **kwargs1)
  File "/usr/lib/pymodules/python2.5/eventlet/proc.py", line 571, in _run
    result = function(*args, **kwargs)
  File "/home/dan/work/voip/python-sipsimple/sipsimple/account.py", line 683, in _handle_commands
    handler(command)
  File "/home/dan/work/voip/python-sipsimple/sipsimple/account.py", line 720, in _CH_register
    txtRecord=bonjour.TXTRecord(items=txtdata))
  File "/home/dan/work/voip/blink-qt/sipsimple/bonjour.py", line 1125, in DNSServiceRegister
TypeError: an integer is required

- Notification from SIPApplication when a transport is added/removed to the
  engine.
- SIPApplication should provide a list of supported transports that need to
  be used instead of the ones from settings because not everything enabled
  in settings may actually be available at runtime on the engine
- Build contacts on above notification instead of building them on the fly

- Use OpenH264 implementation
    - We need the binaries?!

- Ability to start stream deactivated / on-hold
    - VideoStream(direction='sendrecv') like MSRP?
    - Review stream API, s/deactivate/shutdown/ ?

- Open the camera at its native framerate



================================================
FILE: build_inplace
================================================
#!/bin/sh

python setup.py build_ext --inplace "$@"
test -d build && python setup.py clean



================================================
FILE: debian/changelog
================================================
python-sipsimple (3.6.0) unstable; urgency=medium

  * Added support for creating and parsing IMDN (RFC5438) documents
  * Fixed CPIM decode if envelope has content type message/imdn+xml

 -- Tijmen de Mes <tijmen@ag-projects.com>  Wed, 16 Jun 2021 15:04:04 +0200

python-sipsimple (3.5.1) unstable; urgency=medium

  * Do not run account delete inside green thread

 -- Adrian Georgescu <ag@ag-projects.com>  Sun, 10 Jan 2021 20:26:12 +0100

python-sipsimple (3.5.0) unstable; urgency=medium

  * Fixed issue with clients locking when using PulseAudio as input device
  * Fixed correctness and consistency issue with getting the display name
  * Use identity tests instead of equality tests for None
  * Fixed timer callback function signatures
  * Added support for digest passwords in credentials objects
  * Simplified setting attribute in init
  * Use an internal attribute for digest for symmetry with FrozenCredentials
  * Fix build with LibreSSL 2.7
  * Adapted the MSRP logger to the API changes in msrplib
  * Replaced parse_uri with the new URI.parse in msrplib
  * Added note about illegal character used by filetransfer MSRP extension
  * Use r-strings for regular expressions
  * Removed redundant parentheses
  * Added OffsetHeader type to encode/decode MSRP file offset headers
  * Changed how headers are added to MSRPData to be consistent
  * Use named attributes instead of tuple indexes when accessing byte_range
  * Preserve quoted arguments with build_inplace
  * Cleanup after build_inplace
  * Updated shebang line in setup.py
  * Updated debian build flags
  * Removed DH_VERBOSE definition in debian rules
  * Explicitly use python2 in shebang lines
  * Updated license and copyright years
  * Updated minimum version of debian dependencies
  * Increased debian compatibility level to 11
  * Increased debian standards version to 4.5.0

 -- Dan Pascu <dan@ag-projects.com>  Fri, 14 Feb 2020 12:46:51 +0200

python-sipsimple (3.4.2) unstable; urgency=medium

  * Fixed crash when using sha1 hmac with zrtp
  * Added __dir__ method to Engine to correctly reflect UA attributes
  * Updated windows installation instructions

 -- Dan Pascu <dan@ag-projects.com>  Tue, 26 Mar 2019 11:30:05 +0200

python-sipsimple (3.4.1) unstable; urgency=medium

  * Fixed cleanup of media stream when ending to avoid memory leak
  * Fixed inconsistency in session state at the time of posting notification
  * Fixed memory leak caused by out of order execution from race condition

 -- Dan Pascu <dan@ag-projects.com>  Wed, 27 Feb 2019 10:14:48 +0200

python-sipsimple (3.4.0) unstable; urgency=medium

  * Fixed attribute name in comparison
  * Added dialog_id property on the Session class
  * Added logic to handle early-only and RFC2543 style tags for Replaces
  * Avoid unnecessary list copy
  * Removed unnecessary boolean variable
  * Do not reset the proposed_streams attribute when the session is rejected
  * Reordered some operations for consistency
  * Make sure the greenlet attribute is always removed when greenlet exits
  * Removed code that duplicated cancel handling inside reject handler
  * Simplified RTPStreamEncryption properties
  * Ordered RTPStreamEncryption properties alphabetically
  * Fixed potential access to uninitialized variable
  * Removed unnecessary attribute from RTPStream
  * Fixed memory leak for unused streams that bleeded out audio resources
  * Fixed memory leak that did not release streams when canceling proposals
  * Use setter syntax for defining properties
  * PEP-8 compliance changes
  * Use set literals instead of set instances
  * Do not use mutable value for function default argument
  * Improved error message
  * Use local variable instead of instance attribute
  * Fixed right hand value in assignment
  * Use super when instantiating data types
  * Always clean up proposed streams when cancelling proposal
  * Added language_level for cython sources

 -- Dan Pascu <dan@ag-projects.com>  Mon, 25 Feb 2019 13:51:22 +0200

python-sipsimple (3.3.0) unstable; urgency=medium

  * Updated to support openssl-1.1 in pjsip and zrtp
  * Updated to support openh264-1.6+ in pjmedia
  * Removed duplicate declaration of pjmedia_dir enum in _core.pxd

 -- Dan Pascu <dan@ag-projects.com>  Wed, 12 Dec 2018 07:02:37 +0200

python-sipsimple (3.2.1) unstable; urgency=medium

  * Fixed building sipsimple when python-application is not installed

 -- Dan Pascu <dan@ag-projects.com>  Fri, 05 Oct 2018 18:57:56 +0300

python-sipsimple (3.2.0) unstable; urgency=medium

  * Shutdown already started subsystems if application is stopped early
  * Fixed a bug that would hang the application if the engine fails to start
  * Stop the engine thread on engine failure
  * Reset encryption type when the RTP stream ends
  * Use a named logger for sipsimple logging
  * Use modern syntax for catching exception
  * Removed underscore prefix from argument name
  * Fixed typo in notification name
  * Order imports alphabetically
  * Import statement cleanup
  * Removed obsolete build option
  * [core] Removed unnecessary local variables
  * [core] Removed test for failures that cannot happen
  * [core] Fixed the transport being used within an incoming SUBSCRIBE dialog
  * [core] Removed unnecessary semicolon at the end of statement
  * [core] Added missing cdef statement
  * [core] Minimize releasing/acquiring the GIL
  * [core] Propagate exceptions
  * [core] Undo setting incoming subscription transport as it conflicts
  * [core] Removed unused code from setting transport
  * Use the new logging API in python-application 2.5.0
  * Fixed compiling with newer ffmpeg
  * Removed duplicate dependency
  * Update macOS installation instructions
  * Added deb building instructions for Rasberry Pi
  * Removed copyright notices from install files
  * Updated copyright years
  * Replaced deprecated debian package priority
  * Switched from dbg package to dbgsym package

 -- Dan Pascu <dan@ag-projects.com>  Fri, 05 Oct 2018 17:01:31 +0300

python-sipsimple (3.1.1) unstable; urgency=medium

  * Fix processing audio / video SDPs with non numeric formats
  * Document how to compile ffmpeg without SecureTransport
  * Removed obsolete pycompat/pyversions files
  * Updated debian uploaders
  * Updated debian standards version
  * Simplified condition
  * PEP-8 compliance changes
  * Improved object representation
  * Simplified building the Route's URI
  * Made output from Route.__str__ be consitent with SIPURI.__str__
  * Fixed debian build dependency for libssl
  * Updated copyright years
  * Increased debian compatibility level to 9
  * Removed unnecessary phony targets
  * Updated debian copyright
  * Updated debian package description
  * Fixed python-sipsimple-dbg dependencies
  * Simplified debian build and fixed missing module in the debug package

 -- Dan Pascu <dan@ag-projects.com>  Fri, 05 May 2017 17:29:13 +0300

python-sipsimple (3.1.0) unstable; urgency=medium

  * Update Opus to version 1.1.2
  * pjsip: fix handling empty re-INVITE requests
  * Updated dependency versions
  * Improved MANIFEST.in
  * Removed build time dependency on python-application
  * Updated building documentation
  * Added interface for scheduling functions to run in a thread
  * Added fake xcap settings to the BonjourAccount
  * Fix race conditions when processing ICE callbacks
  * Ignore NAPTR and SRV timeouts when doing DNS lookups
  * Fixed setting Referred-By header

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 18 Oct 2016 01:28:40 +0200

python-sipsimple (3.0.0) unstable; urgency=medium

  * Added OTR encryption support in the chat stream
  * Use openfile where we need control over the file creation
  * Use defaultweakobjectmap defined in python-application
  * Simplified verifying the transferred file's hash
  * Added FileSelectorHash class to simplify code and improve readability
  * Fixed recovering session state in certain failure conditions
  * Do not wait for notifications if we couldn't notify transfer progress
  * Capture unhandled exceptions and log errors from new_from_sdp
  * Capture errors while parsing the file selector
  * Handle the MedisStreamDidNotInitialize notification when adding streams
  * Read code and reason from the notification when posting SIPSessionDidFail
  * Don't rely on the failure reason being set for failed transfers
  * Modified the SimplePayload and CPIMPayload to only work with bytes
  * Handle parsing errors for is-composing documents
  * Added package info module
  * Fixed MediaStreamBase not posting MediaStreamDidNotInitialize sometimes
  * Remove transfer_source from notifications
  * Set transfer origin to the remote identity if Referred-By is missing
  * Don't add a Referred-By header if it wasn't specified
  * Handle exception when closing a file that is being read in another thread
  * Prevent Session.transfer from being called while a transfer is in progress
  * Changed default transfer reject code from 486 (Busy) to 603 (Decline)
  * Protect SIPPublicationWillExpire from being called by an older publication
  * Handle race condition where state is SameState for initial PUBLISH
  * Remove bundled RFC/draft files
  * zrtp: prefer standard AES to Twofish cipher
  * Log Engine failures using application.log
  * Set locks to NULL after destroying them
  * pjsip: fix compilation warnings with recent versions of FFmpeg
  * pjsip: removed unused files
  * pjsip: update to revision 5249
  * Always build pjsip in non-debug mode
  * Avoid running timers if subscription dialog was destroyed
  * Suppress some compilation warnings
  * Avoid lockups on Engine shutdown
  * Post notification when SIPApplication gets a fatal error

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 08 Mar 2016 12:46:06 +0100

python-sipsimple (2.6.0) unstable; urgency=medium

  * pjsip: fix crash when TLS transport is reset while data is being sent
  * Switched is-composing failure_report to no
  * Refactor CPIM envelope usage
  * Enable lrint functions on Opus
  * Refactored sipsimple.streams package structure
  * Changed MediaStreamRegistry from being a class to being an instance
  * Added prefer_cpim boolean class attribute to ChatStream
  * Fixed stripping data in the MSRP trace
  * Only post chat delivery notifications when notify_progress is True
  * Do not post MediaStreamDidNotInitialize twice in some cases
  * Fixed file transfer failure reasons
  * Prefer CPIM for chat messages for the time being
  * Fixed Registrar/Publisher getting stuck under certain conditions

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 04 Dec 2015 12:15:35 +0100

python-sipsimple (2.5.1) unstable; urgency=medium

  * Fixed opening files in binary mode when using os.open
  * pjsip: enumerate supported resolutions in AVF video backend
  * pjsip: fix opening camera with the right resolution on AVF backend
  * Made stream fetch the local uri from the MSRP transport or connector
  * Updated dependency to latest python-msrplib
  * Return the ZRTP peer id as is and let the application format it as it
    needs

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 28 Aug 2015 12:59:49 +0200

python-sipsimple (2.5.0) unstable; urgency=medium

  * Added VP8 video codec support
  * Added basic RTCP PLI support, used for requesting keyframes
  * Fixed crash when handling bogus Opus packets
  * Simplified registering audio codecs in the core
  * Handle socket errors when fetching XCAP documents
  * Fixed several compilation warnings
  * Added python-application as a build dependency
  * Fixed getting file offset on Windows

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 10 Jun 2015 13:57:35 +0200

python-sipsimple (2.4.0) unstable; urgency=medium

  * Refactor file transfers and add resume support
  * Interrupt stream.initialize if session is cancelled
  * Add ISIPSimpleApplicationDataStorage interface
  * Adapt to API changes in MSRPlib
  * Simplified RTP streams initialization code

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 29 Apr 2015 12:05:30 +0200

python-sipsimple (2.3.1) unstable; urgency=medium

  * Report sent but unconfirmed chat messages as not delivered
  * Don't stop and start video ports when accessing the tee
  * Compile PJSIP with -fno-omit-frame-pointer
  * Updated Windows compilation instructions
  * pjsip: fix compilation of ZRTP library on Windows
  * pjsip: don't run AVFoundation functions in the main thread
  * pjsip: make the video tee thread-safe
  * pjsip: remove tons of unneeded code

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 25 Mar 2015 12:40:20 +0100

python-sipsimple (2.3.0) unstable; urgency=medium

  * Added ZRTP support
  * Add setting for opportunistic SRTP encryption
  * Fix Opus SDP encoding
  * Reject video streams without a profile-level-id attribute
  * Renamed RTP stream related notifications
  * Renamed audio stream recording related notifications
  * Fix setting FFmpeg libraries path in some cases on OSX
  * Fix posting ICE state change notifications
  * Fix sending initial keyframes when ICE is used
  * Run _send_keyframes on the Twisted thread
  * Add ability to override the sender for chat messages
  * pjsip: fix rendering on OSX
  * pjsip: avoid crashes on OSX if video size changes
  * Work around issue with the RTP transport lock being hold for too long
  * Stop the VideoTransport in the device-io thread
  * Removed caching of statistics on the RTP transports when stopping
  * Fix draining the message queue in ChatStream
  * Post SIPApplicationWillStart before starting the core
  * Make SIPApplication start / stop consistent
  * Fix race conditions when handling SIPApplication.state
  * Avoid exceptions when un-pickling XCAP journal
  * Add chatroom_capabilities property to ChatStream

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 17 Mar 2015 09:27:02 +0100

python-sipsimple (2.2.0) unstable; urgency=medium

  * Make sure ICE status change notification is only sent while waiting for it
  * Listen for notifications on the RTPTransport until the stream ends
  * pjsip: skip all surround device configurations in ALSA backend
  * Hold the stream lock just for checking / changing states
  * Adapt to API change in MSRPLib
  * Refactor message handling in ChatStream
  * Check remote supported content types in ChatStream
  * Update supported types in ChatStream
  * Raised python-msrplib version dependency

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 26 Jan 2015 12:59:03 +0100

python-sipsimple (2.1.1) unstable; urgency=medium

  * Add a base class for Audio and Video streams
  * Add / support file-transfer-id SDP attribute to FileTransferStream
  * Refactor video pausing capability
  * Relax handling some errors in the core
  * Compile PJSIP with -O2 optimization

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 05 Jan 2015 12:36:56 +0100

python-sipsimple (2.1.0) unstable; urgency=medium

  * Use the Engine IP address also for media
  * Extend Session.connect and Session.accept with an extra_headers parameter
  * Do not reset the Echo Canceller unless the audio stream changes direction
  * Also call stream.update on the remaining streams when removing streams
  * Fix unnecessarily waiting for a timeout on Session.reject_proposal

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 05 Dec 2014 13:26:06 +0100

python-sipsimple (2.0.0) unstable; urgency=medium

  * Add video support (H264 codec)
  * Add support for handling initial INVITE requests without SDP
  * Restart TCP and TLS transports when network conditions change
  * Reuse disabled SDP streams
  * Fix parsing makefile options
  * Fix linking with OSX frameworks
  * Unregister and unpublish when network conditions change, before restarting
  * Leave symbols in even on release builds
  * Fix not ending streams in some cases when Session.remove_streams fails
  * Make stream initialization and ending consistent
  * Report stream failure in MediaStreamDidEnd
  * Add ExponentialTimer helper class to util
  * Improved handling failures when processing remote proposals
  * Reply with 488 if a remote SDP offer has deleted streams
  * Fix race conditions when handling remote proposals
  * Refresh SRTP crypto lines when updating local SDP
  * Simplify code for obtaining the path to the OSX SDK
  * Use 488 code when a proposal with streams fails
  * Use timezone aware timestamps for Session start_time and stop_time
  * Parse and generate bandwidth info attributes (b=) on the SDP
  * Include address information with the MSRPTransportTrace notification
  * Use SSLv23 method for TLSi (SSLv2 and SSLv3 are disabled)
  * Updated bundled PJSIP to revision 4961
  * Make sure a removed stream always has a connection line
  * Remove bandwidth attributes when disabling a stream
  * Reject incoming re-INVITE if we couldn't reply to it
  * Fix setting SDP connection line when accepting a proposal

 -- Saul Ibarra <saul@ag-projects.com>  Thu, 20 Nov 2014 18:30:35 +0100

python-sipsimple (1.4.2) unstable; urgency=medium

  * Avoid recompiling the whole PJSIP every time the core is recompiled
  * Fix encoding when expanding user home path
  * Made the XMLDocument schema path configurable

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 28 Jul 2014 13:51:42 +0200

python-sipsimple (1.4.1) unstable; urgency=medium

  * Close external VNC viewer socket when the stream has ended
  * Don't try to set TLS options if there is no default account
  * Increased the connect timeout for external screen sharing handlers

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 27 Jun 2014 09:43:19 +0200

python-sipsimple (1.4.0) unstable; urgency=medium

  * Add support for adding/removing multiple streams at once
  * Refactored SDP handling
  * Send re-INVITE after ICE negotiation is done
  * Refactored API for creating screen sharing streams and handlers
  * Enable RTP keep-alive using empty RTP packets
  * Disabled speex codec by default
  * Fixed race condition when saving ICE state
  * Made the VNC handler connection timeout a class attribute
  * Allow the default VNC server and viewer handlers to be configurable
  * Fix closing media transport to avoid leaking STUN sockets
  * Store our Python object in the user_data field of pjmedia_transport
  * Simplified srtp_active property
  * Make ice_active property dynamic
  * Make sure session state and proposed_streams are set to correct values
    when processing proposals
  * Use a shorter timeout for re-INVITEs that need to be answered without user
    interaction
  * Silence unused-function warning caused by cython

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 28 May 2014 11:51:06 +0200

python-sipsimple (1.3.0) unstable; urgency=medium

  * Initialize core from main thread
  * Add AudioStream.recorder property and remove obsolete ones
  * Allow AudioStream.start_recording to be called early
  * Ensure MediaStreamDidEnd is always posted for MSRP streams
  * Fixed cancel_proposal when no streams were proposed
  * Fixed setting proposed streams on hold when holding during a re-INVITE
  * Fixed originator for SIPSessionProposalRejected
  * Fixed pickling for some core objects
  * Fixed compilation with latest Cython version
  * Fixed processing AudioPortDidChangeSlots if bridge was stopped
  * Avoid sending failure reports for MSRP keep-alive chunks
  * Avoid resetting greenlet when session is about to end or cancel a proposal
  * Removed unused tls_timeout configuration parameter
  * pjsip: don't compile libmilenage

 -- Saul Ibarra <saul@ag-projects.com>  Thu, 10 Apr 2014 14:55:40 +0200

python-sipsimple (1.2.1) unstable; urgency=medium

  * Handle errors when sending hold/unhold requests
  * Fix crash if sdp_done callback is processed too late
  * Make sure code and reason are always set when state is disconnected
  * Stop AudioStream bridge when deactivating stream
  * pjsip: fixed compilation warning
  * pjsip: fix build on Windows

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 05 Mar 2014 15:03:20 +0100

python-sipsimple (1.2.0) unstable; urgency=medium

  * pjsip: updated bundled version to revision 4738
  * pjsip: return base address as ICE transport address
  * Use 101 as the telephone-event payload type
  * Always open file in binary mode for file transfers
  * Accept unicode in SIPURI objects
  * Avoid exceptions in IncomingSubscription.end
  * End session if an unrecoverable error happens in remove_stream
  * Initialize transport to None in MSRPStreamBase.__init__
  * Fixed compile warnings with Cython 0.20
  * Post NetowrkConditionsDidChange if system IP address changes or the DNS
    Manager changes the resolvers
  * Fake ICE gathering states since we might get them too early
  * Use 127.0.0.1 for bonjour when the default IP address is not available

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 19 Feb 2014 13:22:57 +0100

python-sipsimple (1.1.0) unstable; urgency=medium

  * Updated opus codec to version 1.1
  * Cleanup opus.c and fix compilation warnings
  * Always put useinbandfec in SDP for opus codec
  * Relax codec matching when doing SDP negotiation
  * Use single global c line when creating SDP
  * Added function to manually refresh sound devices
  * Added trace_msrp setting
  * Fixed SIP and PJSIP logging
  * Fixed not posting state change notifications for different provisional
    responses
  * Changed notification API for renegotiating streams
  * Renamed streams to proposed_streams on SIPSessionNewProposal
  * Renamed streams to proposed_streams on SIPSessionHadProposalFailure
  * Added audio.muted runtime setting to SIPSimpleSettings
  * Post SIPApplicationWillEnd even if Engine failed
  * Renamed MediaStreamRegistrar to MediaStreamType
  * Properly handle mutex creation failures
  * Added missing context attribute to MediaStreamDidFail notification
  * Fixed memory leak by initializing the handler after the stream initialized
  * Moved AudioConference to audio module
  * Added helper functions to allocate and release memory pools
  * Create null sound port only once and reuse it
  * Simplified audio device fallback code
  * Fixed crash when in-dialog request fails to be sent within a subscription
  * Properly patch dnspython to make it nonblocking
  * Added initial_delay to WavePlayer, replacing initial_play
  * Always use timezone aware timestamps in MSRP streams
  * Make sure MSRPlib always gets bytes, not unicode
  * Always return unicode as the received chat message body
  * Post SIPEngineGotException also if Engine fails to start
  * Make send_composing_indication refresh argument optional
  * Return default refresh value in ChatStreamGotComposingIndication if not
    specified
  * Don't set last active timestamp automatically
  * Always pass copies of stream lists in Session notifications
  * Don't compile WebRTC AEC if machine is not x86 or x86_64
  * Raised Cython version dependency to 0.19.0
  * Cleanup Cython imports and remove no longer needed workarounds

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 13 Dec 2013 13:45:31 +0100

python-sipsimple (1.0.0) unstable; urgency=low

  * Updated core to PJSIP 2
  * Added gain control and high pass filter to audio processing
  * Added Opus codec support
  * Added support for RFC5768 (ICE option tag)
  * Added enabled setting for echo canceller and echo_canceller settings group
  * Fixed echo cancelling when using 32kHz sample rate
  * Always disable sound device when idle
  * Removed unused ignore_missing_ack feature
  * Removed engine shutdown workaround
  * Removed TLS protocol setting
  * Removed NAT detector from SIPApplication
  * Don't cap codecs based on sample rate, let PJSIP resample
  * Disabled narrowband speex
  * Fixed starting media stream if ICE fails early
  * Don't reset stream statistics, always report absolute values
  * Don't add BonjourAccount to AccountManager if there is no bonjour support
  * Set session state to terminated when ended before starting
  * Prevent PJSIP from switching transports automagically
  * Dropped support for Python 2.6

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 09 Aug 2013 11:17:47 +0200

python-sipsimple (0.35.0) unstable; urgency=low

  * Added default URI implementation for contacts
  * Added extension to PIDF to include the status type
  * Added ItemCollection settings type
  * Added RuntimeSetting to the configuration framework
  * Publish instance id over Bonjour
  * Refactored bonjour discovery notifications
  * Return SIP Request headers in SIPMessageDidFail and SIPMessageDidSucceed
    notification data
  * Removed unnecessary end method on Message
  * Fixed building XML schemas on all platforms
  * Fixed parsing sip.instance from a REGISTER reply
  * Fixed compilation with Cython 0.19
  * Fixed posting PublicationDidSucceed after a failure
  * Catch ValueError when parsing XML documents

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 26 Jun 2013 16:08:30 +0200

python-sipsimple (0.34.0) unstable; urgency=low

  * Added Bonjour presence
  * Added presence subscriber for itself to Account
  * Added SDPNegotiator class
  * Added ability to properly stringify SDPSession objects
  * Added ability to parse a SDPSession object from a string
  * Disable PJSIP assertions on recoverable errors
  * Removed extra checks on SDP origin field
  * Fixed deadlock when cross instantiating conditional singletons
  * Avoid sending adding participant progress if the answer is final
  * Avoid doing mDNS lookups with dnspython
  * Define __nonzero__ for XCAP Document objects
  * Made AddressbookManager.transaction a class method

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 19 Mar 2013 11:31:27 +0100

python-sipsimple (0.33.0) unstable; urgency=low

  * Added notification when incoming subscription times out
  * Added call_id attribute to Subscription and IncomingSubscription
  * Allow incoming subscriptions to have expires 0
  * Fixed session transfer after API changes
  * Fixed setting initial timeout for incoming subscriptions
  * Renamed desktop-sharing media type to screen-sharing
  * Provide direct access to stream types on MediaStreamRegistry
  * Post notifications about removed neighbours when stopping bonjour services
  * Only set reason for NOTIFY if state is terminated

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 25 Jan 2013 16:22:05 +0100

python-sipsimple (0.32.0) unstable; urgency=low

  * Fixed updating local SDP direction if answer is inactive
  * Fixed test for supported audio codecs
  * Adjusted pres-rules auid to org.openmobilealliance.pres-rules
  * Removed icon alternative location since it was custom and is now unused
  * Use digits only for contact usernames to improve interoperability
  * Disable NAT detection
  * Allow more types to be directly used as configuration data types

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 11 Jan 2013 12:03:11 +0100

python-sipsimple (0.31.1) unstable; urgency=low

  * Terminate session if a stream fails and can't be removed from the session
  * Removed extended-away state from PIDF extension
  * Fixed setting local hold state after direction was inactive
  * Prevent account's activate/deactivate methods to run at the same time
  * Fixed race conditions when deleting an account
  * Fixed some lintian warnings

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 28 Nov 2012 12:37:01 +0100

python-sipsimple (0.31.0) unstable; urgency=low

  * Refactored streams and account relationship
  * Added Supported header indication for GRUU on REGISTERs
  * Allow extra headers to be passed to Registration
  * Don't use GRUU for conference subscriptions and referrals
  * Fixed XML datatypes for CIPID extensions
  * Fixed sending extra headers when unsubscribing
  * Fixed parsing RLS NOTIFY fayload if advertised CID is not present
  * Fixed thread safety issues with ChatStream functions
  * Moved identity attributes from MSRPStreamBase to ChatStream

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 26 Oct 2012 12:33:23 +0200

python-sipsimple (0.30.1) unstable; urgency=low

  * Allow unicode filenames on WaveFile and RecordingWaveFile
  * Fixed handling stream hold edge cases
  * Fixed unitialized variable error when using Cython >= 0.15

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 17 Sep 2012 11:46:56 +0200

python-sipsimple (0.30.0) unstable; urgency=low

  * Added PUBLISH for presence and dialog events
  * Added SUBSCRIBE using RLS for presence and dialog events
  * Added SUBSCRIBE for presence.winfo and dialog.winfo events
  * Added handing for RLS NOTIFYs for presence and dialog events
  * Added Offline Presence capability using XCAP pidf-manipulation
  * Added Icon Storage using XCAP oma-pres-content
  * Added Presence policy management using XCAP oma-common-policy
  * Added Addressbook with Presence enabled Contacts
  * Added MSRP Switch NICKNAME support
  * Added GRUU support (RFC 5627)
  * Added ability to configure SIP loop detection
  * Refactored XML payloads framework and datatypes
  * Refactored the XCAP manager and its API
  * Refactored contact management into addressbook management
  * Refactored interaction between the account and its handlers
  * Fixed building sipfrag payloads
  * Fixed crash when bogus G722 payload is received
  * Fixed crash on SDP version overflow
  * Fixed removing a stream if a negative response was received
  * Fixed engine failure on bogus incoming REFER requests
  * Fixed crash on RTCP decryption when using SRTP
  * Fixed handling re-INVITEs with empty body
  * Fixed subscribing to conference event from Bonjour account
  * Reply with 200 OK to in-dialog OPTIONS requests
  * Support hostnames in STUN servers list
  * Skip processing bogus NOTIFY requests
  * Honor Min-Expires header for REGISTER requests
  * Adapted to eventlet package rename
  * Raised dependency on msrplib and xcaplib due to API changes

 -- Saul Ibarra <saul@ag-projects.com>  Thu, 06 Sep 2012 18:13:17 +0200

python-sipsimple (0.20.0) unstable; urgency=low

  * Refactored XML document manipulation framework and payloads
  * Added screen image extension to User from conference
  * Accumulate chunks in ChatStream if they were segmented
  * Do not assume content type is text in CPIM messages
  * Validate participant URI when inviting to a conference
  * Fixed race condition when stopping uninitialized MSRP stream
  * Add reason attribute to notification data for SIPSessionTransferDidFail
    when rejecting
  * Fixed handling incoming call transfer failures
  * Dropped support for Python 2.5
  * Fixed issue with notifications being posted in the wrong order
  * Updated build instructions

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 19 Dec 2011 14:34:44 +0100

python-sipsimple (0.19.0) unstable; urgency=low

  * Added Contact Management API
  * Integrated XCAP manager into Account
  * Added WebRTC AEC
  * Added Call Transfer support
  * Refactored PJSIP build process to avoid using svn
  * Allow TLS MSRP transport also for Bonjour accounts
  * Allow account to be restartable
  * Added ability to query the system default device name
  * Added the ability to get the old value of a setting
  * Added the ability for an XMLApplication to unregister a namespace
  * Added XCAPTransaction context manager for XCAPManager transactions
  * Workaround lxml exception when unicode strings contain encoding
    declaration
  * Automatically singleton-ize SettingsObject subclasses with static IDs
  * Avoid processing notification if audio bridges are not created yet
  * Fixed passing headers dictionary to subscription callback
  * Fixed getting Subscription-State header parameters
  * Fixed handling bogus responses to SUBSCRIBE requests
  * Call the notification handlers in the appropriate threads in
    application.py
  * Execute function immediately if already in the requested thread
  * Fixed parsing Refer-To header
  * Fixed __eq__ methods to properly compare with unknown type objects
  * Added the missing __ne__ methods to all the classes defining __eq__
  * Avoid setting sound devices if none was removed
  * Handle error if remote ends session while we try to end it as well
  * Fixed race condition when reading/using the invitation state in
    Session.end
  * Added the ability to specify fallback policies when adding an XCAP contact
  * Fixed bug that changed empty strings into None when loading configuration
  * Terminate conference subscription at the same stage if session failed or
    ended
  * Consider XCAP applications unsupported until proven otherwise
  * Set default register interval to 3600
  * Apply changes to audio tail_length in realtime
  * Don't fail to start audio device if starting the EC fails
  * Reset stream statistics after retrieving them

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 16 Sep 2011 10:52:41 +0200

python-sipsimple (0.18.2) unstable; urgency=low

  * Added compatibility with Python 2.7
  * Adapted code for Cython >= 0.13
  * Don't depend on the debug interpreter, recommend it
  * Removed unused SSL methods
  * Removed use of pysupport, use dh_python2 instead
  * Updated import paths for Null and Singleton for latest python-application
  * Fixed race condition that resulted in multiple bonjour accounts

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 08 Jun 2011 09:11:50 +0200

python-sipsimple (0.18.1) unstable; urgency=low

  * Added push file transfers (RFC5547)
  * Implemented support for MSRP ACM (RFC6135)
  * Added file transfers information to conference event package
  * Fixed string representation of SIP URIs with special characters
  * Implemented multi-level key based access to configuration objects
  * Log exceptions that occur while saving the configuration when deleting
  * Fixed SDP negotiation on bogus answer
  * Remove SDP attributes when a stream is disabled
  * Added format list validation for MSRP streams
  * Added DuplicateIDError to replace ValueError for duplicate ID's
  * Post notifications when settings objects are created/deleted
  * Protect AccountManager.load_accounts against being called multiple times
  * Removed internal AccountManager methods for adding/removing accounts
  * Refactored API to provide storage backends to SIPApplication
  * Start accounts in parallel
  * Protect Session.end against being called multiple times
  * Don't instantiate DNS resolver if no DNS query will be done
  * Break circular reference between streams and Session

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 23 May 2011 16:34:20 +0200

python-sipsimple (0.18.0) unstable; urgency=low

  * Added support for out-of-dialog REFER
  * Added add/remove participants functionality to Session
  * Added support for Subject header
  * Fixed accepting incoming subscription without any initial content
  * Fixed exception when NAT type detection is attempted without connectivity
  * Fixed conference event subscription for Bonjour account
  * Fixed exceptions when contact URI can't be built for the desired route
  * Fixed subscription locking issues
  * Set remote focus on incoming session, if applicable
  * Fixed building header body with parameters without value
  * Fixed building UAC and UAS dialogs when headers contain parameters
  * Fixed setting contact header parameters for subscription
  * Hide route header for outbound SUBSCRIBE requests
  * Fixed crashes and increased resilience when connectivity is lost
  * Fixed exception classes not to update their internal dict
  * Relax check on SDP origin to increase interoperability
  * Save XCAP journal after each committed operation to avoid loosing it
  * Reset XCAP journal when account id changes
  * Don't use contact URI when building conference Referral and Subscription
  * Fixed bug where settings with dynamc IDs were not saved in some cases

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 18 Mar 2011 17:00:29 +0100

python-sipsimple (0.17.1) unstable; urgency=low

  * Simplified FileSelector interface and interaction with the application
  * Fixed Timestamp formatting with offset-aware datetime objects
  * Return unicode for username and fullname from sipsimple.util.user_info
  * Made display_name on accounts support unicode
  * Fixed CPIMIdentity parsing to be unicode aware
  * Changed SIP headers to handle unicode display names
  * Made Path datatype inherit from unicode
  * Simplified disconnect reason on failures
  * Fixed exception when the session is ended on error conditions
  * Fixed support for audio devices containing unicode symbols in their name
  * Fixed detecting backslash in regex
  * Added request_uri attribute to Invitation

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 16 Feb 2011 14:25:28 +0100

python-sipsimple (0.17.0) unstable; urgency=low

  * Added blocking API to WavePlayer
  * Added peer_address attribute to all request objects
  * Do not enforce transport on request URI from route
  * Fixed crash on IncomingRequest deallocation
  * Simplified and made account contact management consistent
  * Fixed conference payload to accept multiple Media elements
  * Build PJSIP with debugging symbols, if specified
  * Fixed parsing conference-info payload
  * Removed handling of impossible invitation state transition
  * Wait for things to stabilize for bonjour after returning from sleep
  * Don't send SIPSessionDidFail in end if state is None
  * Only handle records in the local. domain for bonjour
  * Added ability to compute a FileSelector's file hash later
  * Added AudioStreamDidTimeout notification
  * Make request_uri the first argument for Request object
  * Added remote_contact_header attribute to Invitation
  * Added generation of -dbg debian package
  * Fixed exception when an empty SEND is received in the MSRP stream
  * Added request_uri attribute to Invitation and Subscription
  * Added conference event support to Session
  * Added recipients to ChatStreamGotComposingIndication notification
  * Added remote_media attribute to MSRP streams
  * Fixed private chat message detection
  * Send 500 response if we fail to create incoming invitation
  * Added lock to IncomingSubscription and released GIL where appropriate
  * Terminate incoming subscription if NOTIFY got 408, 481 or 7xx
  * Handle local timeout for outgoing NOTIFY requests in IncomingSubscription
  * Interrupt commands instead of killing and restarting greenlets
  * Only refresh subscription on events if we already have one
  * Properly schedule events after system is stable when waking up from sleep
  * Added missing notification handlers in XCAPManager for system events
  * Properly perform NAT detection considering all system event triggers
  * Allow Command to send specific results and also propagate exceptions
  * Fixed UTC offset in Timestamp class
  * If the received chat doesn't have a timestamp, build it offset-aware
  * Added python-dateutil dependency
  * Added build time dependency on cython-dbg
  * Reverted wrong changes and made xcap manager test script work again
  * Fixed race conditions in subscription handlers
  * Don't have XCAPManager as a singleton to avoid retaining the account
    forever
  * Terminate session conference subscription on SIPSessionWillEnd
  * Reduced subscription retry interval on fatal failures
  * Fixed receiving empty SEND in file transfer stream

 -- Saul Ibarra <saul@ag-projects.com>  Thu, 27 Jan 2011 13:56:55 +0100

python-sipsimple (0.16.5) unstable; urgency=low

  * Fixed matching of media codecs on incoming calls
  * Allow ip_address to be specified on engine start
  * Fixed accepted types checking when using CPIM
  * Fixed CPIM support detection
  * Generate InvalidStreamError if no compatible payload types are found
    in ChatStream
  * Added nameservers used for lookup to the DNSLookupTrace notification
  * Added InterruptCommand exception
  * Added DNS resolver autodetection capabilities
  * Made accessing to the transport parameter of a SIP URI easier
  * Fixed TLS transport initialization
  * Fixed XCAPManager shutdown
  * Adapt XCAPManager test script to changes in the middleware
  * Handle ConnectionLost error in XCAPManager
  * Only use fallback candidate list as the last resort
  * Avoid creating a external reference on the subscriptions lists
  * Avoid moving external references to resource-lists toplevel
  * Don't initialize XCAPManager if the server doesn't support certain auids
  * Reset cached documents if XCAP root changes
  * Added ThreadManager and moved thread related stuff from util to threading
  * Reformatted some module docstrings
  * Made configuration thread safe
  * Automated finding python packages in setup.py
  * Updated documentation

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 14 Dec 2010 16:57:07 +0100

python-sipsimple (0.16.4) unstable; urgency=low

  * Fixed accessing Message-Account in MWI payload as it could be None
  * Fixed building codec list when rtpmap line is missing
  * Match codec names case insensitive

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 30 Nov 2010 10:32:03 +0100

python-sipsimple (0.16.3) unstable; urgency=low

  * Changed some option defaults to False
  * Do not impose limits on the subscription interval
  * Added all parsed SIP headers to SIPEngineGotMessage notification
  * Refactored bonjour code to be more efficient and handle all use cases
  * Fixed crash when parsing Retry-After header
  * Fixed MSRP chunk transaction status callback
  * Set the response code and reason when outgoing session times out
  * Don't answer SUBSCRIBE while deallocating
  * Fixed crash when Content-Type header is missing for MESSAGE
  * Do not create an audio stream if not compatible codecs are found
  * Created ContentType object for representing content type in notifications
  * Added extra attributes to SIPSubscriptionGotNotify notification
  * Fixed race condition in Session that caused exceptions in some situations

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 26 Nov 2010 15:18:48 +0100

python-sipsimple (0.16.2) unstable; urgency=low

  * Fixed memory and file descriptor leaks in BonjourServices
  * Added notifications for Bonjour discovery failures
  * Refactored Bonjour re-discovery after settings change
  * Ignore TLS contacts if the Boujour account doesn't have a certificate
  * Refresh MWI subscription if always_use_my_proxy setting changes
  * Use always_use_my_proxy setting for MWI subscriptions
  * Set minimum time for refreshing a subscription to 30 seconds
  * Wait for 3 hours if MWI subscription fails instead of stopping it
  * Fixed bonjour discovery when SIP transport list is changed
  * Made accounts also listen for config changes from SIPSimpleSettings
  * Do not return routes with unsupported transport from the DNS lookup
  * Set MSRPRelayAddress setting default port to 2855
  * Moved server_advertised_uri attribute to the mwi handler
  * Added reregister method on Account
  * Added reactivate methods for registrar and mwi
  * Prefer the server advertised voicemail URI over the user setting
  * Added account.sip.always_use_my_proxy setting
  * Use None when the server advertised voicemail URI is an empty string
  * Reset the server advertised voicemail URI when MWI is disabled
  * Fixed handling of multiple settings changed at the same time
  * Remove sip: from the server advertised voicemail uri when saving it
  * Use capital case letters for acronyms
  * Remove transport_list setting from BonjourAccount
  * Reset bonjour neighbours on account deactivation
  * Turn off ICE by default
  * Limit PJSIP log level setting value between 0 and 5 to avoid crashes
  * Fixed handling of Account id change in AccountManager
  * Fixed handling of the id change of an Account and other SettingsObjects
  * Made XCAPManager not transition to insync if journal is not empty
  * Made audio device settings strings and removed unnecessary empty subclases
  * Made SampleRate only accept valid rates
  * Added SIPAccountWillActivate and SIPAccountWillDeactivate notifications
  * Set XCAP User-Agent on application start
  * Use xml.xsd from local folder instead of importing it remotely
  * Trigger a XCAP document fetch on some subscription errors
  * Make port test consistent with the rest of the code
  * Simplified port range handling and fixed case for odd ports number
  * Fixed port boundary checks
  * Fixed incorrect __hash__ method
  * Use UA string as User-Agent header for XCAP requests
  * Avoind unnecessary conversion to unicode in PortRange conversion
  * Added missing __ne__ method to some data types
  * Fixed saving configuration after assigning DefaultValue to a setting
  * Added PositiveInteger datatype
  * Enhanced xcapdiff subscription process
  * Removed use_xcap_diff setting
  * Rollback: Changed visibility of command and data channels
  * Rollback: Avoid using SubHandlingValue object inside XCAPManager
  * Fixed account elements reload on settings change
  * Synced Engine default options with settings
  * Improved default values for various global settings
  * Use the specific version of cython 0.12.1 for building the package
  * Enhanced xcapdiff subscription termination
  * Don't try to unregister if we weren't registered at all
  * Changed visibility of command and data channels to private
  * Fixed handling bogus TXT records for XCAP server lookups
  * Fixed contact edit in XCAPManager when it needs to be removed and readded
  * Avoid using SubHandlingValue object inside XCAPManager
  * Fixed building contact name on XCAP manager
  * Fixed use of identity conditions
  * Fixed handling of SIPRegistrationDidFail and SIPSubscriptionDidFail exceptions
  * Fixed handling of SDP c line inside the media stream
  * Don't wait for pending operations to finish on shutdown
  * Added cached_cocuments property to XCAPManager
  * Handle BadStatusLine exception when fetching/updating documents
  * Added equal and hash methods to Contact, Policy and condition classes
  * Raise RuntimeError if no cache directory is provided for XCAP documents
  * Don't keep old transformations if updated rule's action is not 'allow'
  * Removed some unnecessary NotificationCenter instantiations
  * Added properties for handling the server advertised voicemail URI
  * Disable dialog event by default
  * Increase default subscribe and publish intervals
  * Added back thread attribute in SIPApplication
  * Properly fix race condition when first NOTIFY for MWI arrives
  * Avoid adding more than one MWI subscribe operation to the command channel
  * Fixed waiting timeout for engine shutdown
  * Changed name for reactor thread attribute and join thread on stop
  * Moved Changelog back to toplevel
  * Fixed boolean parameters in xcap_manager test script
  * End MWI subscription before ending registration

 -- Adrian Georgescu <ag@ag-projects.com>  Thu, 11 Nov 2010 13:31:38 +0100

python-sipsimple (0.16.1) unstable; urgency=low

  * Fixed XML document parsing for unicode objects
  * Changed default audio sample rate to 44100
  * Stop using audio device when idle on Snow Leopard
  * Added short description for a legal sip address format
  * Send MWI subscription to voicemail_uri if specified
  * Fixed broken dependency to python-aplication for non-Debian systems

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 06 Sep 2010 15:55:28 +0200

python-sipsimple (0.16.0) unstable; urgency=low

  * Added XCAP contacts management based on OMA specifications
  * Added parser/generator for OMA pres-rules extensions
  * Added custom extension for extra attributes to entries in resource-lists
  * Added xcap-caps payload support
  * Added support for Message Waiting Indicator (MWI)
  * Added SIPAccountMWIDidFail and SIPAccountMWIDidGetSummary notifications
  * Added min_expires attribute to SipSubscriptionDidFail notification
  * Added audio device change detection capability in Windows
  * Improved logic for determining source IP address used in signalling
  * Added lookup_xcap_server method to DNSLookup
  * Added timestamp to sipsimple.util.Command objects
  * Added generic All and Any objects to sipsimple.util
  * Added support for deleting children by id in RuleSet and RLSServices
  * Added extension to add a display-name to common policy rules
  * Renamed Icon payload definition to PresenceContent
  * Added support for finding the parent of an element to sipsimple.payloads
  * Added support for XPath to sipsimple.payloads
  * Fixed parsing of IdentityMany policy elements
  * Added support for parsing file-like objects with XML payloads
  * Improved XMLElement hashes to allow list elements to be hashable
  * Delegated encoding/decoding of URI values to sipsimple.payloads
  * Improved unicode support of XML payloads
  * Removed IP address from rtcp SDP attribute
  * Avoid refreshing subscription if no NOTIFY was received after
    an un-SUBSCRIBE

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 03 Sep 2010 10:08:12 +0200

python-sipsimple (0.15.3) unstable; urgency=low

  * Changed default codec list to have G722 as first choice
  * Fixed handling of case when session is ended before INVITE is sent
  * Fixed subversion command execution for Windows
  * Set all devices to None before shutdown
  * Made the reactor thread a daemon thread
  * Bumped Standards-Version to 3.9.1

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 13 Aug 2010 11:06:45 +0200

python-sipsimple (0.15.2) unstable; urgency=low

  * Added check to ensure uniqueness of account IDs
  * Revert G722 adaptive bitshifting that broke re-INVITES
  * Added python-lxml dependency and sorted dependencies order
  * Fixed handling unicode characters in the bonjour neighbour display names
  * Made use of the normalized property of Path configuration datatype
  * Fixed handling the case when an internal pjsip invitation error occurs
  * Fixed falling back to the None device when opening an AudioMixer
  * Null is already an instance, no need to instantiate it anymore
  * Added exponential timeout to DNS lookups for register
  * Lower PortAudio revision to 1412 and removed pulse patches
  * Bumped Standards-Version to 3.9.0

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 28 Jul 2010 10:39:05 +0200

python-sipsimple (0.15.1) unstable; urgency=low

  * Added support for Microsoft Windows
  * Added PJSIP patch for adaptive G722 bitshifting 
  * Improved the initialization of the TLS options when starting the Engine
  * Added support for terminating sessions in SessionManager
  * Don't enable bonjour account if bonjour support is not detected
  * Modified account matching rule for incoming sessions to ignore IP address
  * Added thread attribute to SIPApplication as the Thread the reactor runs in
  * Improved synchronization of the audio devices with corresponding entries

 -- Saul Ibarra <saul@ag-projects.com>  Wed, 07 Jul 2010 17:17:42 +0200

python-sipsimple (0.15.0) unstable; urgency=low

  * Updated documentation
  * Added Acknowledgments section
  * Added support for MSRP Alternative Connection Model
  * Added NAT detector to SIPApplication object
  * Don't fail a DNS lookup if an IP address is provided
  * Made filename argument of start_recording mandatory
  * Added proposed_streams attribute to SIPSessionGotAcceptProposal
  * Hide Route header when sending requests out
  * Fixed adding/removing ports on a bridge after stop was called
  * Improved SIPURI with pickling and matching capabilities
  * Improved hold/unhold cascading in Session
  * Modified WavePlayer and WaveRecorder to allow unicode objects as filename
  * Fixed crash when system has no soundcard at all
  * Added ability to select PortAudio revision
  * Fixed use of the Reason header for determining call disconnect reason
  * Fixed handling of stream added to conference
  * Only accept IP addresses for the STUN server list
  * Moved MSRP transport setting to the account
  * Fixed ICE support detection
  * Added configuration instructions for audio device sharing in Linux
  * Fixed starting of recording on AudioStream while on hold
  * Fixed MSRP transport used for contacting the relay
  * Fixed error message in SIPProxyAddress configuration data type
  * Modified DNSLookup to not timeout completely if NS queries fail
  * Modified AudioMixer so that it keeps the sound device open on MacOSX 10.6
  * Added permanent references to AudioStream to keep pjsip from crashing
  * Fixed Bonjour neighbour discovery handling
  * Improved sRTP negotiation capabilities
  * Fixed the build process on MacOSX 10.6
  * Split the installation instructions for Debian and Ubuntu
  * Split the installation instructions for MacOSX 10.5 and 10.6
  * Allow use of cython 0.11.2
  * Fixed handling of missing ACK in Session
  * Fixed dialog rules payload namespace
  * Added pjmedia patch not to close a media stream too fast
  * Allocate thread descriptor from pool in portaudio callback
  * Fixed receiving a BYE without receiving a final response to INVITE

 -- Saul Ibarra <saul@ag-projects.com>  Mon, 21 Jun 2010 12:59:04 +0200

python-sipsimple (0.14.2) unstable; urgency=low

  * Improved organization of attributes/properties in accounts
  * Added patch to not consider SDP in all requests/responses
  * Added host name to the BonjourAccountDidAddNeighbour notification
  * Improved default value of BonjourAccount's display_name setting
  * Added support for authentication username
  * Raised required cython version
  * Added RootAudioBridge to skip not needed audio processing

 -- Saul Ibarra <saul@ag-projects.com>  Tue, 20 Apr 2010 10:02:32 +0200

python-sipsimple (0.14.1) unstable; urgency=low

  * Added missing dependency for AVAHI's Bonjour compatibility

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 09 Apr 2010 18:29:03 +0200

python-sipsimple (0.14.0) unstable; urgency=low

  * Added handling for PJMEDIA_SDPNEG errors in Session
  * Use transport in general settings when not using a MSRP Relay
  * Added missing presence and dialog settings
  * Do not post MSRPLibraryLog for debug level
  * Added reason argument to reject and reject_proposal methods of Session
  * Add ability to CANCEL re-INVITEs
  * Changed the way NotificationProxyLogger sends MSRP trace notifications
  * Modified the AudioStream to initialize the audio device once it starts
  * Added Intel architecture to Prerequisites
  * Calculate ICE candidate priority according to draft
  * Use regular nomination in ICE instead of aggressive
  * Changed DNSLookup to fallback to using local nameservers if NS queries
    fail
  * Added instructions for installing the cli scripts
  * Added new setting account.sip.enable_outbound_proxy
  * Fixed CPIM implementation and improved ChatStream interface
  * Added notifications for ICE negotiation status
  * Refactored audio support
  * Don't initialize ICE transport if remote SDP doesn't offer ICE
  * Proper forward declaration of Cython objects
  * Save session start time when media stream did timeout
  * Added audio conference support
  * Set disconnect_reason and failure_reason to the Reason header value if
    present (RFC 3326)
  * Added sip.transport_list setting to BonjourAccount
  * Added MSRP settings to Bonjour account
  * Added publishing and discovery support to BonjourAccount
  * Modified AudioTransport to not pause/resume the stream on hold/unhold
  * Add support for ICE keepalive
  * Changed defauls for use sRTP and codec list for better interoperability
  * Added a timeout when sending (re-)INVITEs
  * Updated documentation
  * Numerous bugfixes

 -- Saul Ibarra <saul@ag-projects.com>  Fri, 09 Apr 2010 13:36:50 +0200

python-sipsimple (0.12.0) unstable; urgency=low

  * Removed obsolete desktopsharing.py file
  * Use OMA standard auids for icon and directory applications
  * Added slot property to AudioStream
  * Refactored DNS lookup implementation
  * Don't bit-shift g722 audio samples
  * Updated installation procedures
  * Added IVirtualAudioDevice interface and support for it in AudioStream
  * Modified DNSLookup to offer both a synchronous and an asynchronous API
  * Improved logging in DNSLookup.lookup_service
  * Added the request URI to the SIPEngineGotMessage notification data
  * Added CIPID (RFC4482) application
  * Added check in MSRPStreamBase for transport mismatch in settings
  * Added checks for SDP media stream transport for incoming sessions
  * Made Registration always communicate via notifications
  * Added capabilities application (RFC5196)
  * Added conference XML application (RFC4575)
  * Added message summary application (RFC3842)
  * Modified AudioStream to support changing the rtp port in reINVITEs
  * Pass code and reason of SIP MESSAGE response to its notification
  * Added dialog-info application (RFC4235)
  * Added call_in_(twisted|green)_thread utility functions
  * Added limit utility function
  * Refactored sipsimple.account using a green model
  * Restrucutred SIPApplication to simplify the code
  * Added support for detecting default IP address changes
  * Added redirect_identities attribute to SIPSessionDidFail notifications
  * Modified Account to re-register when some settings change
  * Removed sip.ip_address and rtp.ip_address global settings
  * Removed msrp.port global setting
  * Reorganized account registration notifications
  * Reorganized settings
  * Patched dns.entropy module which is not thread-safe
  * Modified SilenceableWaveFile to use a green model
  * Made Account.credentials a property
  * Reorganized the contents of the sipsimple.util module
  * Modified MSRPStreamBase to stop other operations when an end is requested
  * Added support for SystemDidWakeUpFromSleep notification in registration
  * Moved Timestamp from sipsimple.applications.util to sipsimple.util
  * Removed sipclients related modules, scripts and data from the project
  * Reorganized packages and modules
  * Numerous bug fixes

 -- Lucian Stanescu <luci@ag-projects.com>  Wed, 20 Jan 2010 12:21:35 +0000

python-sipsimple (0.9.1) unstable; urgency=low

  * Prepare next version

 -- Adrian Georgescu <ag@ag-projects.com>  Wed, 26 Aug 2009 15:13:16 +0200

python-sipsimple (0.9.0) unstable; urgency=low

  * Added upgrade guide:
    Read this wiki page when upgrading from a previous version
  * Added developer guide:
    http://sipsimpleclient.org/projects/sipsimpleclient/wiki/SipDeveloperGuide
  * Implemented notifications system from python-application
  * Added event-driven middleware API based on notifications:
    http://sipsimpleclient.org/projects/sipsimpleclient/wiki/SipMiddlewareApi
  * Added high-level configuration API:
    http://sipsimpleclient.org/projects/sipsimpleclient/wiki/SipConfigurationAPI
    Added sip_settings to manage the configuration framework
  * Configuration file config.ini is now deprecated. Use
    sip_migrate_settings to migrate settings from previous config.ini 
    to the new configuration API
  * Added synchronous API for non-blocking operations
  * Adapted all command line tools to the new APIs
  * Added re-INVITE (hold/un-hold, adding and removing other media types)
  * Added sip_session script that combines MSRP chat and RTP audio in one
    session, media can be added/subtracted to/from active session. The
    script can be used for both incoming and outgoing sessions
  * Unify command line arguments for command line tools
  * Added dummy audio device support for systems without sound card
  * Added --auto-answer and --auto-hangup to sip_audio_session script. 
    sip_audio_session script can now be used for scripting alarms that check
    both siganling and media paths, it can detect missing ACK, negative SIP
    response codes and missing RTP media after call setup
  * sip_send_file and sip_desktop_sharing temporarily disabled until
    migrated to the new APIs
  * Added asynchronous DNS lookup module and removed DNS lookups from core
  * Added Session manager to manage multiple SIP sessions
  * Added Account manager to manage multiple SIP accounts
  * Integrated SIP registration into the SIP account
  * Added next hop failover for INVITE and REGISTER methods
  * Made Route argument mandatory in SIP core object creation
  * Allow settable Contact URI for objects in SIP core
  * Better support for server-less scenarios (P2P and bonjour)
  * Added support for TLS in P2P/bonjour mode for both SIP and MSRP
  * Integrated various patches into PJSIP, Eventlet and Greenlet projects
  * Ported eventlet to ARM CPUs, msrp works now on Nokia 810
  * Improved ICE/STUN support and related DNS lookups
  * Improved logging to file and console for SIP, MSRP, PJSIP an core
    notifications, added runtime control for traces in scripts
  * Added support for draft-ietf-mmusic-file-transfer-mech-11 in msrplib
  * Added support for chunking in msrplib
  * Splited sipclient Debian package into python-sipsimple and sipsimple-cli
  * Numerous bug fixes

 -- Dan Pascu <dan@ag-projects.com>  Mon, 13 Apr 2009 16:56:50 +0300

sipclient (0.4.0) unstable; urgency=low

  * Added desktop sharing using VNC over MSRP
  * Added PJSIP patch to write and parse i= line to SDP and updated SDP
    wrapper classes to use it
  * Added --pjsip-clean-compile option to setup.py
  * Continue with present PJSIP tree if SVN update fails in setup.py
  * Revised Invitation state machine, method names, events and internals
  * Only ring on 180 in sip_audio_session.py
  * Allow Credentials object to not have a password set
  * Improved scripts to print any remaining logging message after the Engine
    has been shut down
  * Catch uncaught exceptions in PJSIP callbacks and generate an event to
    inform the application
  * Disconnect if no audio is received for 10 seconds in sip_audio_session.py
  * Use default_host_ip from python-application if local_ip is set to None in
    Engine
  * Integrated notification system from python-application
  * Renamed all event names to new notification naming scheme
  * Changed interface of Engine class in order to use Singleton metaclass from
    python-application
  * Fixed some threading bugs in the core
  * Renamed anything related to PyPJUA to SIP core
  * Renamed pypjua module to sipsimple
  * Fixed various bugs in XML payload handling
  * Made small, cosmetic changes in presence-related scripts
  * Set return code of scripts based on SIP status codes
  * Added --auto-hangup option to sip_audio_session to terminate a call after
    a specified amount of time
  * Enhanced XML applications in order to be more robust in usage and allow for
    future implementation of features such as xcap-diff
  * Updated eventlet-based interface to engine and moved it to green package
  * Moved logging from green classes into logstate.py module
  * Fixed bug: in CPIM headers 'sips' was parsed as 'sip'
  * Fixed bug: CPIM content was not generated / parsed properly (must add
    space before Content-Type line)
  * sip_im_session: throttle played sounds and play them at specified volume
  * sip_im_session: calling from command line is equivalent to issuing :call
  * sip_im_session: do things in the background when possible (like
    registrations and closing sessions)
  * sip_im_session: print a calming message if it takes longer than 1 sec to
    finish SIP transactions before exit
  * sip_im_session: added --no-register option
  * sip_im_session and sip_send_file: added --msrp-tcp option
  * sip_im_session: save chat history under .sipclient/history
  * sip_im_session: hide "Early session" messages
  * sip_im_session and sip_send file: relay can no longer be used for outgoing
    session. -r auto option is deprecated.
  * sip_send_file: fixed -m option to work
  * sip_im_session and sip_send_file: added --trace-engine option
  * sip_im_session: fixed to ignore path in incoming file transfers
  * sip_send_file: fixed not to put path in file transfer description
  * Added iso8601.py by Michael Twomey for parsing CPIM's DateTime header
  * CPIM now puts DateTime header in every message. DateTime is also used now
    when displaying incoming messages
  * Fixed green package to end session with 500 in case of exception (not 488)
  * sip_im_session: don't exit if failed to parse an incoming message
  * Fixed shutdown functions not to silent pypjua errors
  * Avoid hiding tracebacks by not using potentially blocking code in finally
  * Fixed a number of bugs in chat scripts
  * Removed debug_util.py
  * Removed chatroom.py
  * Removed trafficlog.py

 -- Adrian Georgescu <ag@ag-projects.com>  Mon, 19 Jan 2009 17:26:02 +0100

sipclient (0.3.0) unstable; urgency=low

  * This version requires eventlet for twisted, which is not yet available as
    debian package. See doc/INSTALL.x for how to manually install eventlet
  * Purge the old debian package and/or remove any command line tools starting
    with sip_ and  xcap_ from the path where they have been installed
  * Renamed sip_rtp_audio_session to sip_audio_session
  * Removed sip_msrp_im_session and sip_msrp_file_transfer scripts
  * Added sip_im_session script, supporting chats with multiple other parties
    and incoming file transfers
  * Added sip_send_file for sending files over SIP/MSRP in a batch mode
  * Added auto_accept_file_transfers General option
  * Added rtp_port_range General option
  * Added listen_udp General option
  * Added file_transfer_directory General option
  * Added history_directory General option
  * Added log_directory General option
  * Added msrp_relay SIP account option
  * Play sounds when send and receive IM
  * Added xcap_rls_services script
  * Added rtp_port_range init and runtime option to Engine/PJSIPUA
  * Added realtime echo cancellation adjustment to audio session script
  * Remodeled Invitation class to mirror PJSIP states and communicate with
    application by means of SDPSession objects
  * Adjusted audio and IM session scripts to use this new Invitation class
  * Implemented RTPTransport and AudioTransport classes, which wrap PJSIP
    media transport and audio stream functionality respectively
  * Refactored SIPURI, Credentials and Route classes to be dynamic
  * Added foreign thread and deallocation checking to PyPJUA
  * Prevented PJLIB calles in import to improve Windows compatibility
  * Removed dependency on python-application for PyPJUA
  * Added msrplib: MSRP protocol implementation powered by twisted/eventlet
  * Added twisted/eventlet wrapper for Engine
  * Added creation of history, log and file transfer directories in enrollment
  * Made sip traces get logged in <log_directory>/<sip_address>/sip_trace.txt
  * Added script sip_auto_publish_presence
  * Made sip_subscribe_rls script subscribe by default to username-buddies@domain

 -- Adrian Georgescu <ag@ag-projects.com>  Sat, 29 Nov 2008 10:44:33 +0100

sipclient (0.2.3) unstable; urgency=low

  * Updated MacOSX installation procedure from sources
  * Added fink installation from binary packages
  * Update the server software the client is tested against
  * Put version in default User-Agent header
  * Renamed obsolete setting name presence to use_presence_agent
  * Improved documentation
  * Define log directory in config file
  * More comments about settings from sample config file
  * Update linux install procedure with debian package installation instructions
  * Use the etag returned after an XCAP PUT so as not to need a GET afterwards
  * Change the name of the config option presence to use_presence_agent and document it
  * Fix buggy interconnections between conference bridge slots
  * Make the sip_subscribe_winfo script also use the listen_udp option
  * Do a GET after a HTTP error in PUT for pres-rules  
  * Ported new-style SRV lookup to sip_msrp_file_transfer script
  * Ported new-style SRV lookup to sip_msrp_im_session script
  * Change order of display (available accounts, current account)
  * Record audio files to the history directory
  * Fix sip_subscribe_winfo when polite-blocking and change output
  * Add xcap_pres_rules script
  * Toggle logging at runtime in sip_register
  * Better description of what the scripts do
  * Make sip_register script exit after a number of REGISTERs
  * Print current pres rules when sip_subscribe_winfo starts
  * Add polite-block option to sip_subscribe_winfo script
  * Added PJSIP version string to default User-Agent header
  * Fix for bug in accepting SDP streams
  * Added LICENSE file to MANIFEST.in

 -- Adrian Georgescu <ag@ag-projects.com>  Wed, 29 Oct 2008 19:46:25 +0100

sipclient (0.2.2) unstable; urgency=low

  * Small bug fixes
  * Recording capability added
  * Make sip_subscribe_rls script accept multipart/related content-type
  * Allow setting basic presence in sip_publish_presence script

 -- Lucian Stanescu <luci@ag-projects.com>  Wed, 15 Oct 2008 17:39:34 +0200

sipclient (0.2.1) unstable; urgency=low

  * Include the xml schemas
  * Include Debian packages instructions in docs/INSTALL.linux
  * A minimal configuration file is generated if not found
  * Add 'Supported' header when subscribing to RLS services URIs
  * Added local IP address and port to listen on for UDP packets to
    configuration file
  * Added registerless "bonjour" account to relevant scripts
  * Improved SRV lookup procedure and do full lookup for outbound proxy
  * Do not consider 404 an error when getting the pres-rules document in sip_subscribe_winfo
  * Make the UDP limit 64K

 -- Lucian Stanescu <luci@ag-projects.com>  Mon, 13 Oct 2008 17:29:48 +0200

sipclient (0.2) unstable; urgency=low

  * Initial release

 -- Lucian Stanescu <luci@ag-projects.com>  Mon, 13 Oct 2008 10:29:08 +0200



================================================
FILE: debian/compat
================================================
11


================================================
FILE: debian/control
================================================
Source: python-sipsimple
Section: python
Priority: optional
Maintainer: Dan Pascu <dan@ag-projects.com>
Uploaders: Adrian Georgescu <ag@ag-projects.com>, Tijmen de Mes <tijmen@ag-projects.com>
Build-Depends: debhelper (>= 11),
               dh-python,
               python-all-dev (>= 2.7),
               python-all-dbg (>= 2.7),
               cython-dbg (>= 0.19),
               libasound2-dev,
               libssl-dev,
               libv4l-dev,
               libavcodec-dev (>= 7:2.7),
               libavformat-dev (>= 7:2.7),
               libavutil-dev (>= 7:2.7),
               libswscale-dev (>= 7:2.7),
               libx264-dev,
               libvpx-dev,
               libsqlite3-dev,
               pkg-config,
               uuid-dev
Standards-Version: 4.5.0
Homepage: http://sipsimpleclient.org

Package: python-sipsimple
Architecture: any
Depends: ${python:Depends}, ${shlibs:Depends}, ${misc:Depends},
         python-application (>= 2.8.0),
         python-dateutil,
         python-dnspython (>= 1.9),
         python-eventlib,
         python-gnutls,
         python-lxml,
         python-msrplib (>= 0.20.0),
         python-otr (>= 1.2.0),
         python-twisted-core (>= 8.1.0),
         python-xcaplib (>= 1.0.17)
Suggests: libavahi-compat-libdnssd1
Provides: ${python:Provides}
Description: Python SDK for development of SIP end-points
 SIP SIMPLE client SDK is a Software Development Kit for easy development of
 SIP end-points that support rich media like Audio, Video, Instant Messaging,
 File Transfers, Desktop Sharing and Presence. Other media types can be added
 by using an extensible high-level API.



================================================
FILE: debian/copyright
================================================
Copyright: 2008-2020 AG Projects

License: GPL-3+

    This package is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 3 of the License, or (at your
    option) any later version.

    This package is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    For a copy of the license see /usr/share/common-licenses/GPL-3



================================================
FILE: debian/docs
================================================
docs/DeveloperGuide.txt


================================================
FILE: debian/python-sipsimple.lintian-overrides
================================================
binary: possible-gpl-code-linked-with-openssl


================================================
FILE: debian/rules
================================================
#!/usr/bin/make -f

export DEB_BUILD_HARDENING = 1
export PYBUILD_NAME = sipsimple

%:
	dh $@ --with python2 --buildsystem=pybuild

override_dh_clean:
	dh_clean
	rm -rf build dist MANIFEST



================================================
FILE: debian/source/format
================================================
3.0 (native)


================================================
FILE: deps/pjsip/COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: deps/pjsip/Makefile
================================================
include build.mak
include build/host-$(HOST_NAME).mak
-include user.mak
include version.mak

LIB_DIRS = pjlib/build pjlib-util/build pjnath/build third_party/build pjmedia/build pjsip/build
DIRS = $(LIB_DIRS) $(EXTRA_DIRS)

ifdef MINSIZE
MAKE_FLAGS := MINSIZE=1
endif

all clean dep depend print:
	for dir in $(DIRS); do \
		if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
		    true; \
		else \
		    exit 1; \
		fi; \
	done

distclean realclean:
	for dir in $(DIRS); do \
		if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
		    true; \
		else \
		    exit 1; \
		fi; \
	done
	$(HOST_RM) config.log
	$(HOST_RM) config.status

lib:
	for dir in $(LIB_DIRS); do \
		if $(MAKE) $(MAKE_FLAGS) -C $$dir all; then \
		    true; \
		else \
		    exit 1; \
		fi; \
	done; \


.PHONY: lib doc

doc:
	@if test \( ! "$(WWWDIR)" == "" \) -a \( ! -d $(WWWDIR)/pjlib/docs/html \) ; then \
		echo 'Directory "$(WWWDIR)" does not look like a valid pjsip web directory'; \
		exit 1; \
	fi
	for dir in $(DIRS); do \
		if $(MAKE) $(MAKE_FLAGS) -C $$dir $@; then \
		    true; \
		else \
		    exit 1; \
		fi; \
	done
	
LIBS = 	pjlib/lib/libpj-$(TARGET_NAME).a \
	pjlib-util/lib/libpjlib-util-$(TARGET_NAME).a \
	pjnath/lib/libpjnath-$(TARGET_NAME).a \
	pjmedia/lib/libpjmedia-$(TARGET_NAME).a \
	pjmedia/lib/libpjmedia-audiodev-$(TARGET_NAME).a \
	pjmedia/lib/libpjmedia-codec-$(TARGET_NAME).a \
    	pjsip/lib/libpjsip-$(TARGET_NAME).a \
	pjsip/lib/libpjsip-ua-$(TARGET_NAME).a \
	pjsip/lib/libpjsip-simple-$(TARGET_NAME).a \
	pjsip/lib/libpjsua-$(TARGET_NAME).a
BINS = 	pjsip-apps/bin/pjsua-$(TARGET_NAME)$(HOST_EXE) 

size:
	@echo -n 'Date: '
	@date
	@echo
	@for lib in $(LIBS); do \
		echo "$$lib:"; \
		size -t $$lib | awk '{print $$1 "\t" $$2 "\t" $$3 "\t" $$6}'; \
		echo; \
	done
	@echo
	@for bin in $(BINS); do \
		echo "size $$bin:"; \
		size $$bin; \
	done

#dos2unix:
#	for f in `find . | egrep '(mak|h|c|S|s|Makefile)$$'`; do \
#		dos2unix "$$f" > dos2unix.tmp; \
#		cp dos2unix.tmp "$$f"; \
#	done
#	rm -f dos2unix.tmp

xhdrid:
	for f in `find . | egrep '\.(h|c|S|s|cpp|hpp)$$'`; do \
		echo Processing $$f...; \
		cat $$f | sed 's/.*\$$Author\$$/ */' > /tmp/id; \
		cp /tmp/id $$f; \
	done

selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test

pjlib-test: pjlib/bin/pjlib-test-$(TARGET_NAME)
	cd pjlib/build && ../bin/pjlib-test-$(TARGET_NAME)

pjlib-util-test: pjlib-util/bin/pjlib-util-test-$(TARGET_NAME)
	cd pjlib-util/build && ../bin/pjlib-util-test-$(TARGET_NAME)

pjnath-test: pjnath/bin/pjnath-test-$(TARGET_NAME)
	cd pjnath/build && ../bin/pjnath-test-$(TARGET_NAME)

pjmedia-test: pjmedia/bin/pjmedia-test-$(TARGET_NAME)
	cd pjmedia/build && ../bin/pjmedia-test-$(TARGET_NAME)

pjsip-test: pjsip/bin/pjsip-test-$(TARGET_NAME)
	cd pjsip/build && ../bin/pjsip-test-$(TARGET_NAME)

pjsua-test:
	cd tests/pjsua && python runall.py

prefix = $(ac_prefix)

install:
	mkdir -p $(DESTDIR)$(prefix)/lib
	cp -f $(APP_LIB_FILES) $(DESTDIR)$(prefix)/lib/
	mkdir -p $(DESTDIR)$(prefix)/include
	for d in pjlib pjlib-util pjnath pjmedia pjsip; do \
		cp -RLf $$d/include/* $(DESTDIR)$(prefix)/include/; \
	done
	mkdir -p $(DESTDIR)$(prefix)/lib/pkgconfig
	sed -e "s!@PREFIX@!$(DESTDIR)$(prefix)!" libpjproject.pc.in | \
		sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \
		sed -e "s!@PJ_LDLIBS@!$(PJ_LDLIBS)!" | \
		sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)/$(prefix)/lib/pkgconfig/libpjproject.pc


================================================
FILE: deps/pjsip/README.txt
================================================
 Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
 Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)

 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 the Free
 Software Foundation, either version 2 of the License, or (at your option)
 any later version.

 This program is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
 for more details.

 You should have received a copy of the GNU General Public License along
 with this program. If not, see http://www.gnu.org/licenses/.


Getting Started: Building and Using PJSIP and PJMEDIA

   [Last Update: $Date: 2007-02-02 20:42:44 +0000 (Fri, 02 Feb 2007) $]

                                                   Print Friendly Page
     _________________________________________________________________

   This article describes how to download, customize, build, and use the open
   source PJSIP and PJMEDIA SIP and media stack. The online (and HTML) version
   of this file can be downloaded from http://www.pjsip.org/using.htm


Quick Info
     _________________________________________________________________

   Building with GNU tools (Linux, *BSD, MacOS X, mingw, etc.)
          Generally these should be all that are needed to build the libraries,
          applications, and samples:

   $ ./configure
   $ make dep && make clean && make

   Building Win32 Target with Microsoft Visual Studio
          Generally we can just do these steps:

         1. Visual Studio 6: open pjproject.dsw workspace,
         2. Visual Studio 2005: open pjproject-vs8.sln solution,
         3. Create an empty pjlib/include/pj/config_site.h, and
         4. build the pjsua application.

   Building for Windows Mobile
          Generally these are all that are needed:

         1. Open pjsip-apps/build/wince-evc4/wince_demos.vcw EVC4 workspace,
         2. Create an empty pjlib/include/pj/config_site.h, and
         3. build the pjsua_wince application.

   Invoking Older Build System (e.g. for RTEMS)
          Generally these should be all that are needed to build the libraries,
          applications, and samples:

   $ ./configure-legacy
   $ make dep && make clean && make

   Locating Output Binaries/Libraries
          Libraries will be put in lib directory, and binaries will be put in
          bin directory, under each projects.

   Running the Applications
          After successful build, you can try running pjsua application on
          pjsip-apps/bin   directory.   PJSUA  manual  can  be  found  in
          http://www.pjsip.org/pjsua.htm page.


Table of Contents:
     _________________________________________________________________

   1. Getting the Source Distribution

     1.1 Getting the Release tarball

     1.2 Getting from Subversion trunk

     1.3 Source Directories Layout

   2. Build Preparation

     2.1 config_site.h file

     2.2 Disk Space Requirements

   3.  Building Linux, *nix, *BSD, and MacOS X Targets with GNU Build
   Systems

     3.1 Supported Targets

     3.2 Requirements

     3.3 Running configure

     3.4 Running make

     3.5 Cross Compilation

     3.6 Build Customizations

   4. Building for Windows Targets with Microsoft Visual Studio

     4.1 Requirements

     4.2 Building the Projects

     4.3 Debugging the Sample Application

   5. Building for Windows Mobile Targets (Windows CE/WinCE/PDA/SmartPhone)

     5.1 Requirements

     5.2 Building the Projects

   6. Older PJLIB Build System for Non-Autoconf Targets (e.g. RTEMS)

     6.1 Supported Targets

     6.2 Invoking the Build System

   7. Running the Applications

     7.1 pjsua

     7.2 Sample Applications

     7.3 pjlib-test

     7.4 pjsip-test

   8. Using PJPROJECT with Applications


   Appendix I: Common Problems/Frequently Asked Question (FAQ)

     I.1 fatal error C1083: Cannot open include file: 'pj/config_site.h':
   No such file or directory


1. Getting the Source Code Distribution
     _________________________________________________________________

   All libraries (PJLIB, PJLIB-UTIL, PJSIP, PJMEDIA, and PJMEDIA-CODEC) are
   currently distributed under a single source tree, collectively named as
   PJPROJECT or just PJ libraries. These libraries can be obtained by either
   downloading the release tarball or getting them from the Subversion trunk.


1.1 Getting the Release tarball
     _________________________________________________________________

   Getting the released tarball is a convenient way to obtain stable version of
   PJPROJECT. The tarball may not contain the latest features or bug-fixes, but
   normally it is considered more stable as each will be tested more rigorously
   before released.

   The   latest   released   tarball   can   be   downloaded   from   the
   http://www.pjsip.org/download.htm.


1.2 Getting from Subversion trunk
     _________________________________________________________________

   PJPROJECT  Subversion  repository  will always contain the latest/most
   up-to-date version of the sources. Normally the Subversion repository is
   always kept in a "good" state. However, there's always a chance that things
   break  and  the  tree  doesn't  build  correctly (particularly for the
   "not-so-popular" targets), so please consult the mailing list should there
   be any problems.

   Using Subversion also has benefits of keeping the local copy of the source
   up to date with the main PJ source tree and to easily track the changes made
   to the local copy, if any.


What is Subversion

   Subversion (SVN) is Open Source version control system similar to CVS.
   Subversion homepage is in http://subversion.tigris.org/


Getting Subversion Client

   A Subversion (SVN) client is needed to download the PJ source files from
   pjsip.org  SVN  tree.  SVN  client  binaries  can  be  downloaded from
   http://subversion.tigris.org/, and the program should be available for
   Windows, Linux, MacOS X, and many more platforms.


Getting the Source for The First Time

   Once Subversion client is installed, we can use these commands to initially
   retrieve the latest sources from the Subversion trunk:



   $ svn co http://svn.pjproject.net/repos/pjproject/trunk pjproject
   $ cd pjproject


Keeping The Local Copy Up-to-Date

   Once sources have been downloaded, we can keep the local copy up to date by
   periodically synchronizing the local source with the latest revision from
   the  PJ's  Subversion  trunk. The mailing list provides best source of
   information about the availability of new updates in the trunk.

   To  update  the  local  copy  with the latest changes in the main PJ's
   repository:



   $ cd pjproject
   $ svn update


Tracking Local and Remote Changes

   To see what files have been changed locally:



   $ cd pjproject
   $ svn status

   The above command only compares local file against the original local copy,
   so it doesn't require Internet connection while performing the check.

   To see both what files have been changed locally and what files have been
   updated in the PJ's Subversion repository:



   $ cd pjproject
   $ svn status -u

   Note that this command requires active Internet connection to query the
   status of PJPROJECT's source repository.


1.3 Source Directories Layout
     _________________________________________________________________

Top-Level Directory Layout

   The top-level directories (denoted as $TOP here) in the source distribution
   contains the following sub-directories:

   $TOP/build
          Contains makefiles that are common for all projects.

   $TOP/pjlib
          Contains  header  and  source files of PJLIB. PJLIB is the base
          portability  and  framework  library which is used by all other
          libraries

   $TOP/pjlib-util
          Contains  PJLIB-UTIL  header and source files. PJLIB-UTIL is an
          auxiliary library that contains utility functions such as scanner,
          XML, STUN, MD5 algorithm, getopt() implementation, etc.

   $TOP/pjmedia
          Contains PJMEDIA and PJMEDIA-CODEC header and source files. The
          sources of various codecs (such as GSM, Speex, and iLBC) can be found
          under this directory.

   $TOP/pjsip
          Contains PJSIP header and source files.

   $TOP/pjsip-apps
          Contains source code for PJSUA and various sample applications.


Individual Directory Inside Each Project

   Each library directory further contains these sub-directories:

   bin
          Contains binaries produced by the build process.

   build
          Contains build scripts/makefiles, project files, project workspace,
          etc. to build the project. In particular, it contains one Makefile
          file  to  build the project with GNU build systems, and a *.dsw
          workspace file to build the library with Microsoft Visual Studio 6 or
          later.

   build/output
          The build/output directory contains the object files and other files
          generated by the build process. To support building multiple targets
          with a single source tree, each build target will occupy a different
          subdirectory under this directory.

   build/wince-evc4
          This directory contains the project/workspace files to build Windows
          CE/WinCE version of the project using Microsoft Embedded Visual C++
          4.

   build/wince-evc4/output
          This directory contains the library, executable, and object files
          generated by Windows Mobile build process.

   docs
          Contains Doxygen configuration file (doxygen.cfg) to generate online
          documentation from the source files. The output documentation will be
          put in this directory as well (for example, docs/html directory for
          the HTML files).

          (to generate Doxygen documentation from the source tree, just run
          "doxygen docs/doxygen.cfg" in the individual project directory. The
          generated files will reside in docs directory).

   include
          Contains the header files for the project.

   lib
          Contains libraries produced by the build process.

   src
          Contains the source files of the project.


2. Build Preparation
     _________________________________________________________________

2.1 Create config_site.h file
     _________________________________________________________________

   Before source files can be built, the pjlib/include/pj/config_site.h file
   must be created (it can just be an empty file).

   Note:
          When the Makefile based build system is used, this process is taken
          care by the Makefiles. But when non-Makefile based build system (such
          as Visual Studio) is used, the config_site.h file must be created
          manually.


What is config_site.h File

   The pjlib/include/pj/config_site.h contains local customizations to the
   libraries.

   All customizations should be put in this file instead of modifying PJ's
   files, because if PJ's files get modified, then those modified files will
   not be updated the next time the source is synchronized. Or in other case,
   the local modification may be overwritten with the fresh copy from the SVN.

   Putting the local customization to the config_site.h solves this problem,
   because this file is not included in the version control, so it will never
   be overwritten by "svn update" command.

   Please find list of configuration macros that can be overriden from these
   files:
     * PJLIB Configuration (the pjlib/config.h file)
     * PJLIB-UTIL Configuration (the pjlib-util/config.h file)
     * PJMEDIA Configuration (the pjmedia/config.h file)
     * PJSIP Configuration (the pjsip/sip_config.h file)

   A     sample    config_site.h    file    is    also    available    in
   pjlib/include/config_site_sample.h.


Creating config_site.h file

   The simplest way is just to create an empty file, to use whetever default
   values set by the libraries.

   Another way to create the config_site.h file is to write something like the
   following:


   // Uncomment to get minimum footprint (suitable for 1-2 concurrent calls
   only)
   //#define PJ_CONFIG_MINIMAL_SIZE
   // Uncomment to get maximum performance
   //#define PJ_CONFIG_MAXIMUM_SPEED
   #include <pj/config_site_sample.h>


2.2 Disk Space Requirements
     _________________________________________________________________

   The building process needs:
   about 50-60 MB of disk space to store the uncompressed source files, and
     * about 30-50 MB of additional space for building each target

   (Visual Studio Debug and Release are considered as separate targets)


3. Building Linux, *nix, *BSD, and MacOS X Targets with GNU Build Systems
     _________________________________________________________________

3.1 Supported Targets
     _________________________________________________________________

   The  new,  autoconf  based  GNU  build system can be used to build the
   libraries/applications for the following targets:
     * Linux/uC-Linux (i386, Opteron, Itanium, MIPS, PowerPC, etc.),
     * MacOS X (PowerPC),
     * mingw (i386),
     * FreeBSD and maybe other BSD's (i386, Opteron, etc.),
     * RTEMS with cross compilation (ARM, powerpc),
     * etc.


3.2 Requirements
     _________________________________________________________________

   In order to use PJ's GNU build system, these typical GNU tools are needed:
     * GNU make (other make will not work),
     * GNU binutils for the target, and
     * GNU gcc for the target.
     * OpenSSL header files/libraries (optional) if TLS support is wanted.

   In addition, the appropriate "SDK" must be installed for the particular
   target (this could just be a libc and the appropriate system abstraction
   library such as Posix).

   The build system is known to work on the following hosts:
     * Linux, many types of distributions.
     * MacOS X 10.2
     * mingw (Win2K, XP)
     * FreeBSD (must use gmake instead of make)

   Building Win32 applications with Cygwin is currently not supported by the
   autoconf script (there is some Windows header conflicts), but one can still
   use the old configure script by calling ./configure-legacy. More over,
   cross-compilations might also work with Cygwin.


3.3 Running configure
     _________________________________________________________________

Using Default Settings

   Run  "./configure"  without  any  options to let the script detect the
   appropriate settings for the host:



   $ cd pjproject
   $ ./configure
   ...

   Notes:
          The default settings build the libraries in "release" mode, with
          default CFLAGS set to "-O2 -DNDEBUG". To change the default CFLAGS,
          we can use the usual "./configure CFLAGS='-g'" construct.

    Features Customization

   With the new autoconf based build system, most configuration/customization
   can be specified as configure arguments. The list of customizable features
   can be viewed by running "./configure --help" command:



   $ cd pjproject
   $ ./configure --help
   ...
   Optional Features:
   --enable-epoll           Use epoll on Linux instead of select
   --disable-floating-point	Disable floating point where possible
   --disable-sound 		Exclude sound (i.e. use null sound)
   --disable-small-filter 	Exclude small filter in resampling
   --disable-large-filter 	Exclude large filter in resampling
   --disable-g711-plc 		Exclude G.711 Annex A PLC
   --disable-speex-aec 		Exclude Speex Acoustic Echo Canceller/AEC
   --disable-g711-codec 	Exclude G.711 codecs from the build
   --disable-l16-codec 		Exclude Linear/L16 codec family from the build
   --disable-gsm-codec 		Exclude GSM codec in the build
   --disable-speex-codec 	Exclude Speex codecs in the build
   --disable-ilbc-codec 	Exclude iLBC codec in the build
   --disable-tls Force excluding TLS support (default is autodetected based on
   OpenSSL availability)
   ...

    Configuring Debug Version and Other Customizations

   The configure script accepts standard customization, which details can be
   obtained by executing ./configure --help.

   Below is an example of specifying CFLAGS in configure:



   $ ./configure CFLAGS="-O3 -DNDEBUG -msoft-float -fno-builtin"
   ...

    Configuring TLS Support

   By default, TLS support is configured based on the availability of OpenSSL
   header files and libraries. If OpenSSL is available at the default include
   and library path locations, TLS will be enabled by the configure script.

   You  can explicitly disable TLS support by giving the configure script
   --disable-tls option.


  3.4 Cross Compilation
     _________________________________________________________________

   Cross compilation should be supported, using the usual autoconf syntax:



   $ ./configure --host=arm-elf-linux
   ...

   Since cross-compilation is not tested as often as the "normal" build, please
   watch for the ./configure output for incorrect settings (well ideally this
   should be done for normal build too).

   Please refer to Porting Guide for further information about porting PJ
   software.


  3.5 Running make
     _________________________________________________________________

   Once the configure script completes successfully, start the build process by
   invoking these commands:



   $ cd pjproject
   $ make dep
   $ make

   Note:
          gmake may need to be specified instead of make for some hosts, to
          invoke GNU make instead of the native make.


   Description of all make targets supported by the Makefile's:

   all
          The default (or first) target to build the libraries/binaries.

   dep, depend
          Build dependencies rule from the source files.

   clean
          Clean  the object files for current target, but keep the output
          library/binary files intact.

   distclean, realclean
          Remove  all  generated  files (object, libraries, binaries, and
          dependency files) for current target.


   Note:
          make can be invoked either in the top-level PJ directory or in build
          directory under each project to build only the particular project.


  3.6 Build Customizations
     _________________________________________________________________

   Build features can be customized by specifying the options when running
   ./configure as described in Running Configure above.

   In addition, additional CFLAGS and LDFLAGS options can be put in user.mak
   file in PJ root directory (this file may need to be created if it doesn't
   exist). Below is a sample of user.mak file contents:



   export CFLAGS += -msoft-float -fno-builtin
   export LDFLAGS +=


4. Building for Windows Targets with Microsoft Visual Studio
     _________________________________________________________________

  4.1 Requirements
     _________________________________________________________________

   The Microsoft Visual Studio based project files can be used with one of the
   following:

     * Microsoft Visual Studio 6,
     * Microsoft Visual Studio .NET 2002,
     * Microsoft Visual Studio .NET 2003,
     * Microsoft Visual C++ 2005 (including Express edition),

   In addition, the following SDK's are needed:
     * Platform SDK, if you're using Visual Studio 2005 Express (tested with
       Platform SDK for Windows Server 2003 SP1),
     * DirectX SDK (tested with DirectX version 8 and 9),
     * OpenSSL development kit would be needed if TLS support is wanted, or
       otherwise this is optional.

   For the host, the following are required:
     * Windows NT, 2000, XP, 2003, or later ,
     * Windows 95/98 should work too, but this has not been tested,
     * Sufficient amount of RAM for the build process (at least 256MB).


    Enabling TLS Support with OpenSSL

   If  TLS  support  is wanted, then OpenSSL SDK must be installed in the
   development host.

   To install OpenSSL SDK from the Win32 binary distribution:
    1. Install OpenSSL SDK to any folder (e.g. C:\OpenSSL)
    2. Add OpenSSL DLL location to the system PATH.
    3. Add OpenSSL include path to Visual Studio includes search directory.
       Make sure that OpenSSL header files can be accessed from the program
       with #include <openssl/ssl.h> construct.
    4. Add OpenSSL library path to Visual Studio library search directory. Make
       sure the following libraries are accessible:
          + For Debug build: libeay32MTd and ssleay32MTd.
          + For Release build: libeay32MT and ssleay32MT.

   Then to enable TLS transport support in PJSIP, just add

     #define PJSIP_HAS_TLS_TRANSPORT 1

   in your pj/config_site.h. When this macro is defined, OpenSSL libraries will
   be automatically linked to the application via the #pragma construct in
   sip_transport_tls_ossl.c file.


  4.2 Building the Projects
     _________________________________________________________________

   Follow the steps below to build the libraries/application using Visual
   Studio:
    1. For Visual Studio 6: open pjproject.dsw workspace file.
    2. For Visual Studio 8 (VS 2005): open pjproject-vs8.sln solution file.
    3. Set pjsua as Active Project.
    4. Select Debug or Release build as appropriate.
    5. Build the project. This will build pjsua application and all libraries
       needed by pjsua.
    6. After  successful  build,  the pjsua application will be placed in
       pjsip-apps/bin directory, and the libraries in lib directory under each
       projects.

   To build the samples:
    1. (Still using the same workspace)
    2. Set samples project as Active Project
    3. Select Debug or Release build as appropriate.
    4. Build the project. This will build all sample applications and all
       libraries needed.
    5. After  successful build, the sample applications will be placed in
       pjsip-apps/bin/samples directory, and the libraries in lib directory
       under each projects.

  4.3 Debugging the Sample Application
     _________________________________________________________________

   The sample applications are build using Samples.mak makefile, therefore it
   is  difficult  to  setup  debugging session in Visual Studio for these
   applications. To solve this issue, the pjsip_apps workspace contain one
   project  called  sample_debug  which  can  be used to debug the sample
   application.

   To setup debugging using sample_debug project:
    1. (Still using pjsip_apps workspace)
    2. Set sample_debug project as Active Project
    3. Edit debug.c file inside this project.
    4. Modify the #include line to include the particular sample application to
       debug
    5. Select Debug build.
    6. Build and debug the project.


5. Building for Windows Mobile Targets (Windows CE/WinCE/PDA/SmartPhone)
     _________________________________________________________________

   PJ supports building SIP and media stacks and applications for Windows
   Mobile targets. A very simple WinCE SIP user agent (with media) application
   is provided just as proof of concept that the port works.

  5.1 Requirements
     _________________________________________________________________

   One of the following development tools is needed to build SIP and media
   components for Windows Mobile:
     * Microsoft Embedded Visual C++ 4 with appropriate SDKs, or
     * Microsoft Visual Studio 2005 for Windows Mobile with appropriate SDKs.

   Note that VS2005 is not directly supported (as I don't have the tools), but
   it is reported to work (I assumed that VS2005 for Windows Mobile can import
   EVC4 workspace file).

  5.2 Building the Projects
     _________________________________________________________________

   The Windows Mobile port is included in the main source distribution. Please
   follow  the  following  steps  to build the WinCE libraries and sample
   application:
    1. Open pjsip-apps/build/wince-evc4/wince_demos.vcw workspace file. If
       later version of EVC4 is being used, this may cause the workspace file
       to be converted to the appropriate format.
    2. Select pjsua_wince project as the Active Project.
    3. Select the appropriate SDK (for example Pocket PC 2003 SDK or SmartPhone
       2003 SDK)
    4. Select the appropriate configuration (for example, Win32 (WCE Emulator
       Debug) to debug the program in emulator, or other configurations such as
       ARMV4, MIPS, SH3, SH4, or whatever suitable for the device)
    5. Select the appropriate device (Emulator or the actual Device).
    6. Build the project. This will build the sample WinCE application and all
       libraries (SIP, Media, etc.) needed by this application.

   Notes

          + If the config_site.h includes config_site_sample.h file, then
            there are certain configuration in config_site_sample.h that get
            activated for Windows CE targets. Please make sure that these
            configurations are suitable for the application.
          + The libraries, binaries and object files produced by the build
            process are located under build/wince-evc4/output directory of each
            projects.


6. Older PJLIB Build System for Non-Autoconf Targets (e.g. RTEMS)
     _________________________________________________________________

   The old PJLIB build system can still be used for building PJ libraries, for
   example for RTEMS target. Please see the Porting PJLIB page in PJLIB
   Reference documentation for information on how to support new target using
   this build system.

  6.1 Supported Targets
     _________________________________________________________________

   The older build system supports building PJ libraries for the following
   operating systems:
     * RTEMS
     * Linux
     * MacOS X
     * Cygwin and Mingw

   And it supports the following target architectures:
     * i386, x86_64, itanium
     * ARM
     * mips
     * powerpc
     * mpc860
     * etc.

   For other targets, specific files need to be added to the build system,
   please see the Porting PJLIB page in PJLIB Reference documentation for
   details.

  6.2 Invoking the Build System
     _________________________________________________________________

   To invoke the older build system, run the following:



   $ cd pjproject
   $ ./configure-legacy
   $ make dep && make clean && make



7. Running the Applications
     _________________________________________________________________

   Upon successful build, the output libraries (PJLIB, PJLIB-UTIL, PJMEDIA,
   PJSIP, etc.) are put under ./lib sub-directory under each project directory.
   In addition, some applications may also be built, and such applications will
   be put in ./bin sub-directory under each project directory.


  7.1 pjsua
     _________________________________________________________________

   pjsua is the reference implementation for both PJSIP and PJMEDIA stack, and
   is  the  main target of the build system. Upon successful build, pjsua
   application will be put in pjsip-apps/bin directory.

   pjsua manual can be found in pjsua Manual Page.


  7.2 Sample Applications
     _________________________________________________________________

   Sample applications will be built with the Makefile build system. For Visual
   Studio, you have to build the samples manually by selecting and building the
   Samples project inside pjsip-apps/build/pjsip_apps.dsw project workspace.

   Upon   successful   build,   the   sample   applications  are  put  in
   pjsip-apps/bin/samples directory.

   The  sample applications are described in PJMEDIA Samples Page and
   PJSIP Samples Page in the website.


  7.3 pjlib-test
     _________________________________________________________________

   pjlib-test contains comprehensive tests for testing PJLIB functionality.
   This application will only be built when the Makefile build system is used;
   with  Visual  Studio, one has to open pjlib.dsw project in pjlib/build
   directory to build this application.

   If  you're  porting PJLIB to new target, it is recommended to run this
   application to make sure that all functionalities works as expected.


  7.4 pjsip-test
     _________________________________________________________________

   pjsip-test contains codes for testing various SIP functionalities in PJSIP
   and also to benchmark static performance metrics such as message parsing per
   second.



8. Using PJPROJECT with Applications
     _________________________________________________________________

   Regardless of the build system being used, the following tasks are normally
   needed to be done in order to build application to use PJSIP and PJMEDIA:
    1. Put these include directories in the include search path:
          + pjlib/include
          + pjlib-util/include
          + pjmedia/include
          + pjsip/include
    2. Put these library directories in the library search path:
          + pjlib/lib
          + pjlib-util/lib
          + pjmedia/lib
          + pjsip/lib
    3. Include the relevant PJ header files in the application source file. For
       example, using these would include ALL APIs exported by PJ:

      #include <pjlib.h>
      #include <pjlib-util.h>
      #include <pjsip.h>
      #include <pjsip_ua.h>
      #include <pjsip_simple.h>
      #include <pjsua.h>
      #include <pjmedia.h>
      #include <pjmedia-codec.h>
       (Note: the documentation of the relevant libraries should say which
       header files should be included to get the declaration of the APIs).
    4. Declare the OS macros.
          + For Windows applications built with Visual Studio, we need to
            declare PJ_WIN32=1 macro in the project settings (declaring the
            macro in the source file may not be sufficient).
          + For Windows Mobile applications build with Visual C++, we need to
            declare PJ_WIN32_WINCE=1 macro in the project settings.
          + For  GNU build system/autoconf based build system, we need to
            declare PJ_AUTOCONF=1 macro when compiling the applications.
       (Note: the old PJ build system requires declaring the target processor
       with PJ_M_XXX=1 macro, but this has been made obsolete. The target
       processor  will  be  detected  from compiler's predefined macro by
       pjlib/config.h file).
    5. Link with the appropriate PJ libraries. The following libraries will
       need to be included in the library link specifications:

        pjlib
                Base library used by all libraries.

        pjlib-util
                Auxiliary library containing scanner, XML, STUN, MD5, getopt,
                etc, used by the SIP and media stack.

        pjsip
                SIP core stack library.

        pjsip-ua
                SIP user agent library containing INVITE session, call
                transfer, client registration, etc.

        pjsip-simple
                SIP SIMPLE library for base event framework, presence, instant
                messaging, etc.

        pjsua
                High level SIP UA library, combining SIP and media stack into
                high-level easy to use API.

        pjmedia
                The media framework.

        pjmedia-codec
                Container library for various codecs such as GSM, Speex, and
                iLBC.


   Note: the actual library names will be appended with the target name and the
   build configuration. For example:

        For Visual Studio builds
                The actual library names will look like
                pjlib-i386-win32-vc6-debug.lib,
                pjlib-i386-win32-vc6-release.lib, etc., depending on whether we
                are building the Debug or Release version of the library.

                An easier way to link with the libraries is to include PJ
                project files in the workspace, and to configure project
                dependencies so that the application depends on the PJ
                libraries. This way, we don't need to manually add each PJ
                libraries to the input library file specification, since VS
                will automatically link the dependency libraries with the
                application.

        For Windows Mobile builds
                Unfortunately the PJ libraries built for Windows Mobile will
                not be placed in the usual lib directory, but rather under the
                output directory under build/wince-evc4 project directory.

                An easier way to link with the libraries is to include PJ
                project files in the workspace, and to configure project
                dependencies so that the application depends on the PJ
                libraries. This way, we don't need to manually add each PJ
                libraries to the input library file specification, since VS
                will automatically link the dependency libraries with the
                application.

        For GNU builds
                Application's Makefile can get the PJ library suffix by
                including PJ's build.mak file from the root PJ directory (the
                suffix is contained in TARGET_NAME variable). For example, to
                link with PJLIB and PJMEDIA, we can use this syntax in the
                LDFLAGS: "-lpj-$(TARGET_NAME) -lpjmedia-$(TARGET_NAME)"


    6. Link with system spesific libraries:

        Windows
                Add (among other things): wsock32.lib, ws2_32.lib, ole32.lib,
                dsound.lib

        Linux, *nix, *BSD
                Add (among other things): '-lpthread -lm' (at least).

        MacOS X
                Add (among other things): '-framework CoreAudio -lpthread -lm'.


Appendix I: Common Problems/Frequently Asked Question (FAQ)
     _________________________________________________________________

  I.1 fatal error C1083: Cannot open include file: 'pj/config_site.h': No such
  file or directory

   This error normally occurs when the config_site.h file has not been created.
   This file needs to be created manually (an empty file is sufficient). Please
   follow the Build Preparation instructions above to create this file.








     _________________________________________________________________

   Feedback:
          Thanks for using PJ libraries and for reading this document. Please
          send feedbacks or general comments to <bennylp at pjsip dot org>.



================================================
FILE: deps/pjsip/aconfigure
================================================
#!/bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for pjproject 2.x.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi


as_nl='
'
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z "$BASH_VERSION$ZSH_VERSION" \
    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
  as_echo='print -r --'
  as_echo_n='print -rn --'
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
  as_echo='printf %s\n'
  as_echo_n='printf %s'
else
  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
    as_echo_n='/usr/ucb/echo -n'
  else
    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
    as_echo_n_body='eval
      arg=$1;
      case $arg in #(
      *"$as_nl"*)
	expr "X$arg" : "X\\(.*\\)$as_nl";
	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
      esac;
      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
    '
    export as_echo_n_body
    as_echo_n='sh -c $as_echo_n_body as_echo'
  fi
  export as_echo_body
  as_echo='sh -c $as_echo_body as_echo'
fi

# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
  PATH_SEPARATOR=:
  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
      PATH_SEPARATOR=';'
  }
fi


# IFS
# We need space, tab and new line, in precisely that order.  Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=" ""	$as_nl"

# Find who we are.  Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
  done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  exit 1
fi

# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
# suppresses any "Segmentation fault" message there.  '((' could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '

# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE

# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH

# Use a proper internal environment variable to ensure we don't fall
  # into an infinite loop, continuously re-executing ourselves.
  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
    _as_can_reexec=no; export _as_can_reexec;
    # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
as_fn_exit 255
  fi
  # We don't want this to propagate to other subprocesses.
          { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
  setopt NO_GLOB_SUBST
else
  case \`(set -o) 2>/dev/null\` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi
"
  as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }

exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :

else
  exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
test -x / || exit 1"
  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
  if (eval "$as_required") 2>/dev/null; then :
  as_have_required=yes
else
  as_have_required=no
fi
  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :

else
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  as_found=:
  case $as_dir in #(
	 /*)
	   for as_base in sh bash ksh sh5; do
	     # Try only shells that exist, to save several forks.
	     as_shell=$as_dir/$as_base
	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
  CONFIG_SHELL=$as_shell as_have_required=yes
		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
  break 2
fi
fi
	   done;;
       esac
  as_found=false
done
$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
  CONFIG_SHELL=$SHELL as_have_required=yes
fi; }
IFS=$as_save_IFS


      if test "x$CONFIG_SHELL" != x; then :
  export CONFIG_SHELL
             # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi

    if test x$as_have_required = xno; then :
  $as_echo "$0: This script requires a shell more modern than all"
  $as_echo "$0: the shells that I found on your system."
  if test x${ZSH_VERSION+set} = xset ; then
    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
  else
    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
  fi
  exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS

## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
  { eval $1=; unset $1;}
}
as_unset=as_fn_unset

# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
  return $1
} # as_fn_set_status

# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
  set +e
  as_fn_set_status $1
  exit $1
} # as_fn_exit

# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{

  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || eval $as_mkdir_p || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"


} # as_fn_mkdir_p

# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
  test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
  eval 'as_fn_append ()
  {
    eval $1+=\$2
  }'
else
  as_fn_append ()
  {
    eval $1=\$$1\$2
  }
fi # as_fn_append

# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
  eval 'as_fn_arith ()
  {
    as_val=$(( $* ))
  }'
else
  as_fn_arith ()
  {
    as_val=`expr "$@" || test $? -eq 1`
  }
fi # as_fn_arith


# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
  as_status=$1; test $as_status -eq 0 && as_status=1
  if test "$4"; then
    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
  fi
  $as_echo "$as_me: error: $2" >&2
  as_fn_exit $as_status
} # as_fn_error

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi

if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits


  as_lineno_1=$LINENO as_lineno_1a=$LINENO
  as_lineno_2=$LINENO as_lineno_2a=$LINENO
  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
  sed -n '
    p
    /[$]LINENO/=
  ' <$as_myself |
    sed '
      s/[$]LINENO.*/&-/
      t lineno
      b
      :lineno
      N
      :loop
      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
      t loop
      s/-\n.*//
    ' >$as_me.lineno &&
  chmod +x "$as_me.lineno" ||
    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }

  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
  # already done that, so ensure we don't try to do so again and fall
  # in an infinite loop.  This has already happened in practice.
  _as_can_reexec=no; export _as_can_reexec
  # Don't try to exec as it changes $[0], causing all sort of problems
  # (the dirname of $[0] is not the place where we might find the
  # original and so on.  Autoconf is especially sensitive to this).
  . "./$as_me.lineno"
  # Exit status is that of the last command.
  exit
}

ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
  case `echo 'xy\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  xy)  ECHO_C='\c';;
  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
       ECHO_T='	';;
  esac;;
*)
  ECHO_N='-n';;
esac

rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
  if ln -s conf$$.file conf$$ 2>/dev/null; then
    as_ln_s='ln -s'
    # ... but there are two gotchas:
    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    # In both cases, we have to default to `cp -pR'.
    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
      as_ln_s='cp -pR'
  elif ln conf$$.file conf$$ 2>/dev/null; then
    as_ln_s=ln
  else
    as_ln_s='cp -pR'
  fi
else
  as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null

if mkdir -p . 2>/dev/null; then
  as_mkdir_p='mkdir -p "$as_dir"'
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi

as_test_x='test -x'
as_executable_p=as_fn_executable_p

# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"

# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"


test -n "$DJDIR" || exec 7<&0 </dev/null
exec 6>&1

# Name of the host.
# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`

#
# Initializations.
#
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
cross_compiling=no
subdirs=
MFLAGS=
MAKEFLAGS=

# Identity of this package.
PACKAGE_NAME='pjproject'
PACKAGE_TARNAME='pjproject'
PACKAGE_VERSION='2.x'
PACKAGE_STRING='pjproject 2.x'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''

# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#ifdef STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# ifdef HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#ifdef HAVE_STRING_H
# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"

ac_subst_vars='LTLIBOBJS
LIBOBJS
ac_main_obj
ac_host
libcrypto_present
libssl_present
openssl_h_present
ac_no_ssl
ac_webrtc_platform
ac_libyuv_ldflags
ac_libyuv_cflags
ac_openh264_ldflags
ac_openh264_cflags
ac_v4l2_ldflags
ac_v4l2_cflags
ac_vpx_ldflags
ac_vpx_cflags
SAVED_PKG_CONFIG_PATH
ac_ffmpeg_ldflags
ac_ffmpeg_cflags
PKG_CONFIG
ac_resample_dll
ac_no_g7221_codec
ac_no_speex_aec
ac_no_large_filter
ac_no_small_filter
ac_dshow_ldflags
ac_dshow_cflags
ac_pjmedia_video_has_dshow
ac_avf_cflags
ac_pjmedia_video_has_avf
ac_ios_cflags
ac_pjmedia_video_has_ios
ac_pjmedia_video
ac_pjmedia_audiodev_objs
ac_linux_poll
ac_os_objs
EGREP
GREP
CPP
ac_cross_compile
ac_shlib_suffix
ac_build_mak_vars
ac_pjdir
CC_CFLAGS
CC_OPTIMIZE
CC_DEF
CC_INC
CC_OUT
LIBEXT2
LIBEXT
LDOUT
LD
AR_FLAGS
ac_ct_AR
AR
RANLIB
ac_ct_CXX
CXXFLAGS
CXX
OBJEXT
EXEEXT
ac_ct_CC
CPPFLAGS
LDFLAGS
CFLAGS
CC
target_os
target_vendor
target_cpu
target
host_os
host_vendor
host_cpu
host
build_os
build_vendor
build_cpu
build
target_alias
host_alias
build_alias
LIBS
ECHO_T
ECHO_N
ECHO_C
DEFS
mandir
localedir
libdir
psdir
pdfdir
dvidir
htmldir
infodir
docdir
oldincludedir
includedir
localstatedir
sharedstatedir
sysconfdir
datadir
datarootdir
libexecdir
sbindir
bindir
program_transform_name
prefix
exec_prefix
PACKAGE_URL
PACKAGE_BUGREPORT
PACKAGE_STRING
PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_epoll
enable_small_filter
enable_large_filter
enable_speex_aec
enable_g7221_codec
enable_libsamplerate
enable_resample_dll
with_ffmpeg
with_vpx
enable_v4l2
with_openh264
enable_openh264
with_libyuv
enable_libyuv
with_ssl
enable_ssl
'
      ac_precious_vars='build_alias
host_alias
target_alias
CC
CFLAGS
LDFLAGS
LIBS
CPPFLAGS
CXX
CXXFLAGS
CCC
CPP'


# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
ac_unrecognized_opts=
ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
exec_prefix=NONE
no_create=
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
verbose=
x_includes=NONE
x_libraries=NONE

# Installation directory options.
# These are left unexpanded so users can "make install exec_prefix=/foo"
# and all the variables that are supposed to be based on exec_prefix
# by default will actually change.
# Use braces instead of parens because sh, perl, etc. also accept them.
# (The list follows the same order as the GNU Coding Standards.)
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datarootdir='${prefix}/share'
datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
pdfdir='${docdir}'
psdir='${docdir}'
libdir='${exec_prefix}/lib'
localedir='${datarootdir}/locale'
mandir='${datarootdir}/man'

ac_prev=
ac_dashdash=
for ac_option
do
  # If the previous option needs an argument, assign it.
  if test -n "$ac_prev"; then
    eval $ac_prev=\$ac_option
    ac_prev=
    continue
  fi

  case $ac_option in
  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
  *=)   ac_optarg= ;;
  *)    ac_optarg=yes ;;
  esac

  # Accept the important Cygnus configure options, so we can diagnose typos.

  case $ac_dashdash$ac_option in
  --)
    ac_dashdash=yes ;;

  -bindir | --bindir | --bindi | --bind | --bin | --bi)
    ac_prev=bindir ;;
  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
    bindir=$ac_optarg ;;

  -build | --build | --buil | --bui | --bu)
    ac_prev=build_alias ;;
  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
    build_alias=$ac_optarg ;;

  -cache-file | --cache-file | --cache-fil | --cache-fi \
  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
    ac_prev=cache_file ;;
  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
    cache_file=$ac_optarg ;;

  --config-cache | -C)
    cache_file=config.cache ;;

  -datadir | --datadir | --datadi | --datad)
    ac_prev=datadir ;;
  -datadir=* | --datadir=* | --datadi=* | --datad=*)
    datadir=$ac_optarg ;;

  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
  | --dataroo | --dataro | --datar)
    ac_prev=datarootdir ;;
  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
    datarootdir=$ac_optarg ;;

  -disable-* | --disable-*)
    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid feature name: $ac_useropt"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"enable_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval enable_$ac_useropt=no ;;

  -docdir | --docdir | --docdi | --doc | --do)
    ac_prev=docdir ;;
  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
    docdir=$ac_optarg ;;

  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
    ac_prev=dvidir ;;
  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
    dvidir=$ac_optarg ;;

  -enable-* | --enable-*)
    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid feature name: $ac_useropt"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"enable_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval enable_$ac_useropt=\$ac_optarg ;;

  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
  | --exec | --exe | --ex)
    ac_prev=exec_prefix ;;
  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
  | --exec=* | --exe=* | --ex=*)
    exec_prefix=$ac_optarg ;;

  -gas | --gas | --ga | --g)
    # Obsolete; use --with-gas.
    with_gas=yes ;;

  -help | --help | --hel | --he | -h)
    ac_init_help=long ;;
  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
    ac_init_help=recursive ;;
  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
    ac_init_help=short ;;

  -host | --host | --hos | --ho)
    ac_prev=host_alias ;;
  -host=* | --host=* | --hos=* | --ho=*)
    host_alias=$ac_optarg ;;

  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
    ac_prev=htmldir ;;
  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
  | --ht=*)
    htmldir=$ac_optarg ;;

  -includedir | --includedir | --includedi | --included | --include \
  | --includ | --inclu | --incl | --inc)
    ac_prev=includedir ;;
  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
  | --includ=* | --inclu=* | --incl=* | --inc=*)
    includedir=$ac_optarg ;;

  -infodir | --infodir | --infodi | --infod | --info | --inf)
    ac_prev=infodir ;;
  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
    infodir=$ac_optarg ;;

  -libdir | --libdir | --libdi | --libd)
    ac_prev=libdir ;;
  -libdir=* | --libdir=* | --libdi=* | --libd=*)
    libdir=$ac_optarg ;;

  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
  | --libexe | --libex | --libe)
    ac_prev=libexecdir ;;
  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
  | --libexe=* | --libex=* | --libe=*)
    libexecdir=$ac_optarg ;;

  -localedir | --localedir | --localedi | --localed | --locale)
    ac_prev=localedir ;;
  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
    localedir=$ac_optarg ;;

  -localstatedir | --localstatedir | --localstatedi | --localstated \
  | --localstate | --localstat | --localsta | --localst | --locals)
    ac_prev=localstatedir ;;
  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
    localstatedir=$ac_optarg ;;

  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
    ac_prev=mandir ;;
  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
    mandir=$ac_optarg ;;

  -nfp | --nfp | --nf)
    # Obsolete; use --without-fp.
    with_fp=no ;;

  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
  | --no-cr | --no-c | -n)
    no_create=yes ;;

  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
    no_recursion=yes ;;

  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
  | --oldin | --oldi | --old | --ol | --o)
    ac_prev=oldincludedir ;;
  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
    oldincludedir=$ac_optarg ;;

  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
    ac_prev=prefix ;;
  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
    prefix=$ac_optarg ;;

  -program-prefix | --program-prefix | --program-prefi | --program-pref \
  | --program-pre | --program-pr | --program-p)
    ac_prev=program_prefix ;;
  -program-prefix=* | --program-prefix=* | --program-prefi=* \
  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
    program_prefix=$ac_optarg ;;

  -program-suffix | --program-suffix | --program-suffi | --program-suff \
  | --program-suf | --program-su | --program-s)
    ac_prev=program_suffix ;;
  -program-suffix=* | --program-suffix=* | --program-suffi=* \
  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
    program_suffix=$ac_optarg ;;

  -program-transform-name | --program-transform-name \
  | --program-transform-nam | --program-transform-na \
  | --program-transform-n | --program-transform- \
  | --program-transform | --program-transfor \
  | --program-transfo | --program-transf \
  | --program-trans | --program-tran \
  | --progr-tra | --program-tr | --program-t)
    ac_prev=program_transform_name ;;
  -program-transform-name=* | --program-transform-name=* \
  | --program-transform-nam=* | --program-transform-na=* \
  | --program-transform-n=* | --program-transform-=* \
  | --program-transform=* | --program-transfor=* \
  | --program-transfo=* | --program-transf=* \
  | --program-trans=* | --program-tran=* \
  | --progr-tra=* | --program-tr=* | --program-t=*)
    program_transform_name=$ac_optarg ;;

  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
    ac_prev=pdfdir ;;
  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
    pdfdir=$ac_optarg ;;

  -psdir | --psdir | --psdi | --psd | --ps)
    ac_prev=psdir ;;
  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
    psdir=$ac_optarg ;;

  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
  | -silent | --silent | --silen | --sile | --sil)
    silent=yes ;;

  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
    ac_prev=sbindir ;;
  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
  | --sbi=* | --sb=*)
    sbindir=$ac_optarg ;;

  -sharedstatedir | --sharedstatedir | --sharedstatedi \
  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
  | --sharedst | --shareds | --shared | --share | --shar \
  | --sha | --sh)
    ac_prev=sharedstatedir ;;
  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
  | --sha=* | --sh=*)
    sharedstatedir=$ac_optarg ;;

  -site | --site | --sit)
    ac_prev=site ;;
  -site=* | --site=* | --sit=*)
    site=$ac_optarg ;;

  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
    ac_prev=srcdir ;;
  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
    srcdir=$ac_optarg ;;

  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
  | --syscon | --sysco | --sysc | --sys | --sy)
    ac_prev=sysconfdir ;;
  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
    sysconfdir=$ac_optarg ;;

  -target | --target | --targe | --targ | --tar | --ta | --t)
    ac_prev=target_alias ;;
  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
    target_alias=$ac_optarg ;;

  -v | -verbose | --verbose | --verbos | --verbo | --verb)
    verbose=yes ;;

  -version | --version | --versio | --versi | --vers | -V)
    ac_init_version=: ;;

  -with-* | --with-*)
    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid package name: $ac_useropt"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"with_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval with_$ac_useropt=\$ac_optarg ;;

  -without-* | --without-*)
    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid package name: $ac_useropt"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"with_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval with_$ac_useropt=no ;;

  --x)
    # Obsolete; use --with-x.
    with_x=yes ;;

  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
  | --x-incl | --x-inc | --x-in | --x-i)
    ac_prev=x_includes ;;
  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
    x_includes=$ac_optarg ;;

  -x-libraries | --x-libraries | --x-librarie | --x-librari \
  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
    ac_prev=x_libraries ;;
  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
    x_libraries=$ac_optarg ;;

  -*) as_fn_error $? "unrecognized option: \`$ac_option'
Try \`$0 --help' for more information"
    ;;

  *=*)
    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
    # Reject names that are not valid shell variable names.
    case $ac_envvar in #(
      '' | [0-9]* | *[!_$as_cr_alnum]* )
      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
    esac
    eval $ac_envvar=\$ac_optarg
    export $ac_envvar ;;

  *)
    # FIXME: should be removed in autoconf 3.0.
    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
    ;;

  esac
done

if test -n "$ac_prev"; then
  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
  as_fn_error $? "missing argument to $ac_option"
fi

if test -n "$ac_unrecognized_opts"; then
  case $enable_option_checking in
    no) ;;
    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
  esac
fi

# Check all directory arguments for consistency.
for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
		datadir sysconfdir sharedstatedir localstatedir includedir \
		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
		libdir localedir mandir
do
  eval ac_val=\$$ac_var
  # Remove trailing slashes.
  case $ac_val in
    */ )
      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
      eval $ac_var=\$ac_val;;
  esac
  # Be sure to have absolute directory names.
  case $ac_val in
    [\\/$]* | ?:[\\/]* )  continue;;
    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
  esac
  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done

# There might be people who depend on the old broken behavior: `$host'
# used to hold the argument of --host etc.
# FIXME: To remove some day.
build=$build_alias
host=$host_alias
target=$target_alias

# FIXME: To remove some day.
if test "x$host_alias" != x; then
  if test "x$build_alias" = x; then
    cross_compiling=maybe
  elif test "x$build_alias" != "x$host_alias"; then
    cross_compiling=yes
  fi
fi

ac_tool_prefix=
test -n "$host_alias" && ac_tool_prefix=$host_alias-

test "$silent" = yes && exec 6>/dev/null


ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
  as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
  as_fn_error $? "pwd does not report name of working directory"


# Find the source files, if location was not specified.
if test -z "$srcdir"; then
  ac_srcdir_defaulted=yes
  # Try the directory containing this script, then the parent directory.
  ac_confdir=`$as_dirname -- "$as_myself" ||
$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_myself" : 'X\(//\)[^/]' \| \
	 X"$as_myself" : 'X\(//\)$' \| \
	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_myself" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
  srcdir=$ac_confdir
  if test ! -r "$srcdir/$ac_unique_file"; then
    srcdir=..
  fi
else
  ac_srcdir_defaulted=no
fi
if test ! -r "$srcdir/$ac_unique_file"; then
  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
	pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
  srcdir=.
fi
# Remove unnecessary trailing slashes from srcdir.
# Double slashes in file names in object file debugging info
# mess up M-x gdb in Emacs.
case $srcdir in
*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
esac
for ac_var in $ac_precious_vars; do
  eval ac_env_${ac_var}_set=\${${ac_var}+set}
  eval ac_env_${ac_var}_value=\$${ac_var}
  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
  eval ac_cv_env_${ac_var}_value=\$${ac_var}
done

#
# Report the --help message.
#
if test "$ac_init_help" = "long"; then
  # Omit some internal or obsolete options to make the list less imposing.
  # This message is too long to be a string in the A/UX 3.1 sh.
  cat <<_ACEOF
\`configure' configures pjproject 2.x to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print \`checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for \`--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or \`..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [$ac_default_prefix]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/pjproject]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]
_ACEOF

  cat <<\_ACEOF

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
  --target=TARGET   configure for building compilers for TARGET [HOST]
_ACEOF
fi

if test -n "$ac_init_help"; then
  case $ac_init_help in
     short | recursive ) echo "Configuration of pjproject 2.x:";;
   esac
  cat <<\_ACEOF

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-epoll          Use /dev/epoll ioqueue on Linux (experimental)
  --disable-small-filter  Exclude small filter in resampling
  --disable-large-filter  Exclude large filter in resampling
  --disable-speex-aec     Exclude Speex Acoustic Echo Canceller/AEC
  --disable-g7221-codec   Exclude G.7221 codec in the build
  --enable-libsamplerate  Link with libsamplerate when available. Note that
                          PJMEDIA_RESAMPLE_IMP must also be configured
  --enable-resample-dll   Build libresample as shared library
  --disable-v4l2          Disable Video4Linux2 (default: not disabled)
  --disable-openh264      Disable OpenH264 (default: not disabled)
  --disable-libyuv        Exclude libyuv in the build
  --disable-ssl           Exclude SSL support the build (default: autodetect)


Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-ffmpeg=DIR       Specify alternate FFMPEG prefix
  --with-vpx=DIR          Specify alternate libVPX prefix
  --with-openh264=DIR     Specify alternate OpenH264 prefix
  --with-libyuv=DIR       Specify alternate libyuv prefix
  --with-ssl=DIR          Specify alternate libssl prefix

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  CPP         C preprocessor

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to the package provider.
_ACEOF
ac_status=$?
fi

if test "$ac_init_help" = "recursive"; then
  # If there are subdirs, report their specific --help.
  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
    test -d "$ac_dir" ||
      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
      continue
    ac_builddir=.

case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
  # A ".." for each directory in $ac_dir_suffix.
  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
  case $ac_top_builddir_sub in
  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
  esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix

case $srcdir in
  .)  # We are building in place.
    ac_srcdir=.
    ac_top_srcdir=$ac_top_builddir_sub
    ac_abs_top_srcdir=$ac_pwd ;;
  [\\/]* | ?:[\\/]* )  # Absolute name.
    ac_srcdir=$srcdir$ac_dir_suffix;
    ac_top_srcdir=$srcdir
    ac_abs_top_srcdir=$srcdir ;;
  *) # Relative name.
    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
    ac_top_srcdir=$ac_top_build_prefix$srcdir
    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix

    cd "$ac_dir" || { ac_status=$?; continue; }
    # Check for guested configure.
    if test -f "$ac_srcdir/configure.gnu"; then
      echo &&
      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
    elif test -f "$ac_srcdir/configure"; then
      echo &&
      $SHELL "$ac_srcdir/configure" --help=recursive
    else
      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
    fi || ac_status=$?
    cd "$ac_pwd" || { ac_status=$?; break; }
  done
fi

test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
  cat <<\_ACEOF
pjproject configure 2.x
generated by GNU Autoconf 2.69

Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
  exit
fi

## ------------------------ ##
## Autoconf initialization. ##
## ------------------------ ##

# ac_fn_c_try_compile LINENO
# --------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext
  if { { ac_try="$ac_compile"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_compile") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    grep -v '^ *+' conftest.err >conftest.er1
    cat conftest.er1 >&5
    mv -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } && {
	 test -z "$ac_c_werror_flag" ||
	 test ! -s conftest.err
       } && test -s conftest.$ac_objext; then :
  ac_retval=0
else
  $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

	ac_retval=1
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_compile

# ac_fn_cxx_try_compile LINENO
# ----------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_cxx_try_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext
  if { { ac_try="$ac_compile"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_compile") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    grep -v '^ *+' conftest.err >conftest.er1
    cat conftest.er1 >&5
    mv -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } && {
	 test -z "$ac_cxx_werror_flag" ||
	 test ! -s conftest.err
       } && test -s conftest.$ac_objext; then :
  ac_retval=0
else
  $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

	ac_retval=1
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_cxx_try_compile

# ac_fn_c_try_link LINENO
# -----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext conftest$ac_exeext
  if { { ac_try="$ac_link"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_link") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    grep -v '^ *+' conftest.err >conftest.er1
    cat conftest.er1 >&5
    mv -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } && {
	 test -z "$ac_c_werror_flag" ||
	 test ! -s conftest.err
       } && test -s conftest$ac_exeext && {
	 test "$cross_compiling" = yes ||
	 test -x conftest$ac_exeext
       }; then :
  ac_retval=0
else
  $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

	ac_retval=1
fi
  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
  # interfere with the next link command; also delete a directory that is
  # left behind by Apple's compiler.  We do this before executing the actions.
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_link

# ac_fn_c_try_run LINENO
# ----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
# that executables *can* be run.
ac_fn_c_try_run ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  if { { ac_try="$ac_link"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_link") 2>&5
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
  { { case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_try") 2>&5
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; }; then :
  ac_retval=0
else
  $as_echo "$as_me: program exited with status $ac_status" >&5
       $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

       ac_retval=$ac_status
fi
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_run

# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  if { { ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    grep -v '^ *+' conftest.err >conftest.er1
    cat conftest.er1 >&5
    mv -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } > conftest.i && {
	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
	 test ! -s conftest.err
       }; then :
  ac_retval=0
else
  $as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

    ac_retval=1
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_cpp

# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
# INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  eval "$3=yes"
else
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_compile

# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists, giving a warning if it cannot be compiled using
# the include files in INCLUDES and setting the cache variable VAR
# accordingly.
ac_fn_c_check_header_mongrel ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  if eval \${$3+:} false; then :
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
  $as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
else
  # Is the header compilable?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
$as_echo_n "checking $2 usability... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  ac_header_compiler=yes
else
  ac_header_compiler=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
$as_echo "$ac_header_compiler" >&6; }

# Is the header present?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
$as_echo_n "checking $2 presence... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <$2>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
  ac_header_preproc=yes
else
  ac_header_preproc=no
fi
rm -f conftest.err conftest.i conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
$as_echo "$ac_header_preproc" >&6; }

# So?  What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
  yes:no: )
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
    ;;
  no:yes:* )
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
    ;;
esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
  $as_echo_n "(cached) " >&6
else
  eval "$3=\$ac_header_compiler"
fi
eval ac_res=\$$3
	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_mongrel

# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
#define $2 innocuous_$2

/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char $2 (); below.
    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
    <limits.h> exists even on freestanding compilers.  */

#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif

#undef $2

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
#ifdef __cplusplus
extern "C"
#endif
char $2 ();
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined __stub_$2 || defined __stub___$2
choke me
#endif

int
main ()
{
return $2 ();
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  eval "$3=yes"
else
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_func
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by pjproject $as_me 2.x, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ $0 $@

_ACEOF
exec 5>>config.log
{
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##

hostname = `(hostname || uname -n
Download .txt
gitextract_iouho92m/

├── .boring
├── AUTHORS
├── LICENSE
├── MANIFEST.in
├── README
├── TODO
├── build_inplace
├── debian/
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── docs
│   ├── python-sipsimple.lintian-overrides
│   ├── rules
│   └── source/
│       └── format
├── deps/
│   └── pjsip/
│       ├── COPYING
│       ├── Makefile
│       ├── README.txt
│       ├── aconfigure
│       ├── aconfigure.ac
│       ├── base_rev
│       ├── build/
│       │   ├── cc-auto.mak.in
│       │   ├── cc-gcc.mak
│       │   ├── common.mak
│       │   ├── host-mingw.mak
│       │   ├── host-unix.mak
│       │   ├── host-win32.mak
│       │   ├── m-arm.mak
│       │   ├── m-auto.mak
│       │   ├── m-i386.mak
│       │   ├── m-x86_64.mak
│       │   ├── os-auto.mak.in
│       │   └── rules.mak
│       ├── build.mak.in
│       ├── config.guess
│       ├── config.sub
│       ├── configure
│       ├── install-sh
│       ├── pjlib/
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   └── os-auto.mak.in
│       │   ├── docs/
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.css
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pj/
│       │   │   │   ├── activesock.h
│       │   │   │   ├── addr_resolv.h
│       │   │   │   ├── array.h
│       │   │   │   ├── assert.h
│       │   │   │   ├── compat/
│       │   │   │   │   ├── assert.h
│       │   │   │   │   ├── cc_armcc.h
│       │   │   │   │   ├── cc_codew.h
│       │   │   │   │   ├── cc_gcc.h
│       │   │   │   │   ├── cc_gcce.h
│       │   │   │   │   ├── cc_msvc.h
│       │   │   │   │   ├── cc_mwcc.h
│       │   │   │   │   ├── ctype.h
│       │   │   │   │   ├── errno.h
│       │   │   │   │   ├── high_precision.h
│       │   │   │   │   ├── m_alpha.h
│       │   │   │   │   ├── m_armv4.h
│       │   │   │   │   ├── m_auto.h.in
│       │   │   │   │   ├── m_i386.h
│       │   │   │   │   ├── m_m68k.h
│       │   │   │   │   ├── m_powerpc.h
│       │   │   │   │   ├── m_sparc.h
│       │   │   │   │   ├── m_x86_64.h
│       │   │   │   │   ├── malloc.h
│       │   │   │   │   ├── os_auto.h.in
│       │   │   │   │   ├── os_darwinos.h
│       │   │   │   │   ├── os_linux.h
│       │   │   │   │   ├── os_linux_kernel.h
│       │   │   │   │   ├── os_palmos.h
│       │   │   │   │   ├── os_rtems.h
│       │   │   │   │   ├── os_sunos.h
│       │   │   │   │   ├── os_symbian.h
│       │   │   │   │   ├── os_win32.h
│       │   │   │   │   ├── os_win32_wince.h
│       │   │   │   │   ├── rand.h
│       │   │   │   │   ├── setjmp.h
│       │   │   │   │   ├── size_t.h
│       │   │   │   │   ├── socket.h
│       │   │   │   │   ├── stdarg.h
│       │   │   │   │   ├── stdfileio.h
│       │   │   │   │   ├── string.h
│       │   │   │   │   └── time.h
│       │   │   │   ├── config.h
│       │   │   │   ├── config_site_sample.h
│       │   │   │   ├── ctype.h
│       │   │   │   ├── doxygen.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── except.h
│       │   │   │   ├── fifobuf.h
│       │   │   │   ├── file_access.h
│       │   │   │   ├── file_io.h
│       │   │   │   ├── guid.h
│       │   │   │   ├── hash.h
│       │   │   │   ├── ioqueue.h
│       │   │   │   ├── ip_helper.h
│       │   │   │   ├── list.h
│       │   │   │   ├── list_i.h
│       │   │   │   ├── lock.h
│       │   │   │   ├── log.h
│       │   │   │   ├── math.h
│       │   │   │   ├── os.h
│       │   │   │   ├── pool.h
│       │   │   │   ├── pool_alt.h
│       │   │   │   ├── pool_buf.h
│       │   │   │   ├── pool_i.h
│       │   │   │   ├── rand.h
│       │   │   │   ├── rbtree.h
│       │   │   │   ├── sock.h
│       │   │   │   ├── sock_qos.h
│       │   │   │   ├── sock_select.h
│       │   │   │   ├── ssl_sock.h
│       │   │   │   ├── string.h
│       │   │   │   ├── string_i.h
│       │   │   │   ├── timer.h
│       │   │   │   ├── types.h
│       │   │   │   └── unicode.h
│       │   │   ├── pj++/
│       │   │   │   ├── file.hpp
│       │   │   │   ├── hash.hpp
│       │   │   │   ├── list.hpp
│       │   │   │   ├── lock.hpp
│       │   │   │   ├── os.hpp
│       │   │   │   ├── pool.hpp
│       │   │   │   ├── proactor.hpp
│       │   │   │   ├── scanner.hpp
│       │   │   │   ├── sock.hpp
│       │   │   │   ├── string.hpp
│       │   │   │   ├── timer.hpp
│       │   │   │   ├── tree.hpp
│       │   │   │   └── types.hpp
│       │   │   ├── pjlib++.hpp
│       │   │   └── pjlib.h
│       │   └── src/
│       │       └── pj/
│       │           ├── activesock.c
│       │           ├── addr_resolv_linux_kernel.c
│       │           ├── addr_resolv_sock.c
│       │           ├── addr_resolv_symbian.cpp
│       │           ├── array.c
│       │           ├── compat/
│       │           │   ├── longjmp_i386.S
│       │           │   ├── setjmp_i386.S
│       │           │   ├── sigjmp.c
│       │           │   ├── string.c
│       │           │   └── string_compat.c
│       │           ├── config.c
│       │           ├── ctype.c
│       │           ├── errno.c
│       │           ├── except.c
│       │           ├── exception_symbian.cpp
│       │           ├── extra-exports.c
│       │           ├── fifobuf.c
│       │           ├── file_access_unistd.c
│       │           ├── file_access_win32.c
│       │           ├── file_io_ansi.c
│       │           ├── file_io_win32.c
│       │           ├── guid.c
│       │           ├── guid_simple.c
│       │           ├── guid_uuid.c
│       │           ├── guid_win32.c
│       │           ├── hash.c
│       │           ├── ioqueue_common_abs.c
│       │           ├── ioqueue_common_abs.h
│       │           ├── ioqueue_dummy.c
│       │           ├── ioqueue_epoll.c
│       │           ├── ioqueue_linux_kernel.c
│       │           ├── ioqueue_select.c
│       │           ├── ioqueue_symbian.cpp
│       │           ├── ioqueue_winnt.c
│       │           ├── ip_helper_generic.c
│       │           ├── ip_helper_symbian.cpp
│       │           ├── ip_helper_win32.c
│       │           ├── list.c
│       │           ├── lock.c
│       │           ├── log.c
│       │           ├── log_writer_printk.c
│       │           ├── log_writer_stdout.c
│       │           ├── log_writer_symbian_console.cpp
│       │           ├── os_core_darwin.m
│       │           ├── os_core_linux_kernel.c
│       │           ├── os_core_symbian.cpp
│       │           ├── os_core_unix.c
│       │           ├── os_core_win32.c
│       │           ├── os_error_linux_kernel.c
│       │           ├── os_error_symbian.cpp
│       │           ├── os_error_unix.c
│       │           ├── os_error_win32.c
│       │           ├── os_info.c
│       │           ├── os_info_iphone.m
│       │           ├── os_info_symbian.cpp
│       │           ├── os_rwmutex.c
│       │           ├── os_symbian.h
│       │           ├── os_time_bsd.c
│       │           ├── os_time_common.c
│       │           ├── os_time_linux_kernel.c
│       │           ├── os_time_unix.c
│       │           ├── os_time_win32.c
│       │           ├── os_timestamp_common.c
│       │           ├── os_timestamp_linux_kernel.c
│       │           ├── os_timestamp_posix.c
│       │           ├── os_timestamp_win32.c
│       │           ├── pool.c
│       │           ├── pool_buf.c
│       │           ├── pool_caching.c
│       │           ├── pool_dbg.c
│       │           ├── pool_policy_kmalloc.c
│       │           ├── pool_policy_malloc.c
│       │           ├── pool_policy_new.cpp
│       │           ├── pool_signature.h
│       │           ├── rand.c
│       │           ├── rbtree.c
│       │           ├── sock_bsd.c
│       │           ├── sock_common.c
│       │           ├── sock_linux_kernel.c
│       │           ├── sock_qos_bsd.c
│       │           ├── sock_qos_common.c
│       │           ├── sock_qos_dummy.c
│       │           ├── sock_qos_symbian.cpp
│       │           ├── sock_qos_wm.c
│       │           ├── sock_select.c
│       │           ├── sock_select_symbian.cpp
│       │           ├── sock_symbian.cpp
│       │           ├── ssl_sock_common.c
│       │           ├── ssl_sock_dump.c
│       │           ├── ssl_sock_ossl.c
│       │           ├── ssl_sock_symbian.cpp
│       │           ├── string.c
│       │           ├── symbols.c
│       │           ├── timer.c
│       │           ├── timer_symbian.cpp
│       │           ├── types.c
│       │           ├── unicode_symbian.cpp
│       │           └── unicode_win32.c
│       ├── pjlib-util/
│       │   ├── build/
│       │   │   └── Makefile
│       │   ├── docs/
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.css
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pjlib-util/
│       │   │   │   ├── base64.h
│       │   │   │   ├── config.h
│       │   │   │   ├── crc32.h
│       │   │   │   ├── dns.h
│       │   │   │   ├── dns_server.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── getopt.h
│       │   │   │   ├── hmac_md5.h
│       │   │   │   ├── hmac_sha1.h
│       │   │   │   ├── http_client.h
│       │   │   │   ├── json.h
│       │   │   │   ├── md5.h
│       │   │   │   ├── pcap.h
│       │   │   │   ├── resolver.h
│       │   │   │   ├── scanner.h
│       │   │   │   ├── scanner_cis_bitwise.h
│       │   │   │   ├── scanner_cis_uint.h
│       │   │   │   ├── sha1.h
│       │   │   │   ├── srv_resolver.h
│       │   │   │   ├── string.h
│       │   │   │   ├── stun_simple.h
│       │   │   │   ├── types.h
│       │   │   │   └── xml.h
│       │   │   └── pjlib-util.h
│       │   └── src/
│       │       └── pjlib-util/
│       │           ├── base64.c
│       │           ├── crc32.c
│       │           ├── dns.c
│       │           ├── dns_dump.c
│       │           ├── dns_server.c
│       │           ├── errno.c
│       │           ├── getopt.c
│       │           ├── hmac_md5.c
│       │           ├── hmac_sha1.c
│       │           ├── http_client.c
│       │           ├── json.c
│       │           ├── md5.c
│       │           ├── pcap.c
│       │           ├── resolver.c
│       │           ├── resolver_wrap.cpp
│       │           ├── scanner.c
│       │           ├── scanner_cis_bitwise.c
│       │           ├── scanner_cis_uint.c
│       │           ├── sha1.c
│       │           ├── srv_resolver.c
│       │           ├── string.c
│       │           ├── stun_simple.c
│       │           ├── stun_simple_client.c
│       │           ├── symbols.c
│       │           ├── xml.c
│       │           └── xml_wrap.cpp
│       ├── pjmedia/
│       │   ├── README.txt
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   └── os-auto.mak.in
│       │   ├── docs/
│       │   │   ├── doxygen.cfg
│       │   │   ├── footer.html
│       │   │   ├── header.html
│       │   │   └── media-flow.vsd
│       │   ├── include/
│       │   │   ├── pjmedia/
│       │   │   │   ├── alaw_ulaw.h
│       │   │   │   ├── avi.h
│       │   │   │   ├── avi_stream.h
│       │   │   │   ├── bidirectional.h
│       │   │   │   ├── circbuf.h
│       │   │   │   ├── clock.h
│       │   │   │   ├── codec.h
│       │   │   │   ├── conference.h
│       │   │   │   ├── config.h
│       │   │   │   ├── config_auto.h.in
│       │   │   │   ├── converter.h
│       │   │   │   ├── delaybuf.h
│       │   │   │   ├── doxygen.h
│       │   │   │   ├── echo.h
│       │   │   │   ├── echo_port.h
│       │   │   │   ├── endpoint.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── event.h
│       │   │   │   ├── format.h
│       │   │   │   ├── frame.h
│       │   │   │   ├── g711.h
│       │   │   │   ├── jbuf.h
│       │   │   │   ├── master_port.h
│       │   │   │   ├── mem_port.h
│       │   │   │   ├── mixer_port.h
│       │   │   │   ├── null_port.h
│       │   │   │   ├── plc.h
│       │   │   │   ├── port.h
│       │   │   │   ├── resample.h
│       │   │   │   ├── rtcp.h
│       │   │   │   ├── rtcp_xr.h
│       │   │   │   ├── rtp.h
│       │   │   │   ├── sdp.h
│       │   │   │   ├── sdp_neg.h
│       │   │   │   ├── session.h
│       │   │   │   ├── signatures.h
│       │   │   │   ├── silencedet.h
│       │   │   │   ├── sound.h
│       │   │   │   ├── sound_port.h
│       │   │   │   ├── splitcomb.h
│       │   │   │   ├── stereo.h
│       │   │   │   ├── stream.h
│       │   │   │   ├── stream_common.h
│       │   │   │   ├── symbian_sound_aps.h
│       │   │   │   ├── tonegen.h
│       │   │   │   ├── transport.h
│       │   │   │   ├── transport_adapter_sample.h
│       │   │   │   ├── transport_ice.h
│       │   │   │   ├── transport_loop.h
│       │   │   │   ├── transport_srtp.h
│       │   │   │   ├── transport_udp.h
│       │   │   │   ├── transport_zrtp.h
│       │   │   │   ├── types.h
│       │   │   │   ├── vid_codec.h
│       │   │   │   ├── vid_codec_util.h
│       │   │   │   ├── vid_port.h
│       │   │   │   ├── vid_stream.h
│       │   │   │   ├── vid_tee.h
│       │   │   │   ├── wav_playlist.h
│       │   │   │   ├── wav_port.h
│       │   │   │   ├── wave.h
│       │   │   │   └── wsola.h
│       │   │   ├── pjmedia-audiodev/
│       │   │   │   ├── audiodev.h
│       │   │   │   ├── audiodev_imp.h
│       │   │   │   ├── config.h
│       │   │   │   └── errno.h
│       │   │   ├── pjmedia-codec/
│       │   │   │   ├── audio_codecs.h
│       │   │   │   ├── config.h
│       │   │   │   ├── config_auto.h.in
│       │   │   │   ├── ffmpeg_vid_codecs.h
│       │   │   │   ├── g722.h
│       │   │   │   ├── g7221.h
│       │   │   │   ├── g7221_sdp_match.h
│       │   │   │   ├── gsm.h
│       │   │   │   ├── h263_packetizer.h
│       │   │   │   ├── h264_packetizer.h
│       │   │   │   ├── ilbc.h
│       │   │   │   ├── openh264.h
│       │   │   │   ├── opus.h
│       │   │   │   ├── passthrough.h
│       │   │   │   ├── speex.h
│       │   │   │   ├── types.h
│       │   │   │   └── vpx.h
│       │   │   ├── pjmedia-codec.h
│       │   │   ├── pjmedia-videodev/
│       │   │   │   ├── avi_dev.h
│       │   │   │   ├── config.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── fb_dev.h
│       │   │   │   ├── videodev.h
│       │   │   │   └── videodev_imp.h
│       │   │   ├── pjmedia.h
│       │   │   ├── pjmedia_audiodev.h
│       │   │   └── pjmedia_videodev.h
│       │   └── src/
│       │       ├── pjmedia/
│       │       │   ├── alaw_ulaw.c
│       │       │   ├── alaw_ulaw_table.c
│       │       │   ├── avi_player.c
│       │       │   ├── bidirectional.c
│       │       │   ├── clock_thread.c
│       │       │   ├── codec.c
│       │       │   ├── conf_switch.c
│       │       │   ├── conference.c
│       │       │   ├── converter.c
│       │       │   ├── converter_libswscale.c
│       │       │   ├── converter_libyuv.c
│       │       │   ├── delaybuf.c
│       │       │   ├── dummy.c
│       │       │   ├── echo_common.c
│       │       │   ├── echo_internal.h
│       │       │   ├── echo_port.c
│       │       │   ├── echo_speex.c
│       │       │   ├── echo_suppress.c
│       │       │   ├── echo_webrtc_aec.c
│       │       │   ├── endpoint.c
│       │       │   ├── errno.c
│       │       │   ├── event.c
│       │       │   ├── ffmpeg_util.c
│       │       │   ├── ffmpeg_util.h
│       │       │   ├── format.c
│       │       │   ├── g711.c
│       │       │   ├── jbuf.c
│       │       │   ├── master_port.c
│       │       │   ├── mem_capture.c
│       │       │   ├── mem_player.c
│       │       │   ├── mixer_port.c
│       │       │   ├── null_port.c
│       │       │   ├── plc_common.c
│       │       │   ├── port.c
│       │       │   ├── resample_libsamplerate.c
│       │       │   ├── resample_port.c
│       │       │   ├── resample_resample.c
│       │       │   ├── resample_speex.c
│       │       │   ├── rtcp.c
│       │       │   ├── rtcp_xr.c
│       │       │   ├── rtp.c
│       │       │   ├── sdp.c
│       │       │   ├── sdp_cmp.c
│       │       │   ├── sdp_neg.c
│       │       │   ├── sdp_wrap.cpp
│       │       │   ├── session.c
│       │       │   ├── silencedet.c
│       │       │   ├── sound_legacy.c
│       │       │   ├── sound_port.c
│       │       │   ├── splitcomb.c
│       │       │   ├── stereo_port.c
│       │       │   ├── stream.c
│       │       │   ├── stream_common.c
│       │       │   ├── stream_info.c
│       │       │   ├── tonegen.c
│       │       │   ├── transport_adapter_sample.c
│       │       │   ├── transport_ice.c
│       │       │   ├── transport_loop.c
│       │       │   ├── transport_srtp.c
│       │       │   ├── transport_udp.c
│       │       │   ├── transport_zrtp.c
│       │       │   ├── types.c
│       │       │   ├── vid_codec.c
│       │       │   ├── vid_codec_util.c
│       │       │   ├── vid_port.c
│       │       │   ├── vid_stream.c
│       │       │   ├── vid_stream_info.c
│       │       │   ├── vid_tee.c
│       │       │   ├── wav_player.c
│       │       │   ├── wav_playlist.c
│       │       │   ├── wav_writer.c
│       │       │   ├── wave.c
│       │       │   └── wsola.c
│       │       ├── pjmedia-audiodev/
│       │       │   ├── alsa_dev.c
│       │       │   ├── audiodev.c
│       │       │   ├── coreaudio_dev.m
│       │       │   ├── errno.c
│       │       │   ├── null_dev.c
│       │       │   └── wmme_dev.c
│       │       ├── pjmedia-codec/
│       │       │   ├── audio_codecs.c
│       │       │   ├── ffmpeg_vid_codecs.c
│       │       │   ├── g722/
│       │       │   │   ├── g722_dec.c
│       │       │   │   ├── g722_dec.h
│       │       │   │   ├── g722_enc.c
│       │       │   │   └── g722_enc.h
│       │       │   ├── g722.c
│       │       │   ├── g7221.c
│       │       │   ├── g7221_sdp_match.c
│       │       │   ├── gsm.c
│       │       │   ├── h263_packetizer.c
│       │       │   ├── h264_packetizer.c
│       │       │   ├── ilbc.c
│       │       │   ├── openh264.cpp
│       │       │   ├── opus.c
│       │       │   ├── passthrough.c
│       │       │   ├── speex_codec.c
│       │       │   └── vpx.c
│       │       └── pjmedia-videodev/
│       │           ├── avf_dev.m
│       │           ├── avi_dev.c
│       │           ├── colorbar_dev.c
│       │           ├── dshow_dev.c
│       │           ├── dshow_filter.cpp
│       │           ├── errno.c
│       │           ├── fb_dev.c
│       │           ├── null_dev.c
│       │           ├── util.c
│       │           ├── util.h
│       │           ├── v4l2_dev.c
│       │           └── videodev.c
│       ├── pjnath/
│       │   ├── build/
│       │   │   └── Makefile
│       │   ├── docs/
│       │   │   ├── UML-class-diagram.dia
│       │   │   ├── doc_ice.h
│       │   │   ├── doc_mainpage.h
│       │   │   ├── doc_nat.h
│       │   │   ├── doc_samples.h
│       │   │   ├── doc_stun.h
│       │   │   ├── doc_turn.h
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.css
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pjnath/
│       │   │   │   ├── config.h
│       │   │   │   ├── errno.h
│       │   │   │   ├── ice_session.h
│       │   │   │   ├── ice_strans.h
│       │   │   │   ├── nat_detect.h
│       │   │   │   ├── stun_auth.h
│       │   │   │   ├── stun_config.h
│       │   │   │   ├── stun_msg.h
│       │   │   │   ├── stun_session.h
│       │   │   │   ├── stun_sock.h
│       │   │   │   ├── stun_transaction.h
│       │   │   │   ├── turn_session.h
│       │   │   │   ├── turn_sock.h
│       │   │   │   └── types.h
│       │   │   └── pjnath.h
│       │   └── src/
│       │       ├── pjnath/
│       │       │   ├── errno.c
│       │       │   ├── ice_session.c
│       │       │   ├── ice_strans.c
│       │       │   ├── nat_detect.c
│       │       │   ├── stun_auth.c
│       │       │   ├── stun_msg.c
│       │       │   ├── stun_msg_dump.c
│       │       │   ├── stun_session.c
│       │       │   ├── stun_sock.c
│       │       │   ├── stun_transaction.c
│       │       │   ├── turn_session.c
│       │       │   └── turn_sock.c
│       │       ├── pjturn-client/
│       │       │   └── client_main.c
│       │       └── pjturn-srv/
│       │           ├── allocation.c
│       │           ├── auth.c
│       │           ├── auth.h
│       │           ├── listener_tcp.c
│       │           ├── listener_udp.c
│       │           ├── main.c
│       │           ├── server.c
│       │           └── turn.h
│       ├── pjsip/
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   └── os-auto.mak.in
│       │   ├── docs/
│       │   │   ├── PJSUA-TESTING.txt
│       │   │   ├── TRANSPORT-PROBLEMS.TXT
│       │   │   ├── doxygen.cfg
│       │   │   ├── doxygen.h
│       │   │   ├── footer.html
│       │   │   └── header.html
│       │   ├── include/
│       │   │   ├── pjsip/
│       │   │   │   ├── print_util.h
│       │   │   │   ├── sip_auth.h
│       │   │   │   ├── sip_auth_aka.h
│       │   │   │   ├── sip_auth_msg.h
│       │   │   │   ├── sip_auth_parser.h
│       │   │   │   ├── sip_autoconf.h.in
│       │   │   │   ├── sip_config.h
│       │   │   │   ├── sip_dialog.h
│       │   │   │   ├── sip_endpoint.h
│       │   │   │   ├── sip_errno.h
│       │   │   │   ├── sip_event.h
│       │   │   │   ├── sip_module.h
│       │   │   │   ├── sip_msg.h
│       │   │   │   ├── sip_multipart.h
│       │   │   │   ├── sip_parser.h
│       │   │   │   ├── sip_private.h
│       │   │   │   ├── sip_resolve.h
│       │   │   │   ├── sip_tel_uri.h
│       │   │   │   ├── sip_transaction.h
│       │   │   │   ├── sip_transport.h
│       │   │   │   ├── sip_transport_loop.h
│       │   │   │   ├── sip_transport_tcp.h
│       │   │   │   ├── sip_transport_tls.h
│       │   │   │   ├── sip_transport_udp.h
│       │   │   │   ├── sip_types.h
│       │   │   │   ├── sip_ua_layer.h
│       │   │   │   ├── sip_uri.h
│       │   │   │   └── sip_util.h
│       │   │   ├── pjsip-simple/
│       │   │   │   ├── errno.h
│       │   │   │   ├── evsub.h
│       │   │   │   ├── evsub_msg.h
│       │   │   │   ├── iscomposing.h
│       │   │   │   ├── mwi.h
│       │   │   │   ├── pidf.h
│       │   │   │   ├── presence.h
│       │   │   │   ├── publish.h
│       │   │   │   ├── rpid.h
│       │   │   │   ├── types.h
│       │   │   │   └── xpidf.h
│       │   │   ├── pjsip-ua/
│       │   │   │   ├── sip_100rel.h
│       │   │   │   ├── sip_inv.h
│       │   │   │   ├── sip_regc.h
│       │   │   │   ├── sip_replaces.h
│       │   │   │   ├── sip_timer.h
│       │   │   │   └── sip_xfer.h
│       │   │   ├── pjsip.h
│       │   │   ├── pjsip_auth.h
│       │   │   ├── pjsip_simple.h
│       │   │   └── pjsip_ua.h
│       │   └── src/
│       │       ├── pjsip/
│       │       │   ├── sip_auth_aka.c
│       │       │   ├── sip_auth_client.c
│       │       │   ├── sip_auth_msg.c
│       │       │   ├── sip_auth_parser.c
│       │       │   ├── sip_auth_parser_wrap.cpp
│       │       │   ├── sip_auth_server.c
│       │       │   ├── sip_config.c
│       │       │   ├── sip_dialog.c
│       │       │   ├── sip_dialog_wrap.cpp
│       │       │   ├── sip_endpoint.c
│       │       │   ├── sip_endpoint_wrap.cpp
│       │       │   ├── sip_errno.c
│       │       │   ├── sip_msg.c
│       │       │   ├── sip_multipart.c
│       │       │   ├── sip_parser.c
│       │       │   ├── sip_parser_wrap.cpp
│       │       │   ├── sip_resolve.c
│       │       │   ├── sip_tel_uri.c
│       │       │   ├── sip_tel_uri_wrap.cpp
│       │       │   ├── sip_transaction.c
│       │       │   ├── sip_transport.c
│       │       │   ├── sip_transport_loop.c
│       │       │   ├── sip_transport_tcp.c
│       │       │   ├── sip_transport_tls.c
│       │       │   ├── sip_transport_udp.c
│       │       │   ├── sip_transport_wrap.cpp
│       │       │   ├── sip_ua_layer.c
│       │       │   ├── sip_uri.c
│       │       │   ├── sip_util.c
│       │       │   ├── sip_util_proxy.c
│       │       │   ├── sip_util_proxy_wrap.cpp
│       │       │   ├── sip_util_statefull.c
│       │       │   └── sip_util_wrap.cpp
│       │       ├── pjsip-simple/
│       │       │   ├── errno.c
│       │       │   ├── evsub.c
│       │       │   ├── evsub_msg.c
│       │       │   ├── iscomposing.c
│       │       │   ├── mwi.c
│       │       │   ├── pidf.c
│       │       │   ├── presence.c
│       │       │   ├── presence_body.c
│       │       │   ├── publishc.c
│       │       │   ├── rpid.c
│       │       │   └── xpidf.c
│       │       └── pjsip-ua/
│       │           ├── sip_100rel.c
│       │           ├── sip_inv.c
│       │           ├── sip_reg.c
│       │           ├── sip_replaces.c
│       │           ├── sip_timer.c
│       │           └── sip_xfer.c
│       ├── third_party/
│       │   ├── README.txt
│       │   ├── bdsound/
│       │   │   └── include/
│       │   │       └── bdimad.h
│       │   ├── build/
│       │   │   ├── Makefile
│       │   │   ├── g7221/
│       │   │   │   └── Makefile
│       │   │   ├── gsm/
│       │   │   │   ├── Makefile
│       │   │   │   └── config.h
│       │   │   ├── ilbc/
│       │   │   │   └── Makefile
│       │   │   ├── milenage/
│       │   │   │   └── Makefile
│       │   │   ├── opus/
│       │   │   │   └── Makefile
│       │   │   ├── os-auto.mak.in
│       │   │   ├── resample/
│       │   │   │   ├── Makefile
│       │   │   │   └── config.h
│       │   │   ├── speex/
│       │   │   │   ├── Makefile
│       │   │   │   ├── config.h
│       │   │   │   └── speex/
│       │   │   │       └── speex_config_types.h
│       │   │   ├── srtp/
│       │   │   │   ├── Makefile
│       │   │   │   └── srtp_config.h
│       │   │   ├── webrtc/
│       │   │   │   ├── Makefile
│       │   │   │   └── os-auto.mak.in
│       │   │   └── zsrtp/
│       │   │       └── Makefile
│       │   ├── g7221/
│       │   │   ├── common/
│       │   │   │   ├── basic_op.c
│       │   │   │   ├── basic_op.h
│       │   │   │   ├── basic_op_i.h
│       │   │   │   ├── common.c
│       │   │   │   ├── config.h
│       │   │   │   ├── count.h
│       │   │   │   ├── defs.h
│       │   │   │   ├── huff_def.h
│       │   │   │   ├── huff_tab.c
│       │   │   │   ├── huff_tab.h
│       │   │   │   ├── tables.c
│       │   │   │   ├── tables.h
│       │   │   │   └── typedef.h
│       │   │   ├── decode/
│       │   │   │   ├── coef2sam.c
│       │   │   │   ├── dct4_s.c
│       │   │   │   ├── dct4_s.h
│       │   │   │   └── decoder.c
│       │   │   └── encode/
│       │   │       ├── dct4_a.c
│       │   │       ├── dct4_a.h
│       │   │       ├── encoder.c
│       │   │       └── sam2coef.c
│       │   ├── gsm/
│       │   │   ├── COPYRIGHT
│       │   │   ├── ChangeLog
│       │   │   ├── INSTALL
│       │   │   ├── MACHINES
│       │   │   ├── MANIFEST
│       │   │   ├── Makefile
│       │   │   ├── README
│       │   │   ├── add-test/
│       │   │   │   ├── add_test.c
│       │   │   │   └── add_test.dta
│       │   │   ├── inc/
│       │   │   │   ├── config.h
│       │   │   │   ├── gsm.h
│       │   │   │   ├── private.h
│       │   │   │   ├── proto.h
│       │   │   │   ├── toast.h
│       │   │   │   └── unproto.h
│       │   │   ├── man/
│       │   │   │   ├── bitter.1
│       │   │   │   ├── gsm.3
│       │   │   │   ├── gsm_explode.3
│       │   │   │   ├── gsm_option.3
│       │   │   │   ├── gsm_print.3
│       │   │   │   └── toast.1
│       │   │   ├── src/
│       │   │   │   ├── add.c
│       │   │   │   ├── code.c
│       │   │   │   ├── debug.c
│       │   │   │   ├── decode.c
│       │   │   │   ├── gsm_create.c
│       │   │   │   ├── gsm_decode.c
│       │   │   │   ├── gsm_destroy.c
│       │   │   │   ├── gsm_encode.c
│       │   │   │   ├── gsm_explode.c
│       │   │   │   ├── gsm_implode.c
│       │   │   │   ├── gsm_option.c
│       │   │   │   ├── gsm_print.c
│       │   │   │   ├── long_term.c
│       │   │   │   ├── lpc.c
│       │   │   │   ├── preprocess.c
│       │   │   │   ├── rpe.c
│       │   │   │   ├── short_term.c
│       │   │   │   ├── table.c
│       │   │   │   ├── toast.c
│       │   │   │   ├── toast_alaw.c
│       │   │   │   ├── toast_audio.c
│       │   │   │   ├── toast_lin.c
│       │   │   │   └── toast_ulaw.c
│       │   │   ├── tls/
│       │   │   │   ├── bitter.c
│       │   │   │   ├── bitter.dta
│       │   │   │   ├── ginger.c
│       │   │   │   ├── sour.c
│       │   │   │   ├── sour1.dta
│       │   │   │   ├── sour2.dta
│       │   │   │   ├── sweet.c
│       │   │   │   ├── taste.c
│       │   │   │   └── taste.h
│       │   │   └── tst/
│       │   │       ├── cod2lin.c
│       │   │       ├── cod2txt.c
│       │   │       ├── gsm2cod.c
│       │   │       ├── lin2cod.c
│       │   │       ├── lin2txt.c
│       │   │       └── run
│       │   ├── ilbc/
│       │   │   ├── FrameClassify.c
│       │   │   ├── FrameClassify.h
│       │   │   ├── LPCdecode.c
│       │   │   ├── LPCdecode.h
│       │   │   ├── LPCencode.c
│       │   │   ├── LPCencode.h
│       │   │   ├── StateConstructW.c
│       │   │   ├── StateConstructW.h
│       │   │   ├── StateSearchW.c
│       │   │   ├── StateSearchW.h
│       │   │   ├── anaFilter.c
│       │   │   ├── anaFilter.h
│       │   │   ├── constants.c
│       │   │   ├── constants.h
│       │   │   ├── createCB.c
│       │   │   ├── createCB.h
│       │   │   ├── doCPLC.c
│       │   │   ├── doCPLC.h
│       │   │   ├── enhancer.c
│       │   │   ├── enhancer.h
│       │   │   ├── filter.c
│       │   │   ├── filter.h
│       │   │   ├── gainquant.c
│       │   │   ├── gainquant.h
│       │   │   ├── getCBvec.c
│       │   │   ├── getCBvec.h
│       │   │   ├── helpfun.c
│       │   │   ├── helpfun.h
│       │   │   ├── hpInput.c
│       │   │   ├── hpInput.h
│       │   │   ├── hpOutput.c
│       │   │   ├── hpOutput.h
│       │   │   ├── iCBConstruct.c
│       │   │   ├── iCBConstruct.h
│       │   │   ├── iCBSearch.c
│       │   │   ├── iCBSearch.h
│       │   │   ├── iLBC_decode.c
│       │   │   ├── iLBC_decode.h
│       │   │   ├── iLBC_define.h
│       │   │   ├── iLBC_encode.c
│       │   │   ├── iLBC_encode.h
│       │   │   ├── iLBC_test.c
│       │   │   ├── lsf.c
│       │   │   ├── lsf.h
│       │   │   ├── packing.c
│       │   │   ├── packing.h
│       │   │   ├── syntFilter.c
│       │   │   └── syntFilter.h
│       │   ├── milenage/
│       │   │   ├── milenage.c
│       │   │   ├── milenage.h
│       │   │   ├── rijndael.c
│       │   │   └── rijndael.h
│       │   ├── mp3/
│       │   │   ├── BladeMP3EncDLL.h
│       │   │   ├── mp3_port.h
│       │   │   └── mp3_writer.c
│       │   ├── opus/
│       │   │   ├── .gitignore
│       │   │   ├── AUTHORS
│       │   │   ├── COPYING
│       │   │   ├── ChangeLog
│       │   │   ├── INSTALL
│       │   │   ├── Makefile.am
│       │   │   ├── Makefile.mips
│       │   │   ├── Makefile.unix
│       │   │   ├── NEWS
│       │   │   ├── README
│       │   │   ├── celt/
│       │   │   │   ├── _kiss_fft_guts.h
│       │   │   │   ├── arch.h
│       │   │   │   ├── arm/
│       │   │   │   │   ├── arm2gnu.pl
│       │   │   │   │   ├── arm_celt_map.c
│       │   │   │   │   ├── armcpu.c
│       │   │   │   │   ├── armcpu.h
│       │   │   │   │   ├── armopts.s.in
│       │   │   │   │   ├── celt_ne10_fft.c
│       │   │   │   │   ├── celt_ne10_mdct.c
│       │   │   │   │   ├── celt_neon_intr.c
│       │   │   │   │   ├── celt_pitch_xcorr_arm-gnu.S
│       │   │   │   │   ├── celt_pitch_xcorr_arm.s
│       │   │   │   │   ├── fft_arm.h
│       │   │   │   │   ├── fixed_armv4.h
│       │   │   │   │   ├── fixed_armv5e.h
│       │   │   │   │   ├── kiss_fft_armv4.h
│       │   │   │   │   ├── kiss_fft_armv5e.h
│       │   │   │   │   ├── mdct_arm.h
│       │   │   │   │   └── pitch_arm.h
│       │   │   │   ├── bands.c
│       │   │   │   ├── bands.h
│       │   │   │   ├── celt.c
│       │   │   │   ├── celt.h
│       │   │   │   ├── celt_decoder.c
│       │   │   │   ├── celt_encoder.c
│       │   │   │   ├── celt_lpc.c
│       │   │   │   ├── celt_lpc.h
│       │   │   │   ├── cpu_support.h
│       │   │   │   ├── cwrs.c
│       │   │   │   ├── cwrs.h
│       │   │   │   ├── ecintrin.h
│       │   │   │   ├── entcode.c
│       │   │   │   ├── entcode.h
│       │   │   │   ├── entdec.c
│       │   │   │   ├── entdec.h
│       │   │   │   ├── entenc.c
│       │   │   │   ├── entenc.h
│       │   │   │   ├── fixed_debug.h
│       │   │   │   ├── fixed_generic.h
│       │   │   │   ├── float_cast.h
│       │   │   │   ├── kiss_fft.c
│       │   │   │   ├── kiss_fft.h
│       │   │   │   ├── laplace.c
│       │   │   │   ├── laplace.h
│       │   │   │   ├── mathops.c
│       │   │   │   ├── mathops.h
│       │   │   │   ├── mdct.c
│       │   │   │   ├── mdct.h
│       │   │   │   ├── mfrngcod.h
│       │   │   │   ├── mips/
│       │   │   │   │   ├── celt_mipsr1.h
│       │   │   │   │   ├── fixed_generic_mipsr1.h
│       │   │   │   │   ├── kiss_fft_mipsr1.h
│       │   │   │   │   ├── mdct_mipsr1.h
│       │   │   │   │   ├── pitch_mipsr1.h
│       │   │   │   │   └── vq_mipsr1.h
│       │   │   │   ├── modes.c
│       │   │   │   ├── modes.h
│       │   │   │   ├── opus_custom_demo.c
│       │   │   │   ├── os_support.h
│       │   │   │   ├── pitch.c
│       │   │   │   ├── pitch.h
│       │   │   │   ├── quant_bands.c
│       │   │   │   ├── quant_bands.h
│       │   │   │   ├── rate.c
│       │   │   │   ├── rate.h
│       │   │   │   ├── stack_alloc.h
│       │   │   │   ├── static_modes_fixed.h
│       │   │   │   ├── static_modes_fixed_arm_ne10.h
│       │   │   │   ├── static_modes_float.h
│       │   │   │   ├── static_modes_float_arm_ne10.h
│       │   │   │   ├── tests/
│       │   │   │   │   ├── test_unit_cwrs32.c
│       │   │   │   │   ├── test_unit_dft.c
│       │   │   │   │   ├── test_unit_entropy.c
│       │   │   │   │   ├── test_unit_laplace.c
│       │   │   │   │   ├── test_unit_mathops.c
│       │   │   │   │   ├── test_unit_mdct.c
│       │   │   │   │   ├── test_unit_rotation.c
│       │   │   │   │   └── test_unit_types.c
│       │   │   │   ├── vq.c
│       │   │   │   ├── vq.h
│       │   │   │   └── x86/
│       │   │   │       ├── celt_lpc_sse.c
│       │   │   │       ├── celt_lpc_sse.h
│       │   │   │       ├── pitch_sse.c
│       │   │   │       ├── pitch_sse.h
│       │   │   │       ├── pitch_sse2.c
│       │   │   │       ├── pitch_sse4_1.c
│       │   │   │       ├── x86_celt_map.c
│       │   │   │       ├── x86cpu.c
│       │   │   │       └── x86cpu.h
│       │   │   ├── celt_headers.mk
│       │   │   ├── celt_sources.mk
│       │   │   ├── configure.ac
│       │   │   ├── doc/
│       │   │   │   ├── Doxyfile.in
│       │   │   │   ├── Makefile.am
│       │   │   │   ├── TODO
│       │   │   │   ├── customdoxygen.css
│       │   │   │   ├── footer.html
│       │   │   │   ├── header.html
│       │   │   │   └── trivial_example.c
│       │   │   ├── include/
│       │   │   │   ├── opus.h
│       │   │   │   ├── opus_custom.h
│       │   │   │   ├── opus_defines.h
│       │   │   │   ├── opus_multistream.h
│       │   │   │   └── opus_types.h
│       │   │   ├── m4/
│       │   │   │   ├── as-gcc-inline-assembly.m4
│       │   │   │   ├── libtool.m4
│       │   │   │   ├── ltoptions.m4
│       │   │   │   ├── ltsugar.m4
│       │   │   │   ├── ltversion.m4
│       │   │   │   ├── lt~obsolete.m4
│       │   │   │   └── opus-intrinsics.m4
│       │   │   ├── opus-uninstalled.pc.in
│       │   │   ├── opus.m4
│       │   │   ├── opus.pc.in
│       │   │   ├── opus_headers.mk
│       │   │   ├── opus_sources.mk
│       │   │   ├── package_version
│       │   │   ├── silk/
│       │   │   │   ├── A2NLSF.c
│       │   │   │   ├── API.h
│       │   │   │   ├── CNG.c
│       │   │   │   ├── HP_variable_cutoff.c
│       │   │   │   ├── Inlines.h
│       │   │   │   ├── LPC_analysis_filter.c
│       │   │   │   ├── LPC_inv_pred_gain.c
│       │   │   │   ├── LP_variable_cutoff.c
│       │   │   │   ├── MacroCount.h
│       │   │   │   ├── MacroDebug.h
│       │   │   │   ├── NLSF2A.c
│       │   │   │   ├── NLSF_VQ.c
│       │   │   │   ├── NLSF_VQ_weights_laroia.c
│       │   │   │   ├── NLSF_decode.c
│       │   │   │   ├── NLSF_del_dec_quant.c
│       │   │   │   ├── NLSF_encode.c
│       │   │   │   ├── NLSF_stabilize.c
│       │   │   │   ├── NLSF_unpack.c
│       │   │   │   ├── NSQ.c
│       │   │   │   ├── NSQ_del_dec.c
│       │   │   │   ├── PLC.c
│       │   │   │   ├── PLC.h
│       │   │   │   ├── SigProc_FIX.h
│       │   │   │   ├── VAD.c
│       │   │   │   ├── VQ_WMat_EC.c
│       │   │   │   ├── ana_filt_bank_1.c
│       │   │   │   ├── arm/
│       │   │   │   │   ├── SigProc_FIX_armv4.h
│       │   │   │   │   ├── SigProc_FIX_armv5e.h
│       │   │   │   │   ├── macros_armv4.h
│       │   │   │   │   └── macros_armv5e.h
│       │   │   │   ├── biquad_alt.c
│       │   │   │   ├── bwexpander.c
│       │   │   │   ├── bwexpander_32.c
│       │   │   │   ├── check_control_input.c
│       │   │   │   ├── code_signs.c
│       │   │   │   ├── control.h
│       │   │   │   ├── control_SNR.c
│       │   │   │   ├── control_audio_bandwidth.c
│       │   │   │   ├── control_codec.c
│       │   │   │   ├── debug.c
│       │   │   │   ├── debug.h
│       │   │   │   ├── dec_API.c
│       │   │   │   ├── decode_core.c
│       │   │   │   ├── decode_frame.c
│       │   │   │   ├── decode_indices.c
│       │   │   │   ├── decode_parameters.c
│       │   │   │   ├── decode_pitch.c
│       │   │   │   ├── decode_pulses.c
│       │   │   │   ├── decoder_set_fs.c
│       │   │   │   ├── define.h
│       │   │   │   ├── enc_API.c
│       │   │   │   ├── encode_indices.c
│       │   │   │   ├── encode_pulses.c
│       │   │   │   ├── errors.h
│       │   │   │   ├── fixed/
│       │   │   │   │   ├── LTP_analysis_filter_FIX.c
│       │   │   │   │   ├── LTP_scale_ctrl_FIX.c
│       │   │   │   │   ├── apply_sine_window_FIX.c
│       │   │   │   │   ├── autocorr_FIX.c
│       │   │   │   │   ├── burg_modified_FIX.c
│       │   │   │   │   ├── corrMatrix_FIX.c
│       │   │   │   │   ├── encode_frame_FIX.c
│       │   │   │   │   ├── find_LPC_FIX.c
│       │   │   │   │   ├── find_LTP_FIX.c
│       │   │   │   │   ├── find_pitch_lags_FIX.c
│       │   │   │   │   ├── find_pred_coefs_FIX.c
│       │   │   │   │   ├── k2a_FIX.c
│       │   │   │   │   ├── k2a_Q16_FIX.c
│       │   │   │   │   ├── main_FIX.h
│       │   │   │   │   ├── mips/
│       │   │   │   │   │   ├── noise_shape_analysis_FIX_mipsr1.h
│       │   │   │   │   │   ├── prefilter_FIX_mipsr1.h
│       │   │   │   │   │   └── warped_autocorrelation_FIX_mipsr1.h
│       │   │   │   │   ├── noise_shape_analysis_FIX.c
│       │   │   │   │   ├── pitch_analysis_core_FIX.c
│       │   │   │   │   ├── prefilter_FIX.c
│       │   │   │   │   ├── process_gains_FIX.c
│       │   │   │   │   ├── regularize_correlations_FIX.c
│       │   │   │   │   ├── residual_energy16_FIX.c
│       │   │   │   │   ├── residual_energy_FIX.c
│       │   │   │   │   ├── schur64_FIX.c
│       │   │   │   │   ├── schur_FIX.c
│       │   │   │   │   ├── solve_LS_FIX.c
│       │   │   │   │   ├── structs_FIX.h
│       │   │   │   │   ├── vector_ops_FIX.c
│       │   │   │   │   ├── warped_autocorrelation_FIX.c
│       │   │   │   │   └── x86/
│       │   │   │   │       ├── burg_modified_FIX_sse.c
│       │   │   │   │       ├── prefilter_FIX_sse.c
│       │   │   │   │       └── vector_ops_FIX_sse.c
│       │   │   │   ├── float/
│       │   │   │   │   ├── LPC_analysis_filter_FLP.c
│       │   │   │   │   ├── LPC_inv_pred_gain_FLP.c
│       │   │   │   │   ├── LTP_analysis_filter_FLP.c
│       │   │   │   │   ├── LTP_scale_ctrl_FLP.c
│       │   │   │   │   ├── SigProc_FLP.h
│       │   │   │   │   ├── apply_sine_window_FLP.c
│       │   │   │   │   ├── autocorrelation_FLP.c
│       │   │   │   │   ├── burg_modified_FLP.c
│       │   │   │   │   ├── bwexpander_FLP.c
│       │   │   │   │   ├── corrMatrix_FLP.c
│       │   │   │   │   ├── encode_frame_FLP.c
│       │   │   │   │   ├── energy_FLP.c
│       │   │   │   │   ├── find_LPC_FLP.c
│       │   │   │   │   ├── find_LTP_FLP.c
│       │   │   │   │   ├── find_pitch_lags_FLP.c
│       │   │   │   │   ├── find_pred_coefs_FLP.c
│       │   │   │   │   ├── inner_product_FLP.c
│       │   │   │   │   ├── k2a_FLP.c
│       │   │   │   │   ├── levinsondurbin_FLP.c
│       │   │   │   │   ├── main_FLP.h
│       │   │   │   │   ├── noise_shape_analysis_FLP.c
│       │   │   │   │   ├── pitch_analysis_core_FLP.c
│       │   │   │   │   ├── prefilter_FLP.c
│       │   │   │   │   ├── process_gains_FLP.c
│       │   │   │   │   ├── regularize_correlations_FLP.c
│       │   │   │   │   ├── residual_energy_FLP.c
│       │   │   │   │   ├── scale_copy_vector_FLP.c
│       │   │   │   │   ├── scale_vector_FLP.c
│       │   │   │   │   ├── schur_FLP.c
│       │   │   │   │   ├── solve_LS_FLP.c
│       │   │   │   │   ├── sort_FLP.c
│       │   │   │   │   ├── structs_FLP.h
│       │   │   │   │   ├── warped_autocorrelation_FLP.c
│       │   │   │   │   └── wrappers_FLP.c
│       │   │   │   ├── gain_quant.c
│       │   │   │   ├── init_decoder.c
│       │   │   │   ├── init_encoder.c
│       │   │   │   ├── inner_prod_aligned.c
│       │   │   │   ├── interpolate.c
│       │   │   │   ├── lin2log.c
│       │   │   │   ├── log2lin.c
│       │   │   │   ├── macros.h
│       │   │   │   ├── main.h
│       │   │   │   ├── mips/
│       │   │   │   │   ├── NSQ_del_dec_mipsr1.h
│       │   │   │   │   ├── macros_mipsr1.h
│       │   │   │   │   └── sigproc_fix_mipsr1.h
│       │   │   │   ├── pitch_est_defines.h
│       │   │   │   ├── pitch_est_tables.c
│       │   │   │   ├── process_NLSFs.c
│       │   │   │   ├── quant_LTP_gains.c
│       │   │   │   ├── resampler.c
│       │   │   │   ├── resampler_down2.c
│       │   │   │   ├── resampler_down2_3.c
│       │   │   │   ├── resampler_private.h
│       │   │   │   ├── resampler_private_AR2.c
│       │   │   │   ├── resampler_private_IIR_FIR.c
│       │   │   │   ├── resampler_private_down_FIR.c
│       │   │   │   ├── resampler_private_up2_HQ.c
│       │   │   │   ├── resampler_rom.c
│       │   │   │   ├── resampler_rom.h
│       │   │   │   ├── resampler_structs.h
│       │   │   │   ├── shell_coder.c
│       │   │   │   ├── sigm_Q15.c
│       │   │   │   ├── sort.c
│       │   │   │   ├── stereo_LR_to_MS.c
│       │   │   │   ├── stereo_MS_to_LR.c
│       │   │   │   ├── stereo_decode_pred.c
│       │   │   │   ├── stereo_encode_pred.c
│       │   │   │   ├── stereo_find_predictor.c
│       │   │   │   ├── stereo_quant_pred.c
│       │   │   │   ├── structs.h
│       │   │   │   ├── sum_sqr_shift.c
│       │   │   │   ├── table_LSF_cos.c
│       │   │   │   ├── tables.h
│       │   │   │   ├── tables_LTP.c
│       │   │   │   ├── tables_NLSF_CB_NB_MB.c
│       │   │   │   ├── tables_NLSF_CB_WB.c
│       │   │   │   ├── tables_gain.c
│       │   │   │   ├── tables_other.c
│       │   │   │   ├── tables_pitch_lag.c
│       │   │   │   ├── tables_pulses_per_block.c
│       │   │   │   ├── tuning_parameters.h
│       │   │   │   ├── typedef.h
│       │   │   │   └── x86/
│       │   │   │       ├── NSQ_del_dec_sse.c
│       │   │   │       ├── NSQ_sse.c
│       │   │   │       ├── SigProc_FIX_sse.h
│       │   │   │       ├── VAD_sse.c
│       │   │   │       ├── VQ_WMat_EC_sse.c
│       │   │   │       ├── main_sse.h
│       │   │   │       └── x86_silk_map.c
│       │   │   ├── silk_headers.mk
│       │   │   ├── silk_sources.mk
│       │   │   ├── src/
│       │   │   │   ├── analysis.c
│       │   │   │   ├── analysis.h
│       │   │   │   ├── mlp.c
│       │   │   │   ├── mlp.h
│       │   │   │   ├── mlp_data.c
│       │   │   │   ├── opus.c
│       │   │   │   ├── opus_compare.c
│       │   │   │   ├── opus_decoder.c
│       │   │   │   ├── opus_demo.c
│       │   │   │   ├── opus_encoder.c
│       │   │   │   ├── opus_multistream.c
│       │   │   │   ├── opus_multistream_decoder.c
│       │   │   │   ├── opus_multistream_encoder.c
│       │   │   │   ├── opus_private.h
│       │   │   │   ├── repacketizer.c
│       │   │   │   ├── repacketizer_demo.c
│       │   │   │   └── tansig_table.h
│       │   │   ├── test-driver
│       │   │   ├── tests/
│       │   │   │   ├── run_vectors.sh
│       │   │   │   ├── test_opus_api.c
│       │   │   │   ├── test_opus_common.h
│       │   │   │   ├── test_opus_decode.c
│       │   │   │   ├── test_opus_encode.c
│       │   │   │   └── test_opus_padding.c
│       │   │   ├── version.mk
│       │   │   └── win32/
│       │   │       ├── VS2010/
│       │   │       │   ├── celt.vcxproj
│       │   │       │   ├── celt.vcxproj.filters
│       │   │       │   ├── opus.sln
│       │   │       │   ├── opus.vcxproj
│       │   │       │   ├── opus.vcxproj.filters
│       │   │       │   ├── opus_demo.vcxproj
│       │   │       │   ├── opus_demo.vcxproj.filters
│       │   │       │   ├── silk_common.vcxproj
│       │   │       │   ├── silk_common.vcxproj.filters
│       │   │       │   ├── silk_fixed.vcxproj
│       │   │       │   ├── silk_fixed.vcxproj.filters
│       │   │       │   ├── silk_float.vcxproj
│       │   │       │   ├── silk_float.vcxproj.filters
│       │   │       │   ├── test_opus_api.vcxproj
│       │   │       │   ├── test_opus_api.vcxproj.filters
│       │   │       │   ├── test_opus_decode.vcxproj
│       │   │       │   ├── test_opus_decode.vcxproj.filters
│       │   │       │   ├── test_opus_encode.vcxproj
│       │   │       │   └── test_opus_encode.vcxproj.filters
│       │   │       └── genversion.bat
│       │   ├── resample/
│       │   │   ├── COPYING
│       │   │   ├── README.resample
│       │   │   ├── include/
│       │   │   │   └── resamplesubs.h
│       │   │   └── src/
│       │   │       ├── largefilter.h
│       │   │       ├── libresample_dll.c
│       │   │       ├── resample.h
│       │   │       ├── resamplesubs.c
│       │   │       ├── smallfilter.h
│       │   │       └── stddefs.h
│       │   ├── speex/
│       │   │   ├── AUTHORS
│       │   │   ├── COPYING
│       │   │   ├── include/
│       │   │   │   └── speex/
│       │   │   │       ├── speex.h
│       │   │   │       ├── speex_bits.h
│       │   │   │       ├── speex_buffer.h
│       │   │   │       ├── speex_callbacks.h
│       │   │   │       ├── speex_config_types.h.in
│       │   │   │       ├── speex_echo.h
│       │   │   │       ├── speex_header.h
│       │   │   │       ├── speex_jitter.h
│       │   │   │       ├── speex_preprocess.h
│       │   │   │       ├── speex_resampler.h
│       │   │   │       ├── speex_stereo.h
│       │   │   │       └── speex_types.h
│       │   │   ├── libspeex/
│       │   │   │   ├── _kiss_fft_guts.h
│       │   │   │   ├── arch.h
│       │   │   │   ├── bits.c
│       │   │   │   ├── buffer.c
│       │   │   │   ├── cb_search.c
│       │   │   │   ├── cb_search.h
│       │   │   │   ├── cb_search_arm4.h
│       │   │   │   ├── cb_search_bfin.h
│       │   │   │   ├── cb_search_sse.h
│       │   │   │   ├── echo_diagnostic.m
│       │   │   │   ├── exc_10_16_table.c
│       │   │   │   ├── exc_10_32_table.c
│       │   │   │   ├── exc_20_32_table.c
│       │   │   │   ├── exc_5_256_table.c
│       │   │   │   ├── exc_5_64_table.c
│       │   │   │   ├── exc_8_128_table.c
│       │   │   │   ├── fftwrap.c
│       │   │   │   ├── fftwrap.h
│       │   │   │   ├── filterbank.c
│       │   │   │   ├── filterbank.h
│       │   │   │   ├── filters.c
│       │   │   │   ├── filters.h
│       │   │   │   ├── filters_arm4.h
│       │   │   │   ├── filters_bfin.h
│       │   │   │   ├── filters_sse.h
│       │   │   │   ├── fixed_arm4.h
│       │   │   │   ├── fixed_arm5e.h
│       │   │   │   ├── fixed_bfin.h
│       │   │   │   ├── fixed_debug.h
│       │   │   │   ├── fixed_generic.h
│       │   │   │   ├── gain_table.c
│       │   │   │   ├── gain_table_lbr.c
│       │   │   │   ├── hexc_10_32_table.c
│       │   │   │   ├── hexc_table.c
│       │   │   │   ├── high_lsp_tables.c
│       │   │   │   ├── jitter.c
│       │   │   │   ├── kiss_fft.c
│       │   │   │   ├── kiss_fft.h
│       │   │   │   ├── kiss_fftr.c
│       │   │   │   ├── kiss_fftr.h
│       │   │   │   ├── lpc.c
│       │   │   │   ├── lpc.h
│       │   │   │   ├── lpc_bfin.h
│       │   │   │   ├── lsp.c
│       │   │   │   ├── lsp.h
│       │   │   │   ├── lsp_bfin.h
│       │   │   │   ├── lsp_tables_nb.c
│       │   │   │   ├── ltp.c
│       │   │   │   ├── ltp.h
│       │   │   │   ├── ltp_arm4.h
│       │   │   │   ├── ltp_bfin.h
│       │   │   │   ├── ltp_sse.h
│       │   │   │   ├── math_approx.h
│       │   │   │   ├── mdf.c
│       │   │   │   ├── misc_bfin.h
│       │   │   │   ├── modes.c
│       │   │   │   ├── modes.h
│       │   │   │   ├── modes_wb.c
│       │   │   │   ├── nb_celp.c
│       │   │   │   ├── nb_celp.h
│       │   │   │   ├── os_support.h
│       │   │   │   ├── preprocess.c
│       │   │   │   ├── pseudofloat.h
│       │   │   │   ├── quant_lsp.c
│       │   │   │   ├── quant_lsp.h
│       │   │   │   ├── quant_lsp_bfin.h
│       │   │   │   ├── resample.c
│       │   │   │   ├── resample_sse.h
│       │   │   │   ├── sb_celp.c
│       │   │   │   ├── sb_celp.h
│       │   │   │   ├── scal.c
│       │   │   │   ├── smallft.c
│       │   │   │   ├── smallft.h
│       │   │   │   ├── speex.c
│       │   │   │   ├── speex_callbacks.c
│       │   │   │   ├── speex_header.c
│       │   │   │   ├── stack_alloc.h
│       │   │   │   ├── stereo.c
│       │   │   │   ├── testdenoise.c
│       │   │   │   ├── testecho.c
│       │   │   │   ├── testenc.c
│       │   │   │   ├── testenc_uwb.c
│       │   │   │   ├── testenc_wb.c
│       │   │   │   ├── testjitter.c
│       │   │   │   ├── testresample.c
│       │   │   │   ├── vbr.c
│       │   │   │   ├── vbr.h
│       │   │   │   ├── vorbis_psy.c
│       │   │   │   ├── vorbis_psy.h
│       │   │   │   ├── vq.c
│       │   │   │   ├── vq.h
│       │   │   │   ├── vq_arm4.h
│       │   │   │   ├── vq_bfin.h
│       │   │   │   ├── vq_sse.h
│       │   │   │   └── window.c
│       │   │   ├── symbian/
│       │   │   │   └── config.h
│       │   │   └── win32/
│       │   │       └── config.h
│       │   ├── srtp/
│       │   │   ├── CHANGES
│       │   │   ├── LICENSE
│       │   │   ├── Makefile.in
│       │   │   ├── README
│       │   │   ├── TODO
│       │   │   ├── VERSION
│       │   │   ├── config.h_win32vc7
│       │   │   ├── config.hw
│       │   │   ├── config_in.h
│       │   │   ├── configure
│       │   │   ├── configure.in
│       │   │   ├── crypto/
│       │   │   │   ├── Makefile
│       │   │   │   ├── Makefile.in
│       │   │   │   ├── VERSION
│       │   │   │   ├── ae_xfm/
│       │   │   │   │   └── xfm.c
│       │   │   │   ├── cipher/
│       │   │   │   │   ├── aes.c
│       │   │   │   │   ├── aes_cbc.c
│       │   │   │   │   ├── aes_icm.c
│       │   │   │   │   ├── cipher.c
│       │   │   │   │   └── null_cipher.c
│       │   │   │   ├── hash/
│       │   │   │   │   ├── auth.c
│       │   │   │   │   ├── hmac.c
│       │   │   │   │   ├── null_auth.c
│       │   │   │   │   └── sha1.c
│       │   │   │   ├── include/
│       │   │   │   │   ├── aes.h
│       │   │   │   │   ├── aes_cbc.h
│       │   │   │   │   ├── aes_icm.h
│       │   │   │   │   ├── alloc.h
│       │   │   │   │   ├── auth.h
│       │   │   │   │   ├── cipher.h
│       │   │   │   │   ├── crypto.h
│       │   │   │   │   ├── crypto_kernel.h
│       │   │   │   │   ├── crypto_math.h
│       │   │   │   │   ├── crypto_types.h
│       │   │   │   │   ├── cryptoalg.h
│       │   │   │   │   ├── datatypes.h
│       │   │   │   │   ├── err.h
│       │   │   │   │   ├── gf2_8.h
│       │   │   │   │   ├── hmac.h
│       │   │   │   │   ├── integers.h
│       │   │   │   │   ├── kernel_compat.h
│       │   │   │   │   ├── key.h
│       │   │   │   │   ├── null_auth.h
│       │   │   │   │   ├── null_cipher.h
│       │   │   │   │   ├── prng.h
│       │   │   │   │   ├── rand_source.h
│       │   │   │   │   ├── rdb.h
│       │   │   │   │   ├── rdbx.h
│       │   │   │   │   ├── sha1.h
│       │   │   │   │   ├── stat.h
│       │   │   │   │   └── xfm.h
│       │   │   │   ├── kernel/
│       │   │   │   │   ├── alloc.c
│       │   │   │   │   ├── crypto_kernel.c
│       │   │   │   │   ├── err.c
│       │   │   │   │   └── key.c
│       │   │   │   ├── math/
│       │   │   │   │   ├── datatypes.c
│       │   │   │   │   ├── gf2_8.c
│       │   │   │   │   ├── math.c
│       │   │   │   │   └── stat.c
│       │   │   │   ├── replay/
│       │   │   │   │   ├── rdb.c
│       │   │   │   │   ├── rdbx.c
│       │   │   │   │   └── ut_sim.c
│       │   │   │   └── rng/
│       │   │   │       ├── ctr_prng.c
│       │   │   │       ├── prng.c
│       │   │   │       ├── rand_linux_kernel.c
│       │   │   │       └── rand_source.c
│       │   │   ├── doc/
│       │   │   │   ├── Doxyfile
│       │   │   │   ├── Makefile
│       │   │   │   ├── Makefile.in
│       │   │   │   ├── crypto_kernel.txt
│       │   │   │   ├── header.template
│       │   │   │   ├── intro.txt
│       │   │   │   └── references.txt
│       │   │   ├── include/
│       │   │   │   ├── getopt_s.h
│       │   │   │   ├── rtp.h
│       │   │   │   ├── rtp_priv.h
│       │   │   │   ├── srtp.h
│       │   │   │   ├── srtp_priv.h
│       │   │   │   └── ut_sim.h
│       │   │   ├── install-sh
│       │   │   ├── pjlib/
│       │   │   │   └── srtp_err.c
│       │   │   ├── srtp/
│       │   │   │   └── srtp.c
│       │   │   ├── srtp.def
│       │   │   ├── srtp7.sln
│       │   │   ├── tables/
│       │   │   │   └── aes_tables.c
│       │   │   ├── timing
│       │   │   ├── undos.sh
│       │   │   └── update.sh
│       │   ├── webrtc/
│       │   │   └── src/
│       │   │       ├── common_audio/
│       │   │       │   └── signal_processing_library/
│       │   │       │       ├── OWNERS
│       │   │       │       └── main/
│       │   │       │           ├── interface/
│       │   │       │           │   ├── signal_processing_library.h
│       │   │       │           │   ├── spl_inl.h
│       │   │       │           │   └── spl_inl_armv7.h
│       │   │       │           └── source/
│       │   │       │               ├── auto_corr_to_refl_coef.c
│       │   │       │               ├── auto_correlation.c
│       │   │       │               ├── complex_bit_reverse.c
│       │   │       │               ├── complex_fft.c
│       │   │       │               ├── complex_ifft.c
│       │   │       │               ├── copy_set_operations.c
│       │   │       │               ├── cos_table.c
│       │   │       │               ├── cross_correlation.c
│       │   │       │               ├── division_operations.c
│       │   │       │               ├── dot_product_with_scale.c
│       │   │       │               ├── downsample_fast.c
│       │   │       │               ├── energy.c
│       │   │       │               ├── filter_ar.c
│       │   │       │               ├── filter_ar_fast_q12.c
│       │   │       │               ├── filter_ma_fast_q12.c
│       │   │       │               ├── get_hanning_window.c
│       │   │       │               ├── get_scaling_square.c
│       │   │       │               ├── hanning_table.c
│       │   │       │               ├── ilbc_specific_functions.c
│       │   │       │               ├── levinson_durbin.c
│       │   │       │               ├── lpc_to_refl_coef.c
│       │   │       │               ├── min_max_operations.c
│       │   │       │               ├── min_max_operations_neon.c
│       │   │       │               ├── randn_table.c
│       │   │       │               ├── randomization_functions.c
│       │   │       │               ├── refl_coef_to_lpc.c
│       │   │       │               ├── resample.c
│       │   │       │               ├── resample_48khz.c
│       │   │       │               ├── resample_by_2.c
│       │   │       │               ├── resample_by_2_internal.c
│       │   │       │               ├── resample_by_2_internal.h
│       │   │       │               ├── resample_fractional.c
│       │   │       │               ├── sin_table.c
│       │   │       │               ├── sin_table_1024.c
│       │   │       │               ├── spl_sqrt.c
│       │   │       │               ├── spl_sqrt_floor.c
│       │   │       │               ├── spl_version.c
│       │   │       │               ├── splitting_filter.c
│       │   │       │               ├── sqrt_of_one_minus_x_squared.c
│       │   │       │               ├── vector_scaling_operations.c
│       │   │       │               ├── webrtc_fft_t_1024_8.c
│       │   │       │               └── webrtc_fft_t_rad.c
│       │   │       ├── common_types.h
│       │   │       ├── engine_configurations.h
│       │   │       ├── modules/
│       │   │       │   └── audio_processing/
│       │   │       │       ├── aec/
│       │   │       │       │   └── main/
│       │   │       │       │       ├── interface/
│       │   │       │       │       │   └── echo_cancellation.h
│       │   │       │       │       ├── matlab/
│       │   │       │       │       │   └── fullaec.m
│       │   │       │       │       └── source/
│       │   │       │       │           ├── aec_core.c
│       │   │       │       │           ├── aec_core.h
│       │   │       │       │           ├── aec_core_sse2.c
│       │   │       │       │           ├── aec_rdft.c
│       │   │       │       │           ├── aec_rdft.h
│       │   │       │       │           ├── aec_rdft_sse2.c
│       │   │       │       │           ├── echo_cancellation.c
│       │   │       │       │           ├── resampler.c
│       │   │       │       │           └── resampler.h
│       │   │       │       ├── agc/
│       │   │       │       │   └── main/
│       │   │       │       │       ├── interface/
│       │   │       │       │       │   └── gain_control.h
│       │   │       │       │       └── source/
│       │   │       │       │           ├── analog_agc.c
│       │   │       │       │           ├── analog_agc.h
│       │   │       │       │           ├── digital_agc.c
│       │   │       │       │           └── digital_agc.h
│       │   │       │       ├── ns/
│       │   │       │       │   └── main/
│       │   │       │       │       ├── interface/
│       │   │       │       │       │   ├── noise_suppression.h
│       │   │       │       │       │   └── noise_suppression_x.h
│       │   │       │       │       └── source/
│       │   │       │       │           ├── defines.h
│       │   │       │       │           ├── noise_suppression.c
│       │   │       │       │           ├── noise_suppression_x.c
│       │   │       │       │           ├── ns_core.c
│       │   │       │       │           ├── ns_core.h
│       │   │       │       │           ├── nsx_core.c
│       │   │       │       │           ├── nsx_core.h
│       │   │       │       │           ├── nsx_core_neon.c
│       │   │       │       │           ├── nsx_defines.h
│       │   │       │       │           └── windows_private.h
│       │   │       │       └── utility/
│       │   │       │           ├── fft4g.c
│       │   │       │           ├── fft4g.h
│       │   │       │           ├── ring_buffer.c
│       │   │       │           └── ring_buffer.h
│       │   │       ├── system_wrappers/
│       │   │       │   ├── OWNERS
│       │   │       │   ├── interface/
│       │   │       │   │   ├── aligned_malloc.h
│       │   │       │   │   ├── atomic32_wrapper.h
│       │   │       │   │   ├── condition_variable_wrapper.h
│       │   │       │   │   ├── constructor_magic.h
│       │   │       │   │   ├── cpu_features_wrapper.h
│       │   │       │   │   ├── cpu_wrapper.h
│       │   │       │   │   ├── critical_section_wrapper.h
│       │   │       │   │   ├── data_log.h
│       │   │       │   │   ├── data_log_impl.h
│       │   │       │   │   ├── event_wrapper.h
│       │   │       │   │   ├── file_wrapper.h
│       │   │       │   │   ├── fix_interlocked_exchange_pointer_windows.h
│       │   │       │   │   ├── list_wrapper.h
│       │   │       │   │   ├── map_wrapper.h
│       │   │       │   │   ├── ref_count.h
│       │   │       │   │   ├── rpcsal.h
│       │   │       │   │   ├── rw_lock_wrapper.h
│       │   │       │   │   ├── scoped_ptr.h
│       │   │       │   │   ├── sort.h
│       │   │       │   │   ├── thread_wrapper.h
│       │   │       │   │   ├── tick_util.h
│       │   │       │   │   └── trace.h
│       │   │       │   └── source/
│       │   │       │       ├── aligned_malloc.cc
│       │   │       │       ├── atomic32.cc
│       │   │       │       ├── atomic32_linux.h
│       │   │       │       ├── atomic32_mac.h
│       │   │       │       ├── atomic32_windows.h
│       │   │       │       ├── condition_variable.cc
│       │   │       │       ├── condition_variable_posix.cc
│       │   │       │       ├── condition_variable_posix.h
│       │   │       │       ├── condition_variable_windows.cc
│       │   │       │       ├── condition_variable_windows.h
│       │   │       │       ├── cpu.cc
│       │   │       │       ├── cpu_features.cc
│       │   │       │       ├── cpu_linux.cc
│       │   │       │       ├── cpu_linux.h
│       │   │       │       ├── cpu_mac.cc
│       │   │       │       ├── cpu_mac.h
│       │   │       │       ├── cpu_windows.cc
│       │   │       │       ├── cpu_windows.h
│       │   │       │       ├── critical_section.cc
│       │   │       │       ├── critical_section_posix.cc
│       │   │       │       ├── critical_section_posix.h
│       │   │       │       ├── critical_section_windows.cc
│       │   │       │       ├── critical_section_windows.h
│       │   │       │       ├── data_log.cc
│       │   │       │       ├── data_log_dummy.cc
│       │   │       │       ├── data_log_helpers_unittest.cc
│       │   │       │       ├── data_log_unittest.cc
│       │   │       │       ├── event.cc
│       │   │       │       ├── event_posix.cc
│       │   │       │       ├── event_posix.h
│       │   │       │       ├── event_windows.cc
│       │   │       │       ├── event_windows.h
│       │   │       │       ├── file_impl.cc
│       │   │       │       ├── file_impl.h
│       │   │       │       ├── list_no_stl.cc
│       │   │       │       ├── list_no_stl.h
│       │   │       │       ├── list_stl.cc
│       │   │       │       ├── list_stl.h
│       │   │       │       ├── list_unittest.cc
│       │   │       │       ├── map.cc
│       │   │       │       ├── map_no_stl.cc
│       │   │       │       ├── map_no_stl.h
│       │   │       │       ├── map_unittest.cc
│       │   │       │       ├── rw_lock.cc
│       │   │       │       ├── rw_lock_generic.cc
│       │   │       │       ├── rw_lock_generic.h
│       │   │       │       ├── rw_lock_posix.cc
│       │   │       │       ├── rw_lock_posix.h
│       │   │       │       ├── rw_lock_windows.cc
│       │   │       │       ├── rw_lock_windows.h
│       │   │       │       ├── sort.cc
│       │   │       │       ├── spreadsortlib/
│       │   │       │       │   ├── constants.hpp
│       │   │       │       │   └── spreadsort.hpp
│       │   │       │       ├── thread.cc
│       │   │       │       ├── thread_posix.cc
│       │   │       │       ├── thread_posix.h
│       │   │       │       ├── thread_windows.cc
│       │   │       │       ├── thread_windows.h
│       │   │       │       ├── thread_windows_set_name.h
│       │   │       │       ├── trace_impl.cc
│       │   │       │       ├── trace_impl.h
│       │   │       │       ├── trace_posix.cc
│       │   │       │       ├── trace_posix.h
│       │   │       │       ├── trace_windows.cc
│       │   │       │       └── trace_windows.h
│       │   │       └── typedefs.h
│       │   └── zsrtp/
│       │       ├── include/
│       │       │   ├── ZsrtpCWrapper.h
│       │       │   └── openssl_compat.h
│       │       ├── srtp/
│       │       │   └── ZsrtpCWrapper.cpp
│       │       └── zrtp/
│       │           ├── COPYING
│       │           ├── README.md
│       │           ├── base_version
│       │           ├── common/
│       │           │   ├── EventClass.cpp
│       │           │   ├── EventClass.h
│       │           │   ├── MutexClass.cpp
│       │           │   ├── MutexClass.h
│       │           │   ├── Thread.cpp
│       │           │   ├── Thread.h
│       │           │   ├── osSpecifics.c
│       │           │   └── osSpecifics.h
│       │           ├── cryptcommon/
│       │           │   ├── ZrtpRandom.cpp
│       │           │   ├── ZrtpRandom.h
│       │           │   ├── aes.h
│       │           │   ├── aes_modes.c
│       │           │   ├── aescpp.h
│       │           │   ├── aescrypt.c
│       │           │   ├── aeskey.c
│       │           │   ├── aesopt.h
│       │           │   ├── aestab.c
│       │           │   ├── aestab.h
│       │           │   ├── brg_endian.h
│       │           │   ├── brg_types.h
│       │           │   ├── macSkein.cpp
│       │           │   ├── macSkein.h
│       │           │   ├── skein.c
│       │           │   ├── skein.h
│       │           │   ├── skeinApi.c
│       │           │   ├── skeinApi.h
│       │           │   ├── skein_block.c
│       │           │   ├── skein_iv.h
│       │           │   ├── skein_port.h
│       │           │   ├── twofish.c
│       │           │   ├── twofish.h
│       │           │   └── twofish_cfb.c
│       │           ├── srtp/
│       │           │   ├── CryptoContext.cpp
│       │           │   ├── CryptoContext.h
│       │           │   ├── CryptoContextCtrl.cpp
│       │           │   ├── CryptoContextCtrl.h
│       │           │   ├── SrtpHandler.cpp
│       │           │   ├── SrtpHandler.h
│       │           │   └── crypto/
│       │           │       ├── SrtpSymCrypto.cpp
│       │           │       ├── SrtpSymCrypto.h
│       │           │       ├── gcrypt/
│       │           │       │   ├── InitializeGcrypt.cpp
│       │           │       │   ├── gcryptSrtpSymCrypto.cpp
│       │           │       │   └── gcrypthmac.cpp
│       │           │       ├── hmac.cpp
│       │           │       ├── hmac.h
│       │           │       ├── openssl/
│       │           │       │   ├── SrtpSymCrypto.cpp
│       │           │       │   └── hmac.cpp
│       │           │       ├── sha1.c
│       │           │       └── sha1.h
│       │           └── zrtp/
│       │               ├── Base32.cpp
│       │               ├── ZIDCacheDb.cpp
│       │               ├── ZIDCacheFile.cpp
│       │               ├── ZIDRecordDb.cpp
│       │               ├── ZIDRecordFile.cpp
│       │               ├── ZRtp.cpp
│       │               ├── ZrtpCWrapper.cpp
│       │               ├── ZrtpCallbackWrapper.cpp
│       │               ├── ZrtpConfigure.cpp
│       │               ├── ZrtpCrc32.cpp
│       │               ├── ZrtpPacketClearAck.cpp
│       │               ├── ZrtpPacketCommit.cpp
│       │               ├── ZrtpPacketConf2Ack.cpp
│       │               ├── ZrtpPacketConfirm.cpp
│       │               ├── ZrtpPacketDHPart.cpp
│       │               ├── ZrtpPacketError.cpp
│       │               ├── ZrtpPacketErrorAck.cpp
│       │               ├── ZrtpPacketGoClear.cpp
│       │               ├── ZrtpPacketHello.cpp
│       │               ├── ZrtpPacketHelloAck.cpp
│       │               ├── ZrtpPacketPing.cpp
│       │               ├── ZrtpPacketPingAck.cpp
│       │               ├── ZrtpPacketRelayAck.cpp
│       │               ├── ZrtpPacketSASrelay.cpp
│       │               ├── ZrtpSdesStream.cpp
│       │               ├── ZrtpStateClass.cpp
│       │               ├── ZrtpTextData.cpp
│       │               ├── crypto/
│       │               │   ├── aesCFB.cpp
│       │               │   ├── aesCFB.h
│       │               │   ├── gcrypt/
│       │               │   │   ├── InitializeGcrypt.cpp
│       │               │   │   ├── gcryptAesCFB.cpp
│       │               │   │   ├── gcryptZrtpDH.cpp
│       │               │   │   ├── gcrypthmac256.cpp
│       │               │   │   ├── gcrypthmac384.cpp
│       │               │   │   ├── gcryptsha256.cpp
│       │               │   │   └── gcryptsha384.cpp
│       │               │   ├── hmac256.cpp
│       │               │   ├── hmac256.h
│       │               │   ├── hmac384.cpp
│       │               │   ├── hmac384.h
│       │               │   ├── openssl/
│       │               │   │   ├── InitializeOpenSSL.cpp
│       │               │   │   ├── aesCFB.cpp
│       │               │   │   ├── hmac256.cpp
│       │               │   │   ├── hmac384.cpp
│       │               │   │   ├── sha256.cpp
│       │               │   │   ├── sha384.cpp
│       │               │   │   └── zrtpDH.cpp
│       │               │   ├── sha2.c
│       │               │   ├── sha2.h
│       │               │   ├── sha256.cpp
│       │               │   ├── sha256.h
│       │               │   ├── sha384.cpp
│       │               │   ├── sha384.h
│       │               │   ├── skein256.cpp
│       │               │   ├── skein256.h
│       │               │   ├── skein384.cpp
│       │               │   ├── skein384.h
│       │               │   ├── skeinMac256.cpp
│       │               │   ├── skeinMac256.h
│       │               │   ├── skeinMac384.cpp
│       │               │   ├── skeinMac384.h
│       │               │   ├── twoCFB.cpp
│       │               │   ├── twoCFB.h
│       │               │   ├── zrtpDH.cpp
│       │               │   └── zrtpDH.h
│       │               ├── libzrtpcpp/
│       │               │   ├── Base32.h
│       │               │   ├── ZIDCache.h
│       │               │   ├── ZIDCacheDb.h
│       │               │   ├── ZIDCacheFile.h
│       │               │   ├── ZIDRecord.h
│       │               │   ├── ZIDRecordDb.h
│       │               │   ├── ZIDRecordFile.h
│       │               │   ├── ZRtp.h
│       │               │   ├── ZrtpCWrapper.h
│       │               │   ├── ZrtpCallback.h
│       │               │   ├── ZrtpCallbackWrapper.h
│       │               │   ├── ZrtpCodes.h
│       │               │   ├── ZrtpConfigure.h
│       │               │   ├── ZrtpCrc32.h
│       │               │   ├── ZrtpPacketBase.h
│       │               │   ├── ZrtpPacketClearAck.h
│       │               │   ├── ZrtpPacketCommit.h
│       │               │   ├── ZrtpPacketConf2Ack.h
│       │               │   ├── ZrtpPacketConfirm.h
│       │               │   ├── ZrtpPacketDHPart.h
│       │               │   ├── ZrtpPacketError.h
│       │               │   ├── ZrtpPacketErrorAck.h
│       │               │   ├── ZrtpPacketGoClear.h
│       │               │   ├── ZrtpPacketHello.h
│       │               │   ├── ZrtpPacketHelloAck.h
│       │               │   ├── ZrtpPacketPing.h
│       │               │   ├── ZrtpPacketPingAck.h
│       │               │   ├── ZrtpPacketRelayAck.h
│       │               │   ├── ZrtpPacketSASrelay.h
│       │               │   ├── ZrtpSdesStream.h
│       │               │   ├── ZrtpStateClass.h
│       │               │   ├── ZrtpStates.h
│       │               │   ├── ZrtpTextData.h
│       │               │   ├── ZrtpUserCallback.h
│       │               │   ├── zrtpB64Decode.h
│       │               │   ├── zrtpB64Encode.h
│       │               │   ├── zrtpCacheDbBackend.h
│       │               │   └── zrtpPacket.h
│       │               ├── zrtpB64Decode.c
│       │               ├── zrtpB64Encode.c
│       │               └── zrtpCacheSqliteBackend.c
│       └── version.mak
├── docs/
│   ├── Dependencies.txt
│   ├── DeveloperGuide.txt
│   ├── Install.debian
│   ├── Install.linux
│   ├── Install.osx
│   ├── Install.rasbian
│   ├── Install.ubuntu
│   ├── Install.windows
│   ├── Licenses.txt
│   └── Uninstall.txt
├── setup.py
├── setup_pjsip.py
└── sipsimple/
    ├── __info__.py
    ├── __init__.py
    ├── account/
    │   ├── __init__.py
    │   ├── bonjour/
    │   │   ├── __init__.py
    │   │   └── _bonjour.py
    │   ├── publication.py
    │   ├── registration.py
    │   ├── subscription.py
    │   └── xcap/
    │       ├── __init__.py
    │       └── storage/
    │           ├── __init__.py
    │           ├── file.py
    │           └── memory.py
    ├── addressbook.py
    ├── application.py
    ├── audio.py
    ├── configuration/
    │   ├── __init__.py
    │   ├── backend/
    │   │   ├── __init__.py
    │   │   ├── file.py
    │   │   └── memory.py
    │   ├── datatypes.py
    │   └── settings.py
    ├── core/
    │   ├── __init__.py
    │   ├── _core.error.pxi
    │   ├── _core.event.pxi
    │   ├── _core.headers.pxi
    │   ├── _core.helper.pxi
    │   ├── _core.invitation.pxi
    │   ├── _core.lib.pxi
    │   ├── _core.mediatransport.pxi
    │   ├── _core.pxd
    │   ├── _core.pyx
    │   ├── _core.referral.pxi
    │   ├── _core.request.pxi
    │   ├── _core.sdp.pxi
    │   ├── _core.sound.pxi
    │   ├── _core.subscription.pxi
    │   ├── _core.ua.pxi
    │   ├── _core.util.pxi
    │   ├── _core.video.pxi
    │   ├── _engine.py
    │   ├── _helpers.py
    │   └── _primitives.py
    ├── logging.py
    ├── lookup.py
    ├── payloads/
    │   ├── README.txt
    │   ├── __init__.py
    │   ├── addressbook.py
    │   ├── caps.py
    │   ├── cipid.py
    │   ├── commonpolicy.py
    │   ├── conference.py
    │   ├── datatypes.py
    │   ├── dialoginfo.py
    │   ├── dialogrules.py
    │   ├── directory.py
    │   ├── imdn.py
    │   ├── iscomposing.py
    │   ├── messagesummary.py
    │   ├── omapolicy.py
    │   ├── pidf.py
    │   ├── prescontent.py
    │   ├── presrules.py
    │   ├── resourcelists.py
    │   ├── rlmi.py
    │   ├── rlsnotify.py
    │   ├── rlsservices.py
    │   ├── rpid.py
    │   ├── watcherinfo.py
    │   ├── xcapcaps.py
    │   ├── xcapdiff.py
    │   └── xml-schemas/
    │       ├── addressbook.xsd
    │       ├── caps.xsd
    │       ├── cipid.xsd
    │       ├── common-policy.xsd
    │       ├── common-schema.xsd
    │       ├── conference.xsd
    │       ├── data-model.xsd
    │       ├── dialog-info.xsd
    │       ├── dialog-rules.xsd
    │       ├── im-iscomposing.xsd
    │       ├── imdn.xsd
    │       ├── oma-common-policy.xsd
    │       ├── oma-pres-content.xsd
    │       ├── patchops.xsd
    │       ├── pidf.xsd
    │       ├── pres-rules.xsd
    │       ├── resourcelists.xsd
    │       ├── rlmi.xsd
    │       ├── rlsservices.xsd
    │       ├── rpid.xsd
    │       ├── watcherinfo.xsd
    │       ├── xcap-caps.xsd
    │       ├── xcap-directory.xsd
    │       ├── xcapdiff.xsd
    │       └── xml.xsd
    ├── session.py
    ├── storage.py
    ├── streams/
    │   ├── __init__.py
    │   ├── msrp/
    │   │   ├── __init__.py
    │   │   ├── chat.py
    │   │   ├── filetransfer.py
    │   │   └── screensharing.py
    │   └── rtp/
    │       ├── __init__.py
    │       ├── audio.py
    │       └── video.py
    ├── threading/
    │   ├── __init__.py
    │   └── green.py
    ├── util/
    │   ├── __init__.py
    │   ├── _sha1.h
    │   └── _sha1.pyx
    └── video.py
Download .txt
Showing preview only (1,149K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (12426 symbols across 1211 files)

FILE: deps/pjsip/pjlib-util/include/pjlib-util/crc32.h
  type pj_crc32_context (line 41) | struct pj_crc32_context

FILE: deps/pjsip/pjlib-util/include/pjlib-util/dns.h
  type pj_dns_type (line 72) | typedef enum pj_dns_type
  type pj_dns_hdr (line 134) | typedef struct pj_dns_hdr
  type pj_dns_rcode (line 193) | typedef enum pj_dns_rcode
  type pj_dns_parsed_query (line 212) | typedef struct pj_dns_parsed_query
  type pj_dns_parsed_rr (line 224) | typedef struct pj_dns_parsed_rr
  type pj_dns_parsed_packet (line 283) | typedef struct pj_dns_parsed_packet
  type pj_dns_dup_options (line 297) | enum pj_dns_dup_options

FILE: deps/pjsip/pjlib-util/include/pjlib-util/dns_server.h
  type pj_dns_server (line 44) | struct pj_dns_server

FILE: deps/pjsip/pjlib-util/include/pjlib-util/getopt.h
  type pj_getopt_option (line 86) | struct pj_getopt_option
  type pj_getopt_option (line 130) | struct pj_getopt_option
  type pj_getopt_option (line 133) | struct pj_getopt_option

FILE: deps/pjsip/pjlib-util/include/pjlib-util/hmac_md5.h
  type pj_hmac_md5_context (line 49) | struct pj_hmac_md5_context

FILE: deps/pjsip/pjlib-util/include/pjlib-util/hmac_sha1.h
  type pj_hmac_sha1_context (line 45) | struct pj_hmac_sha1_context

FILE: deps/pjsip/pjlib-util/include/pjlib-util/http_client.h
  type pj_http_req (line 43) | struct pj_http_req
  type pj_http_header_elmt (line 54) | typedef struct pj_http_header_elmt
  type pj_http_headers (line 65) | typedef struct pj_http_headers
  type pj_http_auth_cred (line 77) | typedef struct pj_http_auth_cred
  type pj_http_req_param (line 127) | typedef struct pj_http_req_param
  type pj_http_auth_chal (line 226) | typedef struct pj_http_auth_chal
  type pj_http_resp (line 241) | typedef struct pj_http_resp
  type pj_http_url (line 258) | typedef struct pj_http_url
  type pj_http_req_callback (line 271) | typedef struct pj_http_req_callback

FILE: deps/pjsip/pjlib-util/include/pjlib-util/json.h
  type pj_json_val_type (line 45) | enum pj_json_val_type
  type pj_json_elem (line 56) | typedef struct pj_json_elem pj_json_elem;
  type pj_json_list (line 61) | typedef struct pj_json_list
  type pj_json_elem (line 73) | struct pj_json_elem
  type pj_json_err_info (line 91) | typedef struct pj_json_err_info
  type pj_status_t (line 109) | typedef pj_status_t (*pj_json_writer)(const char *s,

FILE: deps/pjsip/pjlib-util/include/pjlib-util/md5.h
  type pj_md5_context (line 40) | struct pj_md5_context

FILE: deps/pjsip/pjlib-util/include/pjlib-util/pcap.h
  type pj_pcap_link_type (line 44) | enum pj_pcap_link_type
  type pj_pcap_proto_type (line 55) | typedef enum pj_pcap_proto_type
  type pj_pcap_udp_hdr (line 67) | typedef struct pj_pcap_udp_hdr
  type pj_pcap_filter (line 81) | typedef struct pj_pcap_filter
  type pj_pcap_file (line 125) | typedef struct pj_pcap_file pj_pcap_file;

FILE: deps/pjsip/pjlib-util/include/pjlib-util/resolver.h
  type pj_dns_resolver (line 165) | struct pj_dns_resolver
  type pj_dns_async_query (line 170) | typedef struct pj_dns_async_query pj_dns_async_query;
  type pj_dns_settings (line 190) | typedef struct pj_dns_settings
  type pj_dns_a_record (line 206) | typedef struct pj_dns_a_record

FILE: deps/pjsip/pjlib-util/include/pjlib-util/scanner.h
  function pj_cis_match (line 151) | PJ_INLINE(int) pj_cis_match( const pj_cis_t *cis, pj_uint8_t c )
  type pj_scanner (line 179) | struct pj_scanner
  type pj_scanner (line 188) | struct pj_scanner
  type pj_scanner (line 194) | typedef struct pj_scanner
  type pj_scan_state (line 210) | typedef struct pj_scan_state
  function pj_scan_is_eof (line 255) | PJ_INLINE(int) pj_scan_is_eof( const pj_scanner *scanner)
  function pj_scan_get_col (line 543) | PJ_INLINE(int) pj_scan_get_col( const pj_scanner *scanner )

FILE: deps/pjsip/pjlib-util/include/pjlib-util/scanner_cis_bitwise.h
  type PJ_CIS_ELEM_TYPE (line 39) | typedef PJ_CIS_ELEM_TYPE pj_cis_elem_t;
  type pj_cis_buf_t (line 50) | typedef struct pj_cis_buf_t
  type pj_cis_t (line 59) | typedef struct pj_cis_t

FILE: deps/pjsip/pjlib-util/include/pjlib-util/scanner_cis_uint.h
  type PJ_CIS_ELEM_TYPE (line 39) | typedef PJ_CIS_ELEM_TYPE pj_cis_elem_t;
  type pj_cis_buf_t (line 42) | typedef int pj_cis_buf_t;
  type pj_cis_t (line 47) | typedef struct pj_cis_t

FILE: deps/pjsip/pjlib-util/include/pjlib-util/sha1.h
  type pj_sha1_context (line 39) | struct pj_sha1_context

FILE: deps/pjsip/pjlib-util/include/pjlib-util/srv_resolver.h
  type pj_dns_srv_option (line 81) | enum pj_dns_srv_option
  type pj_dns_srv_record (line 116) | typedef struct pj_dns_srv_record
  type pj_dns_srv_async_query (line 142) | typedef struct pj_dns_srv_async_query pj_dns_srv_async_query;

FILE: deps/pjsip/pjlib-util/include/pjlib-util/stun_simple.h
  type pjstun_msg_type (line 37) | enum pjstun_msg_type
  type pjstun_attr_type (line 51) | typedef enum pjstun_attr_type
  type pjstun_msg_hdr (line 71) | typedef struct pjstun_msg_hdr
  type pjstun_attr_hdr (line 82) | typedef struct pjstun_attr_hdr
  type pjstun_mapped_addr_attr (line 92) | typedef struct pjstun_mapped_addr_attr
  type pjstun_mapped_addr_attr (line 101) | typedef pjstun_mapped_addr_attr pjstun_response_addr_attr;
  type pjstun_mapped_addr_attr (line 102) | typedef pjstun_mapped_addr_attr pjstun_changed_addr_attr;
  type pjstun_mapped_addr_attr (line 103) | typedef pjstun_mapped_addr_attr pjstun_src_addr_attr;
  type pjstun_mapped_addr_attr (line 104) | typedef pjstun_mapped_addr_attr pjstun_reflected_form_attr;
  type pjstun_change_request_attr (line 106) | typedef struct pjstun_change_request_attr
  type pjstun_username_attr (line 112) | typedef struct pjstun_username_attr
  type pjstun_username_attr (line 118) | typedef pjstun_username_attr pjstun_password_attr;
  type pjstun_error_code_attr (line 120) | typedef struct pjstun_error_code_attr
  type pjstun_msg (line 129) | typedef struct pjstun_msg
  type pjstun_setting (line 206) | typedef struct pjstun_setting

FILE: deps/pjsip/pjlib-util/include/pjlib-util/xml.h
  type pj_xml_attr (line 40) | struct pj_xml_attr
  type pj_xml_node (line 43) | typedef struct pj_xml_node pj_xml_node;
  type pj_xml_attr (line 46) | struct pj_xml_attr
  type pj_xml_node_head (line 55) | typedef struct pj_xml_node_head
  type pj_xml_node (line 61) | struct pj_xml_node

FILE: deps/pjsip/pjlib-util/src/pjlib-util/base64.c
  function base256_char (line 37) | static int base256_char(char c)
  function base256to64 (line 58) | static void base256to64(pj_uint8_t c1, pj_uint8_t c2, pj_uint8_t c3,
  function pj_base64_encode (line 81) | PJ_DEF(pj_status_t) pj_base64_encode(const pj_uint8_t *input, int in_len,
  function pj_base64_decode (line 124) | PJ_DEF(pj_status_t) pj_base64_decode(const pj_str_t *input,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/crc32.c
  function pj_crc32_init (line 151) | PJ_DEF(void) pj_crc32_init(pj_crc32_context *ctx)
  function pj_crc32_update (line 156) | PJ_DEF(pj_uint32_t) pj_crc32_update(pj_crc32_context *ctx,
  function pj_crc32_final (line 185) | PJ_DEF(pj_uint32_t) pj_crc32_final(pj_crc32_context *ctx)
  function pj_crc32_init (line 193) | PJ_DEF(void) pj_crc32_init(pj_crc32_context *ctx)
  function pj_crc32_update (line 199) | PJ_DEF(pj_uint32_t) pj_crc32_update(pj_crc32_context *ctx,
  function pj_crc32_final (line 225) | PJ_DEF(pj_uint32_t) pj_crc32_final(pj_crc32_context *ctx)
  function pj_crc32_calc (line 234) | PJ_DEF(pj_uint32_t) pj_crc32_calc( const pj_uint8_t *data,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/dns.c
  function pj_dns_get_type_name (line 29) | PJ_DEF(const char *) pj_dns_get_type_name(int type)
  function write16 (line 46) | static void write16(pj_uint8_t *p, pj_uint16_t val)
  function pj_dns_make_query (line 56) | PJ_DEF(pj_status_t) pj_dns_make_query( void *packet,
  function pj_status_t (line 118) | static pj_status_t get_name_len(int rec_counter, const pj_uint8_t *pkt,
  function pj_status_t (line 188) | static pj_status_t get_name(int rec_counter, const pj_uint8_t *pkt,
  function pj_status_t (line 248) | static pj_status_t parse_query(pj_dns_parsed_query *q, pj_pool_t *pool,
  function pj_status_t (line 289) | static pj_status_t parse_rr(pj_dns_parsed_rr *rr, pj_pool_t *pool,
  function pj_dns_parse_packet (line 431) | PJ_DEF(pj_status_t) pj_dns_parse_packet( pj_pool_t *pool,
  function apply_name_table (line 547) | static void apply_name_table( unsigned *count,
  function copy_query (line 579) | static void copy_query(pj_pool_t *pool, pj_dns_parsed_query *dst,
  function copy_rr (line 589) | static void copy_rr(pj_pool_t *pool, pj_dns_parsed_rr *dst,
  function pj_dns_packet_dup (line 622) | PJ_DEF(void) pj_dns_packet_dup(pj_pool_t *pool,
  function pj_dns_init_srv_rr (line 702) | PJ_DEF(void) pj_dns_init_srv_rr( pj_dns_parsed_rr *rec,
  function pj_dns_init_cname_rr (line 723) | PJ_DEF(void) pj_dns_init_cname_rr( pj_dns_parsed_rr *rec,
  function pj_dns_init_a_rr (line 738) | PJ_DEF(void) pj_dns_init_a_rr( pj_dns_parsed_rr *rec,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/dns_dump.c
  function dump_query (line 78) | static void dump_query(unsigned index, const pj_dns_parsed_query *q)
  function dump_answer (line 88) | static void dump_answer(unsigned index, const pj_dns_parsed_rr *rr)
  function pj_dns_dump_packet (line 130) | PJ_DEF(void) pj_dns_dump_packet(const pj_dns_parsed_packet *res)

FILE: deps/pjsip/pjlib-util/src/pjlib-util/dns_server.c
  type label_tab (line 34) | struct label_tab
  type rr (line 44) | struct rr
  type pj_dns_server (line 51) | struct pj_dns_server
  function pj_dns_server_create (line 69) | PJ_DEF(pj_status_t) pj_dns_server_create( pj_pool_factory *pf,
  function pj_dns_server_destroy (line 118) | PJ_DEF(pj_status_t) pj_dns_server_destroy(pj_dns_server *srv)
  type rr (line 137) | struct rr
  type rr (line 142) | struct rr
  function pj_dns_server_add_rec (line 158) | PJ_DEF(pj_status_t) pj_dns_server_add_rec( pj_dns_server *srv,
  function pj_dns_server_del_rec (line 183) | PJ_DEF(pj_status_t) pj_dns_server_del_rec( pj_dns_server *srv,
  function write16 (line 202) | static void write16(pj_uint8_t *p, pj_uint16_t val)
  function write32 (line 208) | static void write32(pj_uint8_t *p, pj_uint32_t val)
  function print_name (line 214) | static int print_name(pj_uint8_t *pkt, int size,
  function print_rr (line 275) | static int print_rr(pj_uint8_t *pkt, int size, pj_uint8_t *pos,
  function print_packet (line 358) | static int print_packet(const pj_dns_parsed_packet *rec, pj_uint8_t *pkt,
  function pj_bool_t (line 439) | static pj_bool_t on_data_recvfrom(pj_activesock_t *asock,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/errno.c
  function pj_str_t (line 119) | pj_str_t pjlib_util_strerror(pj_status_t statcode,
  function pjlib_util_init (line 178) | PJ_DEF(pj_status_t) pjlib_util_init(void)

FILE: deps/pjsip/pjlib-util/src/pjlib-util/getopt.c
  type pj_getopt_option (line 15) | struct pj_getopt_option
  function pj_getopt_long (line 49) | int
  function pj_getopt (line 61) | int
  function exchange (line 201) | static void
  function _getopt_internal (line 353) | static int

FILE: deps/pjsip/pjlib-util/src/pjlib-util/hmac_md5.c
  function pj_hmac_md5_init (line 24) | PJ_DEF(void) pj_hmac_md5_init(pj_hmac_md5_context *hctx,
  function pj_hmac_md5_update (line 66) | PJ_DEF(void) pj_hmac_md5_update(pj_hmac_md5_context *hctx,
  function pj_hmac_md5_final (line 73) | PJ_DEF(void) pj_hmac_md5_final(pj_hmac_md5_context *hctx,
  function pj_hmac_md5 (line 87) | PJ_DEF(void) pj_hmac_md5( const pj_uint8_t *input, unsigned input_len,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/hmac_sha1.c
  function pj_hmac_sha1_init (line 24) | PJ_DEF(void) pj_hmac_sha1_init(pj_hmac_sha1_context *hctx,
  function pj_hmac_sha1_update (line 65) | PJ_DEF(void) pj_hmac_sha1_update(pj_hmac_sha1_context *hctx,
  function pj_hmac_sha1_final (line 71) | PJ_DEF(void) pj_hmac_sha1_final(pj_hmac_sha1_context *hctx,
  function pj_hmac_sha1 (line 85) | PJ_DEF(void) pj_hmac_sha1(const pj_uint8_t *input, unsigned input_len,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/http_client.c
  type http_protocol (line 58) | enum http_protocol
  type http_method (line 76) | enum http_method
  type http_state (line 90) | enum http_state
  type auth_state (line 103) | enum auth_state
  type pj_http_req (line 110) | struct pj_http_req
  function pj_uint16_t (line 164) | static pj_uint16_t get_http_default_port(const pj_str_t *protocol)
  function on_syntax_error (line 193) | static void on_syntax_error(pj_scanner *scanner)
  function pj_bool_t (line 200) | static pj_bool_t http_on_connect(pj_activesock_t *asock,
  function pj_bool_t (line 220) | static pj_bool_t http_on_data_sent(pj_activesock_t *asock,
  function pj_bool_t (line 292) | static pj_bool_t http_on_data_read(pj_activesock_t *asock,
  function on_timeout (line 481) | static void on_timeout( pj_timer_heap_t *timer_heap,
  function pj_status_t (line 506) | static pj_status_t parse_auth_chal(pj_pool_t *pool, pj_str_t *input,
  function pj_http_headers_add_elmt2 (line 600) | PJ_DEF(pj_status_t) pj_http_headers_add_elmt2(pj_http_headers *headers,
  function pj_http_headers_add_elmt (line 609) | PJ_DEF(pj_status_t) pj_http_headers_add_elmt(pj_http_headers *headers,
  function pj_status_t (line 621) | static pj_status_t http_response_parse(pj_pool_t *pool,
  function pj_status_t (line 716) | static pj_status_t http_headers_parse(char *hdata, pj_size_t size,
  function pj_http_req_param_default (line 760) | PJ_DEF(void) pj_http_req_param_default(pj_http_req_param *param)
  function pj_http_req_parse_url (line 800) | PJ_DEF(pj_status_t) pj_http_req_parse_url(const pj_str_t *url,
  function pj_http_req_set_timeout (line 884) | PJ_DEF(void) pj_http_req_set_timeout(pj_http_req *http_req,
  function pj_http_req_create (line 890) | PJ_DEF(pj_status_t) pj_http_req_create(pj_pool_t *pool,
  function pj_http_req_is_running (line 998) | PJ_DEF(pj_bool_t) pj_http_req_is_running(const pj_http_req *http_req)
  function pj_http_req_get_user_data (line 1004) | PJ_DEF(void*) pj_http_req_get_user_data(pj_http_req *http_req)
  function pj_status_t (line 1010) | static pj_status_t start_http_req(pj_http_req *http_req,
  function pj_http_req_start (line 1127) | PJ_DEF(pj_status_t) pj_http_req_start(pj_http_req *http_req)
  function pj_status_t (line 1133) | static pj_status_t auth_respond_basic(pj_http_req *hreq)
  function digest2str (line 1186) | static void digest2str(const unsigned char digest[], char *output)
  function auth_create_digest_response (line 1195) | static void auth_create_digest_response(pj_str_t *result,
  function pj_bool_t (line 1283) | static pj_bool_t auth_has_qop( pj_pool_t *pool, const pj_str_t *qop_offer)
  function pj_status_t (line 1314) | static pj_status_t auth_respond_digest(pj_http_req *hreq)
  function restart_req_with_auth (line 1444) | static void restart_req_with_auth(pj_http_req *hreq)
  function str_snprintf (line 1499) | static void str_snprintf(pj_str_t *s, size_t size,
  function pj_status_t (line 1515) | static pj_status_t http_req_start_sending(pj_http_req *hreq)
  function pj_status_t (line 1591) | static pj_status_t http_req_start_reading(pj_http_req *hreq)
  function pj_status_t (line 1612) | static pj_status_t http_req_end_request(pj_http_req *hreq)
  function pj_http_req_cancel (line 1631) | PJ_DEF(pj_status_t) pj_http_req_cancel(pj_http_req *http_req,
  function pj_http_req_destroy (line 1647) | PJ_DEF(pj_status_t) pj_http_req_destroy(pj_http_req *http_req)

FILE: deps/pjsip/pjlib-util/src/pjlib-util/json.c
  type write_state (line 37) | struct write_state
  type parse_state (line 38) | struct parse_state
  type write_state (line 43) | struct write_state
  type parse_state (line 45) | struct parse_state
  function pj_json_elem_null (line 49) | PJ_DEF(void) pj_json_elem_null(pj_json_elem *el, pj_str_t *name)
  function pj_json_elem_bool (line 54) | PJ_DEF(void) pj_json_elem_bool(pj_json_elem *el, pj_str_t *name,
  function pj_json_elem_number (line 61) | PJ_DEF(void) pj_json_elem_number(pj_json_elem *el, pj_str_t *name,
  function pj_json_elem_string (line 68) | PJ_DEF(void) pj_json_elem_string( pj_json_elem *el, pj_str_t *name,
  function pj_json_elem_array (line 75) | PJ_DEF(void) pj_json_elem_array(pj_json_elem *el, pj_str_t *name)
  function pj_json_elem_obj (line 81) | PJ_DEF(void) pj_json_elem_obj(pj_json_elem *el, pj_str_t *name)
  function pj_json_elem_add (line 87) | PJ_DEF(void) pj_json_elem_add(pj_json_elem *el, pj_json_elem *child)
  type parse_state (line 93) | struct parse_state
  function pj_status_t (line 101) | static pj_status_t parse_children(struct parse_state *st,
  function parse_quoted_string (line 129) | static unsigned parse_quoted_string(struct parse_state *st,
  function pj_json_elem (line 201) | static pj_json_elem* parse_elem_throw(struct parse_state *st,
  function on_syntax_error (line 292) | static void on_syntax_error(pj_scanner *scanner)
  function pj_json_parse (line 298) | PJ_DEF(pj_json_elem*) pj_json_parse(pj_pool_t *pool,
  type buf_writer_data (line 344) | struct buf_writer_data
  function pj_status_t (line 350) | static pj_status_t buf_writer(const char *s,
  function pj_json_write (line 365) | PJ_DEF(pj_status_t) pj_json_write(const pj_json_elem *elem,
  type write_state (line 394) | struct write_state
  function pj_status_t (line 407) | static pj_status_t write_string_escaped(const pj_str_t *value,
  function pj_status_t (line 481) | static pj_status_t write_children(const pj_json_list *list,
  function pj_status_t (line 535) | static pj_status_t elem_write(const pj_json_elem *elem,
  function pj_json_writef (line 606) | PJ_DEF(pj_status_t) pj_json_writef( const pj_json_elem *elem,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/md5.c
  function byteReverse (line 38) | void byteReverse(unsigned char *buf, unsigned longs)
  function pj_md5_init (line 58) | PJ_DEF(void) pj_md5_init(pj_md5_context *ctx)
  function pj_md5_update (line 73) | PJ_DEF(void) pj_md5_update( pj_md5_context *ctx,
  function pj_md5_final (line 122) | PJ_DEF(void) pj_md5_final(pj_md5_context *ctx, unsigned char digest[16])
  function MD5Transform (line 182) | static void MD5Transform(pj_uint32_t buf[4], pj_uint32_t const in[16])

FILE: deps/pjsip/pjlib-util/src/pjlib-util/pcap.c
  type pj_pcap_hdr (line 38) | typedef struct pj_pcap_hdr
  type pj_pcap_rec_hdr (line 49) | typedef struct pj_pcap_rec_hdr
  type pj_pcap_eth_hdr (line 59) | typedef struct pj_pcap_eth_hdr
  type pj_uint8_t (line 66) | typedef pj_uint8_t pj_pcap_eth_hdr[14];
  type pj_pcap_ip_hdr (line 69) | typedef struct pj_pcap_ip_hdr
  type pj_pcap_file (line 84) | struct pj_pcap_file
  function pj_pcap_filter_default (line 94) | PJ_DEF(void) pj_pcap_filter_default(pj_pcap_filter *filter)
  function pj_pcap_open (line 100) | PJ_DEF(pj_status_t) pj_pcap_open(pj_pool_t *pool,
  function pj_pcap_close (line 156) | PJ_DEF(pj_status_t) pj_pcap_close(pj_pcap_file *file)
  function pj_pcap_set_filter (line 164) | PJ_DEF(pj_status_t) pj_pcap_set_filter(pj_pcap_file *file,
  function pj_status_t (line 173) | static pj_status_t read_file(pj_pcap_file *file,
  function pj_status_t (line 186) | static pj_status_t skip(pj_oshandle_t fd, pj_off_t bytes)
  function pj_pcap_read_udp (line 204) | PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/resolver.c
  type ns_state (line 60) | enum ns_state
  type nameserver (line 80) | struct nameserver
  type query_head (line 98) | struct query_head
  type res_key (line 105) | struct res_key
  type pj_dns_async_query (line 128) | struct pj_dns_async_query
  type cached_res (line 151) | struct cached_res
  type pj_dns_resolver (line 165) | struct pj_dns_resolver
  type pj_timer_entry (line 220) | struct pj_timer_entry
  function close_sock (line 229) | static void close_sock(pj_dns_resolver *resv)
  function pj_status_t (line 244) | static pj_status_t init_sock(pj_dns_resolver *resv)
  function pj_dns_settings_default (line 286) | PJ_DEF(void) pj_dns_settings_default(pj_dns_settings *s)
  function pj_dns_resolver_create (line 300) | PJ_DEF(pj_status_t) pj_dns_resolver_create( pj_pool_factory *pf,
  function pj_dns_resolver_destroy (line 381) | PJ_DEF(pj_status_t) pj_dns_resolver_destroy( pj_dns_resolver *resolver,
  function pj_dns_resolver_set_ns (line 452) | PJ_DEF(pj_status_t) pj_dns_resolver_set_ns( pj_dns_resolver *resolver,
  function pj_dns_resolver_set_settings (line 500) | PJ_DEF(pj_status_t) pj_dns_resolver_set_settings(pj_dns_resolver *resolver,
  function pj_dns_resolver_get_settings (line 515) | PJ_DEF(pj_status_t) pj_dns_resolver_get_settings( pj_dns_resolver *resol...
  function pj_dns_resolver_handle_events (line 530) | PJ_DEF(void) pj_dns_resolver_handle_events(pj_dns_resolver *resolver,
  function pj_dns_async_query (line 546) | static pj_dns_async_query *alloc_qnode(pj_dns_resolver *resolver,
  function pj_status_t (line 578) | static pj_status_t transmit_query(pj_dns_resolver *resolver,
  function init_res_key (line 674) | static void init_res_key(struct res_key *key, int type, const pj_str_t *...
  type cached_res (line 695) | struct cached_res
  type cached_res (line 698) | struct cached_res
  function reset_entry (line 710) | static void reset_entry(struct cached_res **p_cached)
  function free_entry (line 728) | static void free_entry(pj_dns_resolver *resolver, struct cached_res *cache)
  function pj_dns_resolver_start_query (line 738) | PJ_DEF(pj_status_t) pj_dns_resolver_start_query( pj_dns_resolver *resolver,
  function pj_dns_resolver_cancel_query (line 896) | PJ_DEF(pj_status_t) pj_dns_resolver_cancel_query(pj_dns_async_query *query,
  function pj_dns_parse_a_response (line 919) | PJ_DEF(pj_status_t) pj_dns_parse_a_response(const pj_dns_parsed_packet *...
  function set_nameserver_state (line 1030) | static void set_nameserver_state(pj_dns_resolver *resolver,
  function pj_status_t (line 1068) | static pj_status_t select_nameservers(pj_dns_resolver *resolver,
  function report_nameserver_status (line 1129) | static void report_nameserver_status(pj_dns_resolver *resolver,
  function update_res_cache (line 1187) | static void update_res_cache(pj_dns_resolver *resolver,
  function on_timeout (line 1298) | static void on_timeout( pj_timer_heap_t *timer_heap,
  function on_read_complete (line 1385) | static void on_read_complete(pj_ioqueue_key_t *key,
  function pj_dns_resolver_add_entry (line 1556) | PJ_DEF(pj_status_t) pj_dns_resolver_add_entry( pj_dns_resolver *resolver,
  function pj_dns_resolver_get_cached_count (line 1604) | PJ_DEF(unsigned) pj_dns_resolver_get_cached_count(pj_dns_resolver *resol...
  function pj_dns_resolver_dump (line 1621) | PJ_DEF(void) pj_dns_resolver_dump(pj_dns_resolver *resolver,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/scanner.c
  function pj_scan_syntax_err (line 41) | static void pj_scan_syntax_err(pj_scanner *scanner)
  function pj_cis_add_range (line 47) | PJ_DEF(void) pj_cis_add_range(pj_cis_t *cis, int cstart, int cend)
  function pj_cis_add_alpha (line 58) | PJ_DEF(void) pj_cis_add_alpha(pj_cis_t *cis)
  function pj_cis_add_num (line 64) | PJ_DEF(void) pj_cis_add_num(pj_cis_t *cis)
  function pj_cis_add_str (line 69) | PJ_DEF(void) pj_cis_add_str( pj_cis_t *cis, const char *str)
  function pj_cis_add_cis (line 77) | PJ_DEF(void) pj_cis_add_cis( pj_cis_t *cis, const pj_cis_t *rhs)
  function pj_cis_del_range (line 86) | PJ_DEF(void) pj_cis_del_range( pj_cis_t *cis, int cstart, int cend)
  function pj_cis_del_str (line 94) | PJ_DEF(void) pj_cis_del_str( pj_cis_t *cis, const char *str)
  function pj_cis_invert (line 102) | PJ_DEF(void) pj_cis_invert( pj_cis_t *cis )
  function pj_scan_init (line 114) | PJ_DEF(void) pj_scan_init( pj_scanner *scanner, char *bufstart,
  function pj_scan_fini (line 132) | PJ_DEF(void) pj_scan_fini( pj_scanner *scanner )
  function pj_scan_skip_whitespace (line 138) | PJ_DEF(void) pj_scan_skip_whitespace( pj_scanner *scanner )
  function pj_scan_skip_line (line 193) | PJ_DEF(void) pj_scan_skip_line( pj_scanner *scanner )
  function pj_scan_peek (line 204) | PJ_DEF(int) pj_scan_peek( pj_scanner *scanner,
  function pj_scan_peek_n (line 223) | PJ_DEF(int) pj_scan_peek_n( pj_scanner *scanner,
  function pj_scan_peek_until (line 238) | PJ_DEF(int) pj_scan_peek_until( pj_scanner *scanner,
  function pj_scan_get (line 257) | PJ_DEF(void) pj_scan_get( pj_scanner *scanner,
  function pj_scan_get_unescape (line 288) | PJ_DEF(void) pj_scan_get_unescape( pj_scanner *scanner,
  function pj_scan_get_quote (line 343) | PJ_DEF(void) pj_scan_get_quote( pj_scanner *scanner,
  function pj_scan_get_quotes (line 352) | PJ_DEF(void) pj_scan_get_quotes(pj_scanner *scanner,
  function pj_scan_get_n (line 424) | PJ_DEF(void) pj_scan_get_n( pj_scanner *scanner,
  function pj_scan_get_char (line 442) | PJ_DEF(int) pj_scan_get_char( pj_scanner *scanner )
  function pj_scan_get_newline (line 460) | PJ_DEF(void) pj_scan_get_newline( pj_scanner *scanner )
  function pj_scan_get_until (line 497) | PJ_DEF(void) pj_scan_get_until( pj_scanner *scanner,
  function pj_scan_get_until_ch (line 521) | PJ_DEF(void) pj_scan_get_until_ch( pj_scanner *scanner,
  function pj_scan_get_until_chr (line 545) | PJ_DEF(void) pj_scan_get_until_chr( pj_scanner *scanner,
  function pj_scan_advance_n (line 570) | PJ_DEF(void) pj_scan_advance_n( pj_scanner *scanner,
  function pj_scan_strcmp (line 586) | PJ_DEF(int) pj_scan_strcmp( pj_scanner *scanner, const char *s, int len)
  function pj_scan_stricmp (line 596) | PJ_DEF(int) pj_scan_stricmp( pj_scanner *scanner, const char *s, int len)
  function pj_scan_stricmp_alnum (line 605) | PJ_DEF(int) pj_scan_stricmp_alnum( pj_scanner *scanner, const char *s,
  function pj_scan_save_state (line 615) | PJ_DEF(void) pj_scan_save_state( const pj_scanner *scanner,
  function pj_scan_restore_state (line 624) | PJ_DEF(void) pj_scan_restore_state( pj_scanner *scanner,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/scanner_cis_bitwise.c
  function pj_cis_buf_init (line 26) | PJ_DEF(void) pj_cis_buf_init( pj_cis_buf_t *cis_buf)
  function pj_cis_init (line 32) | PJ_DEF(pj_status_t) pj_cis_init(pj_cis_buf_t *cis_buf, pj_cis_t *cis)
  function pj_cis_dup (line 50) | PJ_DEF(pj_status_t) pj_cis_dup( pj_cis_t *new_cis, pj_cis_t *existing)

FILE: deps/pjsip/pjlib-util/src/pjlib-util/scanner_cis_uint.c
  function pj_cis_buf_init (line 27) | PJ_DEF(void) pj_cis_buf_init( pj_cis_buf_t *cis_buf)
  function pj_cis_init (line 33) | PJ_DEF(pj_status_t) pj_cis_init(pj_cis_buf_t *cis_buf, pj_cis_t *cis)
  function pj_cis_dup (line 40) | PJ_DEF(pj_status_t) pj_cis_dup( pj_cis_t *new_cis, pj_cis_t *existing)

FILE: deps/pjsip/pjlib-util/src/pjlib-util/sha1.c
  function SHA1_Transform (line 134) | static void SHA1_Transform(pj_uint32_t state[5], pj_uint8_t buffer[64])
  function pj_sha1_init (line 193) | PJ_DEF(void) pj_sha1_init(pj_sha1_context* context)
  function pj_sha1_update (line 206) | PJ_DEF(void) pj_sha1_update(pj_sha1_context* context,
  function pj_sha1_final (line 232) | PJ_DEF(void) pj_sha1_final(pj_sha1_context* context,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/srv_resolver.c
  type common (line 35) | struct common
  type srv_target (line 40) | struct srv_target
  type pj_dns_srv_async_query (line 57) | struct pj_dns_srv_async_query
  function pj_dns_srv_resolve (line 95) | PJ_DEF(pj_status_t) pj_dns_srv_resolve( const pj_str_t *domain_name,
  function pj_dns_srv_cancel_query (line 162) | PJ_DEF(pj_status_t) pj_dns_srv_cancel_query(pj_dns_srv_async_query *query,
  function build_server_entries (line 202) | static void build_server_entries(pj_dns_srv_async_query *query_job,
  function pj_status_t (line 408) | static pj_status_t resolve_hostnames(pj_dns_srv_async_query *query_job)
  function dns_callback (line 449) | static void dns_callback(void *user_data,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/string.c
  function pj_str_unescape (line 25) | PJ_DEF(pj_str_t) pj_str_unescape( pj_pool_t *pool, const pj_str_t *src_str)
  function pj_strcpy_unescape (line 53) | PJ_DEF(pj_str_t*) pj_strcpy_unescape(pj_str_t *dst_str,
  function pj_strncpy2_escape (line 74) | PJ_DEF(pj_ssize_t) pj_strncpy2_escape( char *dst_str, const pj_str_t *sr...
  function pj_strncpy_escape (line 103) | PJ_DEF(pj_str_t*) pj_strncpy_escape(pj_str_t *dst_str,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/stun_simple.c
  function pjstun_create_bind_req (line 29) | PJ_DEF(pj_status_t) pjstun_create_bind_req( pj_pool_t *pool,
  function pjstun_parse_msg (line 52) | PJ_DEF(pj_status_t) pjstun_parse_msg( void *buf, pj_size_t buf_len,
  function pjstun_msg_find_attr (line 118) | PJ_DEF(void*) pjstun_msg_find_attr( pjstun_msg *msg, pjstun_attr_type t)

FILE: deps/pjsip/pjlib-util/src/pjlib-util/stun_simple_client.c
  function pjstun_get_mapped_addr (line 40) | PJ_DEF(pj_status_t) pjstun_get_mapped_addr( pj_pool_factory *pf,
  function pjstun_get_mapped_addr2 (line 58) | PJ_DEF(pj_status_t) pjstun_get_mapped_addr2(pj_pool_factory *pf,

FILE: deps/pjsip/pjlib-util/src/pjlib-util/xml.c
  function on_syntax_error (line 31) | static void on_syntax_error(struct pj_scanner *scanner)
  function pj_xml_node (line 37) | static pj_xml_node *alloc_node( pj_pool_t *pool )
  function pj_xml_attr (line 48) | static pj_xml_attr *alloc_attr( pj_pool_t *pool )
  function pj_xml_node (line 54) | static pj_xml_node *xml_parse_node( pj_pool_t *pool, pj_scanner *scanner)
  function pj_xml_parse (line 176) | PJ_DEF(pj_xml_node*) pj_xml_parse( pj_pool_t *pool, char *msg, pj_size_t...
  function xml_print_node (line 201) | static int xml_print_node( const pj_xml_node *node, int indent,
  function pj_xml_print (line 309) | PJ_DEF(int) pj_xml_print(const pj_xml_node *node, char *buf, pj_size_t len,
  function pj_xml_node_new (line 333) | PJ_DEF(pj_xml_node*) pj_xml_node_new(pj_pool_t *pool, const pj_str_t *name)
  function pj_xml_attr_new (line 340) | PJ_DEF(pj_xml_attr*) pj_xml_attr_new( pj_pool_t *pool, const pj_str_t *n...
  function pj_xml_add_node (line 349) | PJ_DEF(void) pj_xml_add_node( pj_xml_node *parent, pj_xml_node *node )
  function pj_xml_add_attr (line 354) | PJ_DEF(void) pj_xml_add_attr( pj_xml_node *node, pj_xml_attr *attr )
  function pj_xml_find_node (line 359) | PJ_DEF(pj_xml_node*) pj_xml_find_node(const pj_xml_node *parent,
  function pj_xml_find_node_rec (line 374) | PJ_DEF(pj_xml_node*) pj_xml_find_node_rec(const pj_xml_node *parent,
  function pj_xml_find_next_node (line 393) | PJ_DEF(pj_xml_node*) pj_xml_find_next_node( const pj_xml_node *parent,
  function pj_xml_find_attr (line 409) | PJ_DEF(pj_xml_attr*) pj_xml_find_attr( const pj_xml_node *node,
  function pj_xml_find (line 430) | PJ_DEF(pj_xml_node*) pj_xml_find( const pj_xml_node *parent,
  function pj_xml_find_rec (line 460) | PJ_DEF(pj_xml_node*) pj_xml_find_rec( const pj_xml_node *parent,
  function pj_xml_clone (line 498) | PJ_DEF(pj_xml_node*) pj_xml_clone( pj_pool_t *pool, const pj_xml_node *rhs)

FILE: deps/pjsip/pjlib/include/pj++/file.hpp
  class Pj_File_API (line 31) | class Pj_File_API
    method file_exists (line 37) | static bool file_exists(const char *filename)
    method pj_off_t (line 45) | static pj_off_t file_size(const char *filename)
    method pj_status_t (line 53) | static pj_status_t file_delete(const char *filename)
    method pj_status_t (line 61) | static pj_status_t file_move(const char *oldname, const char *newname)
    method pj_status_t (line 69) | static pj_status_t file_stat(const char *filename, pj_file_stat *buf)
  class Pj_File (line 79) | class Pj_File : public Pj_Object
    type Offset_Type (line 85) | enum Offset_Type
    method Pj_File (line 95) | Pj_File()
    method Pj_File (line 103) | Pj_File(Pj_Pool *pool, const char *filename,
    method pj_status_t (line 121) | pj_status_t open(Pj_Pool *pool, const char *filename,
    method close (line 131) | void close()
    method pj_ssize_t (line 142) | pj_ssize_t write(const void *buff, pj_size_t size)
    method pj_ssize_t (line 153) | pj_ssize_t read(void *buf, pj_size_t size)
    method pj_status_t (line 164) | pj_status_t setpos(pj_off_t offset, Offset_Type whence)
    method pj_off_t (line 173) | pj_off_t getpos()

FILE: deps/pjsip/pjlib/include/pj++/hash.hpp
  class Pj_Hash_Table (line 30) | class Pj_Hash_Table : public Pj_Object
    class iterator (line 36) | class iterator
      method iterator (line 39) | iterator()
      method iterator (line 42) | explicit iterator(pj_hash_table_t *h, pj_hash_iterator_t *i)
      method iterator (line 46) | iterator(const iterator &rhs)
      method iterator (line 58) | iterator & operator=(const iterator &rhs)
    method Pj_Hash_Table (line 74) | Pj_Hash_Table(Pj_Pool *pool, unsigned size)
    method pj_uint32_t (line 89) | static pj_uint32_t calc( pj_uint32_t initial_hval,
    method pj_hash_table_t (line 99) | pj_hash_table_t *pj_hash_table_t_()
    method set (line 116) | void set(Pj_Pool *pool,
    method count (line 127) | unsigned count()
    method iterator (line 135) | iterator begin()
      method iterator (line 39) | iterator()
      method iterator (line 42) | explicit iterator(pj_hash_table_t *h, pj_hash_iterator_t *i)
      method iterator (line 46) | iterator(const iterator &rhs)
      method iterator (line 58) | iterator & operator=(const iterator &rhs)
    method iterator (line 145) | iterator end()
      method iterator (line 39) | iterator()
      method iterator (line 42) | explicit iterator(pj_hash_table_t *h, pj_hash_iterator_t *i)
      method iterator (line 46) | iterator(const iterator &rhs)
      method iterator (line 58) | iterator & operator=(const iterator &rhs)

FILE: deps/pjsip/pjlib/include/pj++/list.hpp
  class Pj_List (line 42) | class Pj_List : public Pj_Object
    class const_iterator (line 48) | class const_iterator
      method const_iterator (line 51) | const_iterator()
      method const_iterator (line 54) | const_iterator(const List_Node *nd)
      method List_Node (line 57) | const List_Node * operator *()
      method List_Node (line 61) | const List_Node * operator -> ()
      method const_iterator (line 65) | const_iterator operator++()
    class iterator (line 85) | class iterator : public const_iterator
      method iterator (line 88) | iterator()
      method iterator (line 90) | iterator(List_Node *nd)
      method List_Node (line 93) | List_Node * operator *()
      method List_Node (line 97) | List_Node * operator -> ()
      method iterator (line 101) | iterator operator++()
    method Pj_List (line 118) | Pj_List()
    method empty (line 151) | bool empty() const
    method iterator (line 159) | iterator begin()
      method iterator (line 88) | iterator()
      method iterator (line 90) | iterator(List_Node *nd)
      method List_Node (line 93) | List_Node * operator *()
      method List_Node (line 97) | List_Node * operator -> ()
      method iterator (line 101) | iterator operator++()
    method const_iterator (line 167) | const_iterator begin() const
      method const_iterator (line 51) | const_iterator()
      method const_iterator (line 54) | const_iterator(const List_Node *nd)
      method List_Node (line 57) | const List_Node * operator *()
      method List_Node (line 61) | const List_Node * operator -> ()
      method const_iterator (line 65) | const_iterator operator++()
    method const_iterator (line 175) | const_iterator end() const
      method const_iterator (line 51) | const_iterator()
      method const_iterator (line 54) | const_iterator(const List_Node *nd)
      method List_Node (line 57) | const List_Node * operator *()
      method List_Node (line 61) | const List_Node * operator -> ()
      method const_iterator (line 65) | const_iterator operator++()
    method iterator (line 183) | iterator end()
      method iterator (line 88) | iterator()
      method iterator (line 90) | iterator(List_Node *nd)
      method List_Node (line 93) | List_Node * operator *()
      method List_Node (line 97) | List_Node * operator -> ()
      method iterator (line 101) | iterator operator++()
    method insert_before (line 191) | void insert_before (iterator &pos, List_Node *node)
    method insert_after (line 199) | void insert_after(iterator &pos, List_Node *node)
    method merge_first (line 207) | void merge_first(List_Node *list2)
    method merge_last (line 215) | void merge_last(Pj_List *list)
    method insert_nodes_before (line 223) | void insert_nodes_before(iterator &pos, Pj_List *list2)
    method insert_nodes_after (line 231) | void insert_nodes_after(iterator &pos, Pj_List *list2)
    method erase (line 239) | void erase(iterator &it)
    method List_Node (line 247) | List_Node *front()
    method List_Node (line 255) | const List_Node *front() const
    method pop_front (line 263) | void pop_front()
    method List_Node (line 271) | List_Node *back()
    method List_Node (line 279) | const List_Node *back() const
    method pop_back (line 287) | void pop_back()
    method iterator (line 295) | iterator find(List_Node *node)
      method iterator (line 88) | iterator()
      method iterator (line 90) | iterator(List_Node *nd)
      method List_Node (line 93) | List_Node * operator *()
      method List_Node (line 97) | List_Node * operator -> ()
      method iterator (line 101) | iterator operator++()
    method const_iterator (line 304) | const_iterator find(List_Node *node) const
      method const_iterator (line 51) | const_iterator()
      method const_iterator (line 54) | const_iterator(const List_Node *nd)
      method List_Node (line 57) | const List_Node * operator *()
      method List_Node (line 61) | const List_Node * operator -> ()
      method const_iterator (line 65) | const_iterator operator++()
    method push_back (line 313) | void push_back(List_Node *node)
    method push_front (line 321) | void push_front(List_Node *node)
    method clear (line 329) | void clear()
    type RootNode (line 336) | struct RootNode
    method compiletest (line 341) | void compiletest()

FILE: deps/pjsip/pjlib/include/pj++/lock.hpp
  class Pj_Lock (line 30) | class Pj_Lock : public Pj_Object
    method Pj_Lock (line 36) | explicit Pj_Lock(pj_lock_t *lock)
    method pj_lock_t (line 53) | pj_lock_t *pj_lock_t_()
    method pj_status_t (line 61) | pj_status_t acquire()
    method pj_status_t (line 69) | pj_status_t release()
  class Pj_Null_Lock (line 82) | class Pj_Null_Lock : public Pj_Lock
    method Pj_Null_Lock (line 88) | explicit Pj_Null_Lock(Pj_Pool *pool, const char *name = NULL)
  class Pj_Simple_Mutex_Lock (line 98) | class Pj_Simple_Mutex_Lock : public Pj_Lock
    method Pj_Simple_Mutex_Lock (line 104) | explicit Pj_Simple_Mutex_Lock(Pj_Pool *pool, const char *name = NULL)
  class Pj_Recursive_Mutex_Lock (line 114) | class Pj_Recursive_Mutex_Lock : public Pj_Lock
    method Pj_Recursive_Mutex_Lock (line 120) | explicit Pj_Recursive_Mutex_Lock(Pj_Pool *pool, const char *name = NULL)
  class Pj_Semaphore_Lock (line 130) | class Pj_Semaphore_Lock : public Pj_Lock
    method Pj_Semaphore_Lock (line 136) | explicit Pj_Semaphore_Lock(Pj_Pool *pool,

FILE: deps/pjsip/pjlib/include/pj++/os.hpp
  class Pj_Thread (line 28) | class Pj_Thread
    type Flags (line 120) | enum Flags
    method Pj_Thread (line 128) | Pj_Thread()
    method pj_status_t (line 149) | pj_status_t create( Pj_Pool *pool,
    method pj_thread_t (line 162) | pj_thread_t *pj_thread_t_()
    method pj_status_t (line 178) | pj_status_t resume()
    method pj_status_t (line 186) | pj_status_t join()
    method pj_status_t (line 194) | pj_status_t destroy()
    method thread_proc (line 205) | thread_proc(void *obj)
  class Pj_Thread_API (line 33) | class Pj_Thread_API
    method pj_status_t (line 39) | static pj_status_t create( Pj_Pool *pool, pj_thread_t **thread,
    method pj_status_t (line 52) | static pj_status_t register_this_thread( pj_thread_desc desc,
    method pj_thread_t (line 63) | static pj_thread_t *this_thread()
    method pj_status_t (line 79) | static pj_status_t resume(pj_thread_t *thread)
    method pj_status_t (line 87) | static pj_status_t sleep(unsigned msec)
    method pj_status_t (line 95) | static pj_status_t join(pj_thread_t *thread)
    method pj_status_t (line 103) | static pj_status_t destroy(pj_thread_t *thread)
  class Pj_Thread (line 117) | class Pj_Thread : public Pj_Object
    type Flags (line 120) | enum Flags
    method Pj_Thread (line 128) | Pj_Thread()
    method pj_status_t (line 149) | pj_status_t create( Pj_Pool *pool,
    method pj_thread_t (line 162) | pj_thread_t *pj_thread_t_()
    method pj_status_t (line 178) | pj_status_t resume()
    method pj_status_t (line 186) | pj_status_t join()
    method pj_status_t (line 194) | pj_status_t destroy()
    method thread_proc (line 205) | thread_proc(void *obj)
  class Pj_External_Thread (line 222) | class Pj_External_Thread : public Pj_Thread
    method Pj_External_Thread (line 225) | Pj_External_Thread()
    method pj_status_t (line 233) | pj_status_t register_this_thread( const char *name=NULL )
  class Pj_Thread_Local_API (line 246) | class Pj_Thread_Local_API
    method pj_status_t (line 252) | static pj_status_t alloc(long *index)
    method free (line 260) | static void free(long index)
    method pj_status_t (line 268) | static pj_status_t set(long index, void *value)
  class Pj_Atomic_Var (line 290) | class Pj_Atomic_Var : public Pj_Object
    method Pj_Atomic_Var (line 296) | Pj_Atomic_Var()
    method Pj_Atomic_Var (line 304) | Pj_Atomic_Var(Pj_Pool *pool, pj_atomic_value_t value)
    method pj_status_t (line 321) | pj_status_t create( Pj_Pool *pool, pj_atomic_value_t value)
    method destroy (line 330) | void destroy()
    method pj_atomic_t (line 341) | pj_atomic_t *pj_atomic_t_()
    method set (line 349) | void set(pj_atomic_value_t val)
    method pj_atomic_value_t (line 357) | pj_atomic_value_t get()
    method inc (line 365) | void inc()
    method pj_atomic_value_t (line 373) | pj_atomic_value_t inc_and_get()
    method dec (line 381) | void dec()
    method pj_atomic_value_t (line 389) | pj_atomic_value_t dec_and_get()
    method add (line 397) | void add(pj_atomic_value_t value)
    method pj_atomic_value_t (line 405) | pj_atomic_value_t add_and_get(pj_atomic_value_t value)
  class Pj_Mutex (line 418) | class Pj_Mutex : public Pj_Object
    type Type (line 424) | enum Type
    method Pj_Mutex (line 434) | explicit Pj_Mutex(Pj_Pool *pool, Type type = DEFAULT,
    method pj_status_t (line 452) | pj_status_t create( Pj_Pool *pool, Type type, const char *name = NULL)
    method pj_status_t (line 462) | pj_status_t create_simple( Pj_Pool *pool,const char *name = NULL)
    method pj_status_t (line 470) | pj_status_t create_recursive( Pj_Pool *pool, const char *name = NULL )
    method pj_mutex_t (line 478) | pj_mutex_t *pj_mutex_t_()
    method destroy (line 486) | void destroy()
    method pj_status_t (line 497) | pj_status_t acquire()
    method pj_status_t (line 505) | pj_status_t release()
    method pj_status_t (line 513) | pj_status_t tryacquire()
  class Pj_Semaphore (line 526) | class Pj_Semaphore : public Pj_Object
    method Pj_Semaphore (line 532) | Pj_Semaphore(Pj_Pool *pool, unsigned max,
    method pj_status_t (line 550) | pj_status_t create( Pj_Pool *pool, unsigned max,
    method destroy (line 560) | void destroy()
    method pj_sem_t (line 571) | pj_sem_t *pj_sem_t_()
    method pj_status_t (line 579) | pj_status_t wait()
    method pj_status_t (line 587) | pj_status_t acquire()
    method pj_status_t (line 595) | pj_status_t trywait()
    method pj_status_t (line 603) | pj_status_t tryacquire()
    method pj_status_t (line 611) | pj_status_t post()
    method pj_status_t (line 619) | pj_status_t release()
  class Pj_Event (line 632) | class Pj_Event
    method Pj_Event (line 638) | Pj_Event( Pj_Pool *pool, bool manual_reset = false,
    method pj_status_t (line 656) | pj_status_t create( Pj_Pool *pool, bool manual_reset = false,
    method pj_event_t (line 667) | pj_event_t *pj_event_t_()
    method destroy (line 675) | void destroy()
    method pj_status_t (line 686) | pj_status_t wait()
    method pj_status_t (line 694) | pj_status_t trywait()
    method pj_status_t (line 702) | pj_status_t set()
    method pj_status_t (line 710) | pj_status_t pulse()
    method pj_status_t (line 718) | pj_status_t reset()
  class Pj_Timestamp (line 730) | class Pj_Timestamp
    method pj_status_t (line 733) | pj_status_t get_timestamp()
    method Pj_Timestamp (line 738) | Pj_Timestamp& operator += (const Pj_Timestamp &rhs)
    method Pj_Timestamp (line 744) | Pj_Timestamp& operator -= (const Pj_Timestamp &rhs)
    method Pj_Time_Val (line 750) | Pj_Time_Val to_time() const
    method pj_uint32_t (line 757) | pj_uint32_t to_msec() const
    method pj_uint32_t (line 764) | pj_uint32_t to_usec() const
    method pj_uint32_t (line 771) | pj_uint32_t to_nanosec() const
    method pj_uint32_t (line 778) | pj_uint32_t to_cycle() const
  class Pj_OS_API (line 793) | class Pj_OS_API
    method pj_status_t (line 799) | static pj_status_t gettimeofday( Pj_Time_Val *tv )
    method pj_status_t (line 807) | static pj_status_t time_decode( const Pj_Time_Val *tv,
    method pj_status_t (line 816) | static pj_status_t time_encode( const pj_parsed_time *pt,
    method pj_status_t (line 825) | static pj_status_t time_local_to_gmt( Pj_Time_Val *tv )
    method pj_status_t (line 833) | static pj_status_t time_gmt_to_local( Pj_Time_Val *tv)
  function pj_status_t (line 842) | inline pj_status_t Pj_Time_Val::gettimeofday()
  function pj_parsed_time (line 847) | inline pj_parsed_time Pj_Time_Val::decode()
  function pj_status_t (line 854) | inline pj_status_t Pj_Time_Val::encode(const pj_parsed_time *pt)
  function pj_status_t (line 859) | inline pj_status_t Pj_Time_Val::to_gmt()
  function pj_status_t (line 864) | inline pj_status_t Pj_Time_Val::to_local()

FILE: deps/pjsip/pjlib/include/pj++/pool.hpp
  class Pj_Pool (line 25) | class Pj_Pool
    method Pj_Pool (line 73) | Pj_Pool()
    method Pj_Pool (line 90) | explicit Pj_Pool(pj_pool_t *pool)
    method attach (line 98) | void attach(pj_pool_t *pool)
    method pj_pool_t (line 137) | pj_pool_t *pool_()
    method pj_pool_t (line 145) | const pj_pool_t *pool_() const
    method pj_pool_t (line 153) | pj_pool_t *pj_pool_t_()
    method reset (line 161) | void reset()
    method pj_size_t (line 169) | pj_size_t get_capacity()
    method pj_size_t (line 177) | pj_size_t get_used_size()
  class Pj_Caching_Pool (line 26) | class Pj_Caching_Pool
    method Pj_Caching_Pool (line 220) | Pj_Caching_Pool( pj_size_t cache_capacity = 0,
    method pj_pool_t (line 237) | pj_pool_t *create_pool( pj_size_t initial_size,
  class Pj_Object (line 31) | class Pj_Object
  class Pj_Pool (line 66) | class Pj_Pool : public Pj_Object
    method Pj_Pool (line 73) | Pj_Pool()
    method Pj_Pool (line 90) | explicit Pj_Pool(pj_pool_t *pool)
    method attach (line 98) | void attach(pj_pool_t *pool)
    method pj_pool_t (line 137) | pj_pool_t *pool_()
    method pj_pool_t (line 145) | const pj_pool_t *pool_() const
    method pj_pool_t (line 153) | pj_pool_t *pj_pool_t_()
    method reset (line 161) | void reset()
    method pj_size_t (line 169) | pj_size_t get_capacity()
    method pj_size_t (line 177) | pj_size_t get_used_size()
  class Pj_Caching_Pool (line 214) | class Pj_Caching_Pool
    method Pj_Caching_Pool (line 220) | Pj_Caching_Pool( pj_size_t cache_capacity = 0,
    method pj_pool_t (line 237) | pj_pool_t *create_pool( pj_size_t initial_size,

FILE: deps/pjsip/pjlib/include/pj++/proactor.hpp
  class Pj_Proactor (line 29) | class Pj_Proactor
    method Pj_Proactor (line 286) | Pj_Proactor()
    method Pj_Proactor (line 298) | Pj_Proactor( Pj_Pool *pool, pj_size_t max_fd,
    method pj_status_t (line 321) | pj_status_t create( Pj_Pool *pool, pj_size_t max_fd,
    method destroy (line 346) | void destroy()
    method pj_status_t (line 362) | pj_status_t register_socket_handler(Pj_Pool *pool,
    method unregister_handler (line 373) | static void unregister_handler(Pj_Event_Handler *handler)
    method schedule_timer (line 384) | bool schedule_timer( Pj_Event_Handler *handler,
    method cancel_timer (line 394) | bool cancel_timer(Pj_Event_Handler *handler)
    method handle_events (line 402) | int handle_events(Pj_Time_Val *max_timeout)
    method pj_ioqueue_t (line 432) | pj_ioqueue_t *get_io_queue()
    method pj_timer_heap_t (line 440) | pj_timer_heap_t *get_timer_heap()
    method schedule_timer (line 450) | static bool schedule_timer( pj_timer_heap_t *timer,
    method read_complete_cb (line 463) | static void read_complete_cb( pj_ioqueue_key_t *key,
    method write_complete_cb (line 476) | static void write_complete_cb(pj_ioqueue_key_t *key,
    method accept_complete_cb (line 489) | static void accept_complete_cb(pj_ioqueue_key_t *key,
    method connect_complete_cb (line 503) | static void connect_complete_cb(pj_ioqueue_key_t *key,
  class Pj_Event_Handler (line 30) | class Pj_Event_Handler
    method Pj_Event_Handler (line 99) | Pj_Event_Handler()
    method unregister (line 118) | void unregister()
    method pj_sock_t (line 129) | virtual pj_sock_t get_socket_handle()
    method pj_status_t (line 137) | pj_status_t recv( Pj_Async_Op *op_key,
    method pj_status_t (line 148) | pj_status_t recvfrom( Pj_Async_Op *op_key,
    method pj_status_t (line 160) | pj_status_t send( Pj_Async_Op *op_key,
    method pj_status_t (line 170) | pj_status_t sendto( Pj_Async_Op *op_key,
    method pj_status_t (line 182) | pj_status_t connect(const Pj_Inet_Addr &addr)
    method pj_status_t (line 190) | pj_status_t accept( Pj_Async_Op *op_key,
    method on_timeout (line 210) | virtual void on_timeout(int)
    method on_read_complete (line 217) | virtual void on_read_complete( Pj_Async_Op*, pj_ssize_t)
    method on_write_complete (line 224) | virtual void on_write_complete( Pj_Async_Op *, pj_ssize_t)
    method on_connect_complete (line 232) | virtual void on_connect_complete(pj_status_t)
    method on_accept_complete (line 239) | virtual void on_accept_complete( Pj_Async_Op*, pj_sock_t, pj_status_t)
    method timer_callback (line 256) | static void timer_callback( pj_timer_heap_t*,
  class Pj_Async_Op (line 39) | class Pj_Async_Op : public pj_ioqueue_op_key_t
    method Pj_Async_Op (line 46) | Pj_Async_Op()
    method Pj_Async_Op (line 55) | explicit Pj_Async_Op(Pj_Event_Handler *handler)
    method set_handler (line 64) | void set_handler(Pj_Event_Handler *handler)
  class Pj_Event_Handler (line 92) | class Pj_Event_Handler : public Pj_Object
    method Pj_Event_Handler (line 99) | Pj_Event_Handler()
    method unregister (line 118) | void unregister()
    method pj_sock_t (line 129) | virtual pj_sock_t get_socket_handle()
    method pj_status_t (line 137) | pj_status_t recv( Pj_Async_Op *op_key,
    method pj_status_t (line 148) | pj_status_t recvfrom( Pj_Async_Op *op_key,
    method pj_status_t (line 160) | pj_status_t send( Pj_Async_Op *op_key,
    method pj_status_t (line 170) | pj_status_t sendto( Pj_Async_Op *op_key,
    method pj_status_t (line 182) | pj_status_t connect(const Pj_Inet_Addr &addr)
    method pj_status_t (line 190) | pj_status_t accept( Pj_Async_Op *op_key,
    method on_timeout (line 210) | virtual void on_timeout(int)
    method on_read_complete (line 217) | virtual void on_read_complete( Pj_Async_Op*, pj_ssize_t)
    method on_write_complete (line 224) | virtual void on_write_complete( Pj_Async_Op *, pj_ssize_t)
    method on_connect_complete (line 232) | virtual void on_connect_complete(pj_status_t)
    method on_accept_complete (line 239) | virtual void on_accept_complete( Pj_Async_Op*, pj_sock_t, pj_status_t)
    method timer_callback (line 256) | static void timer_callback( pj_timer_heap_t*,
  class Pj_Proactor (line 280) | class Pj_Proactor : public Pj_Object
    method Pj_Proactor (line 286) | Pj_Proactor()
    method Pj_Proactor (line 298) | Pj_Proactor( Pj_Pool *pool, pj_size_t max_fd,
    method pj_status_t (line 321) | pj_status_t create( Pj_Pool *pool, pj_size_t max_fd,
    method destroy (line 346) | void destroy()
    method pj_status_t (line 362) | pj_status_t register_socket_handler(Pj_Pool *pool,
    method unregister_handler (line 373) | static void unregister_handler(Pj_Event_Handler *handler)
    method schedule_timer (line 384) | bool schedule_timer( Pj_Event_Handler *handler,
    method cancel_timer (line 394) | bool cancel_timer(Pj_Event_Handler *handler)
    method handle_events (line 402) | int handle_events(Pj_Time_Val *max_timeout)
    method pj_ioqueue_t (line 432) | pj_ioqueue_t *get_io_queue()
    method pj_timer_heap_t (line 440) | pj_timer_heap_t *get_timer_heap()
    method schedule_timer (line 450) | static bool schedule_timer( pj_timer_heap_t *timer,
    method read_complete_cb (line 463) | static void read_complete_cb( pj_ioqueue_key_t *key,
    method write_complete_cb (line 476) | static void write_complete_cb(pj_ioqueue_key_t *key,
    method accept_complete_cb (line 489) | static void accept_complete_cb(pj_ioqueue_key_t *key,
    method connect_complete_cb (line 503) | static void connect_complete_cb(pj_ioqueue_key_t *key,

FILE: deps/pjsip/pjlib/include/pj++/scanner.hpp
  class Pj_Cis (line 26) | class Pj_Cis
    method Pj_Cis (line 50) | Pj_Cis(Pj_Cis_Buffer *buf)
    method Pj_Cis (line 55) | Pj_Cis(const Pj_Cis &rhs)
    method add_range (line 60) | void add_range(int start, int end)
    method add_alpha (line 65) | void add_alpha()
    method add_num (line 70) | void add_num()
    method add_str (line 75) | void add_str(const char *str)
    method add_cis (line 80) | void add_cis(const Pj_Cis &rhs)
    method del_range (line 85) | void del_range(int start, int end)
    method del_str (line 90) | void del_str(const char *str)
    method invert (line 95) | void invert()
    method match (line 100) | bool match(int c) const
  class Pj_Cis_Buffer (line 27) | class Pj_Cis_Buffer
    method Pj_Cis_Buffer (line 35) | Pj_Cis_Buffer()
  class Pj_Scanner (line 28) | class Pj_Scanner
    method Pj_Scanner (line 114) | Pj_Scanner() {}
    method init (line 124) | void init(char *buf, int len, unsigned options=PJ_SCAN_AUTOSKIP_WS,
    method fini (line 130) | void fini()
    method eof (line 135) | int eof() const
    method peek_char (line 140) | int peek_char() const
    method peek (line 145) | int peek(const Pj_Cis *cis, Pj_String *out)
    method peek_n (line 150) | int peek_n(pj_size_t len, Pj_String *out)
    method peek_until (line 155) | int peek_until(const Pj_Cis *cis, Pj_String *out)
    method get (line 160) | void get(const Pj_Cis *cis, Pj_String *out)
    method get_n (line 165) | void get_n(unsigned N, Pj_String *out)
    method get_char (line 170) | int get_char()
    method get_quote (line 175) | void get_quote(int begin_quote, int end_quote, Pj_String *out)
    method get_newline (line 180) | void get_newline()
    method get_until (line 185) | void get_until(const Pj_Cis *cis, Pj_String *out)
    method get_until_ch (line 190) | void get_until_ch(int until_ch, Pj_String *out)
    method get_until_chr (line 195) | void get_until_chr(const char *spec, Pj_String *out)
    method advance_n (line 200) | void advance_n(unsigned N, bool skip_ws=true)
    method strcmp (line 205) | int strcmp(const char *s, int len)
    method stricmp (line 210) | int stricmp(const char *s, int len)
    method skip_ws (line 215) | void skip_ws()
    method save_state (line 220) | void save_state(State *state) const
    method restore_state (line 225) | void restore_state(State *state)
    method get_pos_line (line 230) | int get_pos_line() const
    method get_pos_col (line 235) | int get_pos_col() const
  class Pj_Cis_Buffer (line 30) | class Pj_Cis_Buffer
    method Pj_Cis_Buffer (line 35) | Pj_Cis_Buffer()
  class Pj_Cis (line 45) | class Pj_Cis
    method Pj_Cis (line 50) | Pj_Cis(Pj_Cis_Buffer *buf)
    method Pj_Cis (line 55) | Pj_Cis(const Pj_Cis &rhs)
    method add_range (line 60) | void add_range(int start, int end)
    method add_alpha (line 65) | void add_alpha()
    method add_num (line 70) | void add_num()
    method add_str (line 75) | void add_str(const char *str)
    method add_cis (line 80) | void add_cis(const Pj_Cis &rhs)
    method del_range (line 85) | void del_range(int start, int end)
    method del_str (line 90) | void del_str(const char *str)
    method invert (line 95) | void invert()
    method match (line 100) | bool match(int c) const
  class Pj_Scanner (line 111) | class Pj_Scanner
    method Pj_Scanner (line 114) | Pj_Scanner() {}
    method init (line 124) | void init(char *buf, int len, unsigned options=PJ_SCAN_AUTOSKIP_WS,
    method fini (line 130) | void fini()
    method eof (line 135) | int eof() const
    method peek_char (line 140) | int peek_char() const
    method peek (line 145) | int peek(const Pj_Cis *cis, Pj_String *out)
    method peek_n (line 150) | int peek_n(pj_size_t len, Pj_String *out)
    method peek_until (line 155) | int peek_until(const Pj_Cis *cis, Pj_String *out)
    method get (line 160) | void get(const Pj_Cis *cis, Pj_String *out)
    method get_n (line 165) | void get_n(unsigned N, Pj_String *out)
    method get_char (line 170) | int get_char()
    method get_quote (line 175) | void get_quote(int begin_quote, int end_quote, Pj_String *out)
    method get_newline (line 180) | void get_newline()
    method get_until (line 185) | void get_until(const Pj_Cis *cis, Pj_String *out)
    method get_until_ch (line 190) | void get_until_ch(int until_ch, Pj_String *out)
    method get_until_chr (line 195) | void get_until_chr(const char *spec, Pj_String *out)
    method advance_n (line 200) | void advance_n(unsigned N, bool skip_ws=true)
    method strcmp (line 205) | int strcmp(const char *s, int len)
    method stricmp (line 210) | int stricmp(const char *s, int len)
    method skip_ws (line 215) | void skip_ws()
    method save_state (line 220) | void save_state(State *state) const
    method restore_state (line 225) | void restore_state(State *state)
    method get_pos_line (line 230) | int get_pos_line() const
    method get_pos_col (line 235) | int get_pos_col() const

FILE: deps/pjsip/pjlib/include/pj++/sock.hpp
  class Pj_Event_Handler (line 26) | class Pj_Event_Handler
  class Pj_Addr (line 31) | class Pj_Addr
  class Pj_Inet_Addr (line 38) | class Pj_Inet_Addr : public pj_sockaddr_in, public Pj_Addr
    method pj_uint16_t (line 44) | pj_uint16_t get_port_number() const
    method set_port_number (line 52) | void set_port_number(pj_uint16_t port)
    method pj_uint32_t (line 61) | pj_uint32_t get_ip_address() const
    method set_ip_address (line 77) | void set_ip_address(pj_uint32_t addr)
    method pj_status_t (line 86) | pj_status_t set_address(const pj_str_t *addr)
    method pj_status_t (line 94) | pj_status_t set_address(const char *addr)
  class Pj_Socket (line 129) | class Pj_Socket
    method Pj_Socket (line 135) | Pj_Socket()
    method Pj_Socket (line 143) | explicit Pj_Socket(pj_sock_t sock)
    method Pj_Socket (line 151) | Pj_Socket(const Pj_Socket &rhs)
    method set_handle (line 167) | void set_handle(pj_sock_t sock)
    method pj_sock_t (line 175) | pj_sock_t get_handle() const
    method pj_sock_t (line 183) | pj_sock_t& get_handle()
    method is_valid (line 191) | bool is_valid() const
    method pj_status_t (line 199) | pj_status_t create(int af, int type, int proto)
    method pj_status_t (line 207) | pj_status_t bind(const Pj_Inet_Addr &addr)
    method pj_status_t (line 215) | pj_status_t close()
    method pj_status_t (line 223) | pj_status_t getpeername(Pj_Inet_Addr *addr)
    method pj_status_t (line 231) | pj_status_t getsockname(Pj_Inet_Addr *addr)
    method pj_status_t (line 239) | pj_status_t getsockopt(pj_uint16_t level, pj_uint16_t optname,
    method pj_status_t (line 248) | pj_status_t setsockopt(pj_uint16_t level, pj_uint16_t optname,
    method pj_ssize_t (line 257) | pj_ssize_t recv(void *buf, pj_size_t len, int flag = 0)
    method pj_ssize_t (line 268) | pj_ssize_t send(const void *buf, pj_ssize_t len, int flag = 0)
    method pj_status_t (line 279) | pj_status_t connect(const Pj_Inet_Addr &addr)
    method Pj_Socket (line 287) | Pj_Socket &operator=(const Pj_Socket &rhs)
  class Pj_Sock_Stream (line 303) | class Pj_Sock_Stream : public Pj_Socket
    method Pj_Sock_Stream (line 309) | Pj_Sock_Stream()
    method Pj_Sock_Stream (line 316) | explicit Pj_Sock_Stream(pj_sock_t sock)
    method Pj_Sock_Stream (line 324) | Pj_Sock_Stream(const Pj_Sock_Stream &rhs) : Pj_Socket(rhs)
    method Pj_Sock_Stream (line 331) | Pj_Sock_Stream &operator=(const Pj_Sock_Stream &rhs)
    method pj_status_t (line 340) | pj_status_t listen(int backlog = 5)
    method Pj_Sock_Stream (line 348) | Pj_Sock_Stream accept(Pj_Inet_Addr *remote_addr = NULL)
    method pj_status_t (line 364) | pj_status_t shutdown(int how = PJ_SHUT_RDWR)
  class Pj_Sock_Dgram (line 375) | class Pj_Sock_Dgram : public Pj_Socket
    method Pj_Sock_Dgram (line 381) | Pj_Sock_Dgram()
    method Pj_Sock_Dgram (line 388) | explicit Pj_Sock_Dgram(pj_sock_t sock)
    method Pj_Sock_Dgram (line 396) | Pj_Sock_Dgram(const Pj_Sock_Dgram &rhs)
    method Pj_Sock_Dgram (line 404) | Pj_Sock_Dgram &operator=(const Pj_Sock_Dgram &rhs)
    method pj_ssize_t (line 413) | pj_ssize_t recvfrom( void *buf, pj_size_t len, int flag = 0,
    method pj_ssize_t (line 429) | pj_ssize_t sendto( const void *buf, pj_size_t len, int flag,

FILE: deps/pjsip/pjlib/include/pj++/string.hpp
  class Pj_String (line 30) | class Pj_String : public pj_str_t
    method Pj_String (line 36) | Pj_String()
    method Pj_String (line 46) | Pj_String(char *str)
    method Pj_String (line 54) | Pj_String(Pj_Pool &pool, const char *src)
    method Pj_String (line 62) | explicit Pj_String(pj_str_t &s)
    method Pj_String (line 71) | explicit Pj_String(const pj_str_t &s)
    method Pj_String (line 80) | Pj_String(Pj_Pool &pool, const pj_str_t *s)
    method Pj_String (line 88) | Pj_String(Pj_Pool &pool, const Pj_String &rhs)
    method Pj_String (line 96) | explicit Pj_String(const Pj_String &rhs)
    method Pj_String (line 105) | Pj_String(char *str, pj_size_t len)
    method Pj_String (line 113) | Pj_String(char *begin, char *end)
    method pj_size_t (line 137) | pj_size_t length() const
    method pj_size_t (line 145) | pj_size_t size() const
    method set (line 161) | void set(char *str)
    method set (line 169) | void set(Pj_Pool &pool, const char *s)
    method set (line 177) | void set(pj_str_t *s)
    method set (line 185) | void set(Pj_Pool &pool, const pj_str_t *s)
    method set (line 193) | void set(char *str, pj_size_t len)
    method set (line 201) | void set(char *begin, char *end)
    method set (line 209) | void set(Pj_String &rhs)
    method set (line 217) | void set(Pj_Pool &pool, const Pj_String *s)
    method set (line 225) | void set(Pj_Pool &pool, const Pj_String &s)
    method strcpy (line 233) | void strcpy(const pj_str_t *s)
    method strcpy (line 241) | void strcpy(const Pj_String &rhs)
    method strcpy (line 249) | void strcpy(const char *s)
    method strcmp (line 257) | int strcmp(const char *s) const
    method strcmp (line 265) | int strcmp(const pj_str_t *s) const
    method strcmp (line 273) | int strcmp(const Pj_String &rhs) const
    method strncmp (line 281) | int strncmp(const char *s, pj_size_t len) const
    method strncmp (line 289) | int strncmp(const pj_str_t *s, pj_size_t len) const
    method strncmp (line 297) | int strncmp(const Pj_String &rhs, pj_size_t len) const
    method stricmp (line 305) | int stricmp(const char *s) const
    method stricmp (line 313) | int stricmp(const pj_str_t *s) const
    method stricmp (line 321) | int stricmp(const Pj_String &rhs) const
    method strnicmp (line 329) | int strnicmp(const char *s, pj_size_t len) const
    method strnicmp (line 337) | int strnicmp(const pj_str_t *s, pj_size_t len) const
    method strnicmp (line 345) | int strnicmp(const Pj_String &rhs, pj_size_t len) const
    method Pj_String (line 377) | Pj_String& operator=(char *s)
    method Pj_String (line 386) | Pj_String& operator=(const Pj_String &rhs)
    method strcat (line 412) | void strcat(const Pj_String &rhs)
    method ltrim (line 420) | void ltrim()
    method rtrim (line 428) | void rtrim()
    method trim (line 436) | void trim()
    method to_ulong (line 444) | unsigned long to_ulong() const
    method from_ulong (line 452) | void from_ulong(unsigned long value)
    method from_ulong_with_pad (line 460) | void from_ulong_with_pad(unsigned long value, int min_dig=0, int pad=' ')

FILE: deps/pjsip/pjlib/include/pj++/timer.hpp
  class Pj_Timer_Heap (line 28) | class Pj_Timer_Heap
    method Pj_Timer_Heap (line 83) | Pj_Timer_Heap()
    method Pj_Timer_Heap (line 91) | Pj_Timer_Heap(Pj_Pool *pool, pj_size_t initial_count)
    method pj_status_t (line 108) | pj_status_t create(Pj_Pool *pool, pj_size_t initial_count)
    method destroy (line 117) | void destroy()
    method pj_timer_heap_t (line 128) | pj_timer_heap_t *get_timer_heap()
    method set_lock (line 136) | void set_lock( Pj_Lock *lock, bool auto_delete )
    method set_max_timed_out_per_poll (line 144) | unsigned set_max_timed_out_per_poll(unsigned count)
    method schedule (line 152) | bool schedule( Pj_Timer_Entry *ent, const Pj_Time_Val &delay,
    method cancel (line 162) | bool cancel(Pj_Timer_Entry *ent)
    method pj_size_t (line 170) | pj_size_t count()
    method earliest_time (line 179) | bool earliest_time(Pj_Time_Val *t)
    method poll (line 188) | unsigned poll(Pj_Time_Val *next_delay = NULL)
  class Pj_Timer_Entry (line 37) | class Pj_Timer_Entry : public Pj_Object
    method Pj_Timer_Entry (line 45) | Pj_Timer_Entry()
    method timer_heap_callback (line 66) | static void timer_heap_callback(pj_timer_heap_t*, pj_timer_entry *e)
  class Pj_Timer_Heap (line 77) | class Pj_Timer_Heap : public Pj_Object
    method Pj_Timer_Heap (line 83) | Pj_Timer_Heap()
    method Pj_Timer_Heap (line 91) | Pj_Timer_Heap(Pj_Pool *pool, pj_size_t initial_count)
    method pj_status_t (line 108) | pj_status_t create(Pj_Pool *pool, pj_size_t initial_count)
    method destroy (line 117) | void destroy()
    method pj_timer_heap_t (line 128) | pj_timer_heap_t *get_timer_heap()
    method set_lock (line 136) | void set_lock( Pj_Lock *lock, bool auto_delete )
    method set_max_timed_out_per_poll (line 144) | unsigned set_max_timed_out_per_poll(unsigned count)
    method schedule (line 152) | bool schedule( Pj_Timer_Entry *ent, const Pj_Time_Val &delay,
    method cancel (line 162) | bool cancel(Pj_Timer_Entry *ent)
    method pj_size_t (line 170) | pj_size_t count()
    method earliest_time (line 179) | bool earliest_time(Pj_Time_Val *t)
    method poll (line 188) | unsigned poll(Pj_Time_Val *next_delay = NULL)

FILE: deps/pjsip/pjlib/include/pj++/tree.hpp
  class PJ_Tree (line 28) | class PJ_Tree
    class iterator (line 32) | class iterator
      method iterator (line 51) | iterator() {}
      method iterator (line 52) | iterator(const iterator &rhs) : tr_(rhs.tr_), nd_(rhs.nd_) {}
      method iterator (line 53) | iterator(pj_rbtree *tr, pj_rbtree_node *nd) : tr_(tr), nd_(nd) {}
      method Node (line 54) | Node *operator*() { return (Node*)nd_; }
      method iterator (line 56) | iterator &operator=(const iterator &rhs) { tr_=rhs.tr_; nd_=rhs.nd_;...
    class reverse_iterator (line 33) | class reverse_iterator
      method reverse_iterator (line 67) | reverse_iterator() {}
      method reverse_iterator (line 68) | reverse_iterator(const reverse_iterator &it) : iterator(it) {}
      method reverse_iterator (line 69) | reverse_iterator(pj_rbtree *t, pj_rbtree_node *n) : iterator(t, n) {}
      method reverse_iterator (line 70) | reverse_iterator &operator=(const reverse_iterator &rhs) { iterator:...
      method Node (line 71) | Node *operator*() { return (Node*)nd_; }
    class Node (line 35) | class Node : private pj_rbtree_node
      method Node (line 42) | Node() {}
      method Node (line 43) | explicit Node(void *data) { user_data = data; }
      method set_user_data (line 44) | void  set_user_data(void *data) { user_data = data; }
    class iterator (line 48) | class iterator
      method iterator (line 51) | iterator() {}
      method iterator (line 52) | iterator(const iterator &rhs) : tr_(rhs.tr_), nd_(rhs.nd_) {}
      method iterator (line 53) | iterator(pj_rbtree *tr, pj_rbtree_node *nd) : tr_(tr), nd_(nd) {}
      method Node (line 54) | Node *operator*() { return (Node*)nd_; }
      method iterator (line 56) | iterator &operator=(const iterator &rhs) { tr_=rhs.tr_; nd_=rhs.nd_;...
    class reverse_iterator (line 64) | class reverse_iterator : public iterator
      method reverse_iterator (line 67) | reverse_iterator() {}
      method reverse_iterator (line 68) | reverse_iterator(const reverse_iterator &it) : iterator(it) {}
      method reverse_iterator (line 69) | reverse_iterator(pj_rbtree *t, pj_rbtree_node *n) : iterator(t, n) {}
      method reverse_iterator (line 70) | reverse_iterator &operator=(const reverse_iterator &rhs) { iterator:...
      method Node (line 71) | Node *operator*() { return (Node*)nd_; }
    method PJ_Tree (line 77) | explicit PJ_Tree(Comp *comp) { pj_rbtree_init(&t_, comp); }
    method iterator (line 79) | iterator begin()
      method iterator (line 51) | iterator() {}
      method iterator (line 52) | iterator(const iterator &rhs) : tr_(rhs.tr_), nd_(rhs.nd_) {}
      method iterator (line 53) | iterator(pj_rbtree *tr, pj_rbtree_node *nd) : tr_(tr), nd_(nd) {}
      method Node (line 54) | Node *operator*() { return (Node*)nd_; }
      method iterator (line 56) | iterator &operator=(const iterator &rhs) { tr_=rhs.tr_; nd_=rhs.nd_;...
    method iterator (line 84) | iterator end()
      method iterator (line 51) | iterator() {}
      method iterator (line 52) | iterator(const iterator &rhs) : tr_(rhs.tr_), nd_(rhs.nd_) {}
      method iterator (line 53) | iterator(pj_rbtree *tr, pj_rbtree_node *nd) : tr_(tr), nd_(nd) {}
      method Node (line 54) | Node *operator*() { return (Node*)nd_; }
      method iterator (line 56) | iterator &operator=(const iterator &rhs) { tr_=rhs.tr_; nd_=rhs.nd_;...
    method reverse_iterator (line 89) | reverse_iterator rbegin()
      method reverse_iterator (line 67) | reverse_iterator() {}
      method reverse_iterator (line 68) | reverse_iterator(const reverse_iterator &it) : iterator(it) {}
      method reverse_iterator (line 69) | reverse_iterator(pj_rbtree *t, pj_rbtree_node *n) : iterator(t, n) {}
      method reverse_iterator (line 70) | reverse_iterator &operator=(const reverse_iterator &rhs) { iterator:...
      method Node (line 71) | Node *operator*() { return (Node*)nd_; }
    method reverse_iterator (line 94) | reverse_iterator rend()
      method reverse_iterator (line 67) | reverse_iterator() {}
      method reverse_iterator (line 68) | reverse_iterator(const reverse_iterator &it) : iterator(it) {}
      method reverse_iterator (line 69) | reverse_iterator(pj_rbtree *t, pj_rbtree_node *n) : iterator(t, n) {}
      method reverse_iterator (line 70) | reverse_iterator &operator=(const reverse_iterator &rhs) { iterator:...
      method Node (line 71) | Node *operator*() { return (Node*)nd_; }
    method insert (line 99) | bool insert(Node *node)
    method Node (line 104) | Node *find(const void *key)
      method Node (line 42) | Node() {}
      method Node (line 43) | explicit Node(void *data) { user_data = data; }
      method set_user_data (line 44) | void  set_user_data(void *data) { user_data = data; }
    method Node (line 109) | Node *erase(Node *node)
      method Node (line 42) | Node() {}
      method Node (line 43) | explicit Node(void *data) { user_data = data; }
      method set_user_data (line 44) | void  set_user_data(void *data) { user_data = data; }
    method max_height (line 114) | unsigned max_height(Node *node=NULL)
    method min_height (line 119) | unsigned min_height(Node *node=NULL)

FILE: deps/pjsip/pjlib/include/pj++/types.hpp
  class Pj_Pool (line 25) | class Pj_Pool
  class Pj_Socket (line 26) | class Pj_Socket
  class Pj_Lock (line 27) | class Pj_Lock
  class Pjlib (line 33) | class Pjlib
    method Pjlib (line 36) | Pjlib()
  class Pj_Time_Val (line 49) | class Pj_Time_Val : public pj_time_val
    method Pj_Time_Val (line 52) | Pj_Time_Val()
    method Pj_Time_Val (line 56) | Pj_Time_Val(long init_sec, long init_msec)
    method Pj_Time_Val (line 62) | Pj_Time_Val(const Pj_Time_Val &rhs)
    method Pj_Time_Val (line 68) | explicit Pj_Time_Val(const pj_time_val &tv)
    method get_sec (line 74) | long get_sec()  const
    method get_msec (line 79) | long get_msec() const
    method set_sec (line 84) | void set_sec (long s)
    method set_msec (line 89) | void set_msec(long ms)
    method to_msec (line 95) | long to_msec() const
    method Pj_Time_Val (line 125) | Pj_Time_Val & operator = (const Pj_Time_Val &rhs)
    method Pj_Time_Val (line 132) | Pj_Time_Val & operator += (const Pj_Time_Val &rhs)
    method Pj_Time_Val (line 138) | Pj_Time_Val & operator -= (const Pj_Time_Val &rhs)
    method normalize (line 153) | void normalize()

FILE: deps/pjsip/pjlib/include/pj/activesock.h
  type pj_activesock_t (line 51) | struct pj_activesock_t
  type pj_activesock_cb (line 56) | typedef struct pj_activesock_cb
  type pj_activesock_cfg (line 199) | typedef struct pj_activesock_cfg

FILE: deps/pjsip/pjlib/include/pj/addr_resolv.h
  type pj_hostent (line 65) | struct pj_hostent
  type pj_addrinfo (line 80) | typedef struct pj_addrinfo

FILE: deps/pjsip/pjlib/include/pj/compat/cc_armcc.h
  type pj_int64_t (line 49) | typedef long long pj_int64_t;
  type pj_uint64_t (line 50) | typedef unsigned long long pj_uint64_t;

FILE: deps/pjsip/pjlib/include/pj/compat/cc_codew.h
  type pj_int64_t (line 45) | typedef long long pj_int64_t;
  type pj_uint64_t (line 46) | typedef unsigned long long pj_uint64_t;

FILE: deps/pjsip/pjlib/include/pj/compat/cc_gcc.h
  type pj_int64_t (line 52) | typedef int64_t		pj_int64_t;
  type pj_uint64_t (line 53) | typedef uint64_t		pj_uint64_t;
  type pj_int64_t (line 57) | typedef long long		pj_int64_t;
  type pj_uint64_t (line 58) | typedef unsigned long long	pj_uint64_t;

FILE: deps/pjsip/pjlib/include/pj/compat/cc_gcce.h
  type pj_int64_t (line 45) | typedef long long pj_int64_t;
  type pj_uint64_t (line 46) | typedef unsigned long long pj_uint64_t;

FILE: deps/pjsip/pjlib/include/pj/compat/cc_msvc.h
  type __int64 (line 74) | typedef __int64 pj_int64_t;
  type pj_uint64_t (line 75) | typedef unsigned __int64 pj_uint64_t;

FILE: deps/pjsip/pjlib/include/pj/compat/cc_mwcc.h
  type pj_int64_t (line 45) | typedef long long pj_int64_t;
  type pj_uint64_t (line 46) | typedef unsigned long long pj_uint64_t;

FILE: deps/pjsip/pjlib/include/pj/compat/errno.h
  type pj_os_err_type (line 27) | typedef unsigned long pj_os_err_type;
  type pj_os_err_type (line 33) | typedef int pj_os_err_type;

FILE: deps/pjsip/pjlib/include/pj/compat/high_precision.h
  type pj_highprec_t (line 29) | typedef double pj_highprec_t;
  type pj_int64_t (line 38) | typedef pj_int64_t pj_highprec_t;
  function do_mod (line 43) | PJ_INLINE(pj_int64_t) do_mod( pj_int64_t a1, pj_int64_t a2)
  type pj_int64_t (line 53) | typedef pj_int64_t pj_highprec_t;
  type pj_int32_t (line 61) | typedef pj_int32_t pj_highprec_t;

FILE: deps/pjsip/pjlib/include/pj/compat/os_darwinos.h
  type socklen_t (line 98) | typedef int socklen_t;

FILE: deps/pjsip/pjlib/include/pj/compat/os_rtems.h
  type socklen_t (line 119) | typedef int socklen_t;

FILE: deps/pjsip/pjlib/include/pj/compat/os_symbian.h
  type socklen_t (line 152) | typedef unsigned int socklen_t;

FILE: deps/pjsip/pjlib/include/pj/compat/rand.h
  function platform_rand (line 39) | PJ_INLINE(int) platform_rand(void)
  function platform_rand (line 54) | PJ_INLINE(int) platform_rand(void)

FILE: deps/pjsip/pjlib/include/pj/compat/setjmp.h
  type jmp_buf (line 30) | typedef jmp_buf pj_jmp_buf;
  type __sigset_t (line 60) | typedef struct __sigset_t_tag
  type __jmp_buf_tag (line 66) | struct __jmp_buf_tag    /* C++ doesn't like tagless structs.  */
  type jmp_buf (line 78) | typedef jmp_buf sigjmp_buf;
  type jmp_buf (line 79) | typedef jmp_buf pj_jmp_buf;

FILE: deps/pjsip/pjlib/include/pj/compat/socket.h
  type socklen_t (line 190) | typedef int socklen_t;
  function select (line 196) | PJ_INLINE(int) select(int n, fd_set *inp, fd_set *outp, fd_set *exp,
  type socklen_t (line 214) | typedef int socklen_t;

FILE: deps/pjsip/pjlib/include/pj/ctype.h
  function PJ_BEGIN_DECL (line 31) | PJ_BEGIN_DECL
  function pj_isalpha (line 57) | PJ_INLINE(int) pj_isalpha(unsigned char c) { return isalpha(c); }
  function pj_isascii (line 66) | PJ_INLINE(int) pj_isascii(unsigned char c) { return c<128; }
  function pj_isdigit (line 75) | PJ_INLINE(int) pj_isdigit(unsigned char c) { return isdigit(c); }
  function pj_isspace (line 84) | PJ_INLINE(int) pj_isspace(unsigned char c) { return isspace(c); }
  function pj_islower (line 93) | PJ_INLINE(int) pj_islower(unsigned char c) { return islower(c); }
  function pj_isupper (line 103) | PJ_INLINE(int) pj_isupper(unsigned char c) { return isupper(c); }
  function pj_isblank (line 112) | PJ_INLINE(int) pj_isblank(unsigned char c) { return isblank(c); }
  function pj_tolower (line 119) | PJ_INLINE(int) pj_tolower(unsigned char c) { return tolower(c); }
  function pj_toupper (line 126) | PJ_INLINE(int) pj_toupper(unsigned char c) { return toupper(c); }
  function pj_isxdigit (line 135) | PJ_INLINE(int) pj_isxdigit(unsigned char c){ return isxdigit(c); }
  function pj_val_to_hex_digit (line 149) | PJ_INLINE(void) pj_val_to_hex_digit(unsigned value, char *p)
  function pj_hex_digit_to_val (line 160) | PJ_INLINE(unsigned) pj_hex_digit_to_val(unsigned char c)

FILE: deps/pjsip/pjlib/include/pj/errno.h
  type pj_str_t (line 215) | typedef pj_str_t (*pj_error_callback)(pj_status_t e, char *msg, pj_size_...

FILE: deps/pjsip/pjlib/include/pj/except.h
  function pj_throw_exception_ (line 275) | PJ_IDECL_NO_RETURN(void)
  function class (line 304) | class TPjException
  type pj_exception_state_t (line 341) | struct pj_exception_state_t
  type pj_exception_state_t (line 357) | struct pj_exception_state_t
  type pj_exception_state_t (line 362) | struct pj_exception_state_t

FILE: deps/pjsip/pjlib/include/pj/fifobuf.h
  type pj_fifobuf_t (line 27) | struct pj_fifobuf_t
  type pj_fifobuf_t (line 28) | struct pj_fifobuf_t

FILE: deps/pjsip/pjlib/include/pj/file_access.h
  type pj_file_stat (line 43) | struct pj_file_stat

FILE: deps/pjsip/pjlib/include/pj/file_io.h
  type pj_file_seek_type (line 71) | enum pj_file_seek_type
  type pj_file_seek_type (line 153) | enum pj_file_seek_type

FILE: deps/pjsip/pjlib/include/pj/ioqueue.h
  type pj_ioqueue_op_key_t (line 209) | struct pj_ioqueue_op_key_t
  type pj_ioqueue_callback (line 220) | typedef struct pj_ioqueue_callback
  type pj_ioqueue_operation_e (line 280) | typedef enum pj_ioqueue_operation_e

FILE: deps/pjsip/pjlib/include/pj/list.h
  function PJ_BEGIN_DECL (line 30) | PJ_BEGIN_DECL
  function pj_list_empty (line 102) | PJ_INLINE(int) pj_list_empty(const pj_list_type * node)
  function pj_list_push_back (line 126) | PJ_INLINE(void) pj_list_push_back(pj_list_type *list, pj_list_type *node)
  function pj_list_push_front (line 160) | PJ_INLINE(void) pj_list_push_front(pj_list_type *list, pj_list_type *node)

FILE: deps/pjsip/pjlib/include/pj/list_i.h
  function pj_link_node (line 23) | PJ_INLINE(void) pj_link_node(pj_list_type *prev, pj_list_type *next)
  function pj_list_insert_after (line 29) | PJ_IDEF(void) pj_list_insert_after(pj_list_type *pos, pj_list_type *node)
  function pj_list_insert_before (line 38) | PJ_IDEF(void) pj_list_insert_before(pj_list_type *pos, pj_list_type *node)
  function pj_list_insert_nodes_after (line 44) | PJ_IDEF(void) pj_list_insert_nodes_after(pj_list_type *pos, pj_list_type...
  function pj_list_insert_nodes_before (line 53) | PJ_IDEF(void) pj_list_insert_nodes_before(pj_list_type *pos, pj_list_typ...
  function pj_list_merge_last (line 58) | PJ_IDEF(void) pj_list_merge_last(pj_list_type *lst1, pj_list_type *lst2)
  function pj_list_merge_first (line 67) | PJ_IDEF(void) pj_list_merge_first(pj_list_type *lst1, pj_list_type *lst2)
  function pj_list_erase (line 76) | PJ_IDEF(void) pj_list_erase(pj_list_type *node)
  function pj_list_find_node (line 88) | PJ_IDEF(pj_list_type*) pj_list_find_node(pj_list_type *list, pj_list_typ...
  function pj_list_search (line 98) | PJ_IDEF(pj_list_type*) pj_list_search(pj_list_type *list, void *value,
  function pj_list_size (line 109) | PJ_IDEF(pj_size_t) pj_list_size(const pj_list_type *list)

FILE: deps/pjsip/pjlib/include/pj/lock.h
  function PJ_BEGIN_DECL (line 29) | PJ_BEGIN_DECL

FILE: deps/pjsip/pjlib/include/pj/math.h
  type pj_math_stat (line 61) | typedef struct pj_math_stat
  function pj_isqrt (line 85) | PJ_INLINE(unsigned) pj_isqrt(unsigned i)
  function pj_math_stat_init (line 110) | PJ_INLINE(void) pj_math_stat_init(pj_math_stat *stat)
  function pj_math_stat_update (line 121) | PJ_INLINE(void) pj_math_stat_update(pj_math_stat *stat, int val)
  function pj_math_stat_get_stddev (line 171) | PJ_INLINE(unsigned) pj_math_stat_get_stddev(const pj_math_stat *stat)
  function pj_math_stat_set_stddev (line 186) | PJ_INLINE(void) pj_math_stat_set_stddev(pj_math_stat *stat, unsigned dev)

FILE: deps/pjsip/pjlib/include/pj/os.h
  type pj_sys_info_flag (line 47) | enum pj_sys_info_flag
  type pj_sys_info (line 61) | typedef struct pj_sys_info
  type pj_thread_create_flags (line 149) | typedef enum pj_thread_create_flags
  type pj_symbianos_params (line 450) | typedef struct pj_symbianos_params
  type pj_mutex_type_e (line 683) | typedef enum pj_mutex_type_e
  type pj_rwmutex_t (line 796) | typedef struct pj_rwmutex_t pj_rwmutex_t;
  function pj_set_timestamp32 (line 1207) | PJ_INLINE(void) pj_set_timestamp32(pj_timestamp *t, pj_uint32_t hi,
  function pj_cmp_timestamp (line 1221) | PJ_INLINE(int) pj_cmp_timestamp(const pj_timestamp *t1, const pj_timesta...
  function pj_add_timestamp (line 1248) | PJ_INLINE(void) pj_add_timestamp(pj_timestamp *t1, const pj_timestamp *t2)
  function pj_add_timestamp32 (line 1266) | PJ_INLINE(void) pj_add_timestamp32(pj_timestamp *t1, pj_uint32_t t2)
  function pj_sub_timestamp (line 1283) | PJ_INLINE(void) pj_sub_timestamp(pj_timestamp *t1, const pj_timestamp *t2)
  function pj_sub_timestamp32 (line 1303) | PJ_INLINE(void) pj_sub_timestamp32(pj_timestamp *t1, pj_uint32_t t2)
  function pj_timestamp_diff32 (line 1321) | PJ_INLINE(pj_int32_t) pj_timestamp_diff32(const pj_timestamp *t1,

FILE: deps/pjsip/pjlib/include/pj/pool.h
  type pj_pool_block (line 300) | typedef struct pj_pool_block
  type pj_pool_t (line 313) | struct pj_pool_t
  function pj_pool_zalloc (line 474) | PJ_INLINE(void*) pj_pool_zalloc(pj_pool_t *pool, pj_size_t size)
  type pj_pool_factory_policy (line 580) | typedef struct pj_pool_factory_policy
  type pj_pool_factory (line 651) | struct pj_pool_factory
  function pj_pool_factory_dump (line 769) | PJ_INLINE(void) pj_pool_factory_dump( pj_pool_factory *pf,
  type pj_caching_pool (line 808) | struct pj_caching_pool

FILE: deps/pjsip/pjlib/include/pj/pool_alt.h
  type pj_pool_mem (line 35) | struct pj_pool_mem
  type pj_pool_t (line 43) | struct pj_pool_t
  type pj_pool_factory_policy (line 138) | typedef struct pj_pool_factory_policy
  type pj_pool_factory (line 172) | struct pj_pool_factory
  type pj_caching_pool (line 178) | struct pj_caching_pool
  type pj_pool_block (line 189) | typedef struct pj_pool_block

FILE: deps/pjsip/pjlib/include/pj/pool_i.h
  function pj_pool_get_capacity (line 25) | PJ_IDEF(pj_size_t) pj_pool_get_capacity( pj_pool_t *pool )
  function pj_pool_get_used_size (line 30) | PJ_IDEF(pj_size_t) pj_pool_get_used_size( pj_pool_t *pool )
  function pj_pool_alloc_from_block (line 41) | PJ_IDEF(void*) pj_pool_alloc_from_block( pj_pool_block *block, pj_size_t...
  function pj_pool_alloc (line 58) | PJ_IDEF(void*) pj_pool_alloc( pj_pool_t *pool, pj_size_t size)
  function pj_pool_calloc (line 67) | PJ_IDEF(void*) pj_pool_calloc( pj_pool_t *pool, pj_size_t count, pj_size...
  function pj_pool_getobjname (line 75) | PJ_IDEF(const char *) pj_pool_getobjname( const pj_pool_t *pool )
  function pj_pool_create (line 80) | PJ_IDEF(pj_pool_t*) pj_pool_create( pj_pool_factory *f,
  function pj_pool_release (line 89) | PJ_IDEF(void) pj_pool_release( pj_pool_t *pool )

FILE: deps/pjsip/pjlib/include/pj/rbtree.h
  type pj_rbcolor_t (line 43) | enum pj_rbcolor_t
  type pj_rbtree_node (line 52) | typedef struct pj_rbtree_node
  type pj_rbtree (line 87) | typedef struct pj_rbtree

FILE: deps/pjsip/pjlib/include/pj/sock.h
  type pj_socket_sd_type (line 436) | typedef enum pj_socket_sd_type
  type pj_in_addr (line 480) | typedef struct pj_in_addr
  type pj_sockaddr_in (line 512) | struct pj_sockaddr_in
  type pj_in6_addr (line 531) | typedef union pj_in6_addr
  type pj_sockaddr_in6 (line 566) | typedef struct pj_sockaddr_in6
  type pj_addr_hdr (line 589) | typedef struct pj_addr_hdr
  type pj_sockaddr (line 603) | typedef union pj_sockaddr
  type pj_ip_mreq (line 614) | typedef struct pj_ip_mreq {
  type pj_sockopt_params (line 625) | typedef struct pj_sockopt_params
  type pj_in_addr (line 704) | struct pj_in_addr

FILE: deps/pjsip/pjlib/include/pj/sock_qos.h
  type pj_qos_type (line 233) | enum pj_qos_type
  type pj_qos_flag (line 248) | typedef enum pj_qos_flag
  type pj_qos_wmm_prio (line 259) | typedef enum pj_qos_wmm_prio
  type pj_qos_params (line 271) | typedef struct pj_qos_params

FILE: deps/pjsip/pjlib/include/pj/sock_select.h
  type pj_fd_set_t (line 56) | struct pj_fd_set_t

FILE: deps/pjsip/pjlib/include/pj/ssl_sock.h
  type pj_ssl_sock_t (line 53) | struct pj_ssl_sock_t
  type pj_ssl_cert_t (line 60) | typedef struct pj_ssl_cert_t pj_ssl_cert_t;
  type pj_ssl_cert_verify_flag_t (line 63) | typedef enum pj_ssl_cert_verify_flag_t
  type pj_ssl_cert_name_type (line 134) | typedef enum pj_ssl_cert_name_type
  type pj_ssl_cert_info (line 146) | typedef struct pj_ssl_cert_info {
  type pj_ssl_cipher (line 278) | typedef enum pj_ssl_cipher {
  type pj_ssl_sock_cb (line 408) | typedef struct pj_ssl_sock_cb
  type pj_ssl_sock_proto (line 526) | typedef enum pj_ssl_sock_proto
  type pj_ssl_sock_info (line 575) | typedef struct pj_ssl_sock_info
  type pj_ssl_sock_param (line 636) | typedef struct pj_ssl_sock_param

FILE: deps/pjsip/pjlib/include/pj/string.h
  function PJ_BEGIN_DECL (line 32) | PJ_BEGIN_DECL
  function pj_strset (line 106) | PJ_INLINE(pj_str_t*) pj_strset( pj_str_t *str, char *ptr, pj_size_t length)
  function pj_strset2 (line 122) | PJ_INLINE(pj_str_t*) pj_strset2( pj_str_t *str, char *src)
  function pj_strset3 (line 138) | PJ_INLINE(pj_str_t*) pj_strset3( pj_str_t *str, char *begin, char *end )
  function pj_strlen (line 271) | PJ_INLINE(pj_size_t) pj_strlen( const pj_str_t *str )
  function pj_strbuf (line 283) | PJ_INLINE(const char*) pj_strbuf( const pj_str_t *str )
  function pj_strchr (line 470) | PJ_INLINE(char*) pj_strchr( const pj_str_t *str, int chr)
  function pj_bzero (line 619) | PJ_INLINE(void) pj_bzero(void *dst, pj_size_t size)
  function pj_memset (line 638) | PJ_INLINE(void*) pj_memset(void *dst, int c, pj_size_t size)
  function pj_memcpy (line 652) | PJ_INLINE(void*) pj_memcpy(void *dst, const void *src, pj_size_t size)
  function pj_memmove (line 666) | PJ_INLINE(void*) pj_memmove(void *dst, const void *src, pj_size_t size)
  function pj_memcmp (line 680) | PJ_INLINE(int) pj_memcmp(const void *buf1, const void *buf2, pj_size_t s...
  function pj_memchr (line 695) | PJ_INLINE(void*) pj_memchr(const void *buf, int c, pj_size_t size)

FILE: deps/pjsip/pjlib/include/pj/string_i.h
  function pj_str (line 24) | PJ_IDEF(pj_str_t) pj_str(char *str)
  function pj_strdup (line 32) | PJ_IDEF(pj_str_t*) pj_strdup(pj_pool_t *pool,
  function pj_strdup_with_null (line 48) | PJ_IDEF(pj_str_t*) pj_strdup_with_null( pj_pool_t *pool,
  function pj_strdup2 (line 61) | PJ_IDEF(pj_str_t*) pj_strdup2(pj_pool_t *pool,
  function pj_strdup2_with_null (line 75) | PJ_IDEF(pj_str_t*) pj_strdup2_with_null( pj_pool_t *pool,
  function pj_strdup3 (line 88) | PJ_IDEF(pj_str_t) pj_strdup3(pj_pool_t *pool, const char *src)
  function pj_strassign (line 95) | PJ_IDEF(pj_str_t*) pj_strassign( pj_str_t *dst, pj_str_t *src )
  function pj_strcpy (line 102) | PJ_IDEF(pj_str_t*) pj_strcpy(pj_str_t *dst, const pj_str_t *src)
  function pj_strcpy2 (line 110) | PJ_IDEF(pj_str_t*) pj_strcpy2(pj_str_t *dst, const char *src)
  function pj_strncpy (line 118) | PJ_IDEF(pj_str_t*) pj_strncpy( pj_str_t *dst, const pj_str_t *src,
  function pj_strncpy_with_null (line 128) | PJ_IDEF(pj_str_t*) pj_strncpy_with_null( pj_str_t *dst, const pj_str_t *...
  function pj_strcmp (line 145) | PJ_IDEF(int) pj_strcmp( const pj_str_t *str1, const pj_str_t *str2)
  function pj_strncmp (line 163) | PJ_IDEF(int) pj_strncmp( const pj_str_t *str1, const pj_str_t *str2,
  function pj_strncmp2 (line 183) | PJ_IDEF(int) pj_strncmp2( const pj_str_t *str1, const char *str2,
  function pj_strcmp2 (line 198) | PJ_IDEF(int) pj_strcmp2( const pj_str_t *str1, const char *str2 )
  function pj_stricmp (line 213) | PJ_IDEF(int) pj_stricmp( const pj_str_t *str1, const pj_str_t *str2)
  function else (line 246) | else if (len==3)
  function else (line 271) | else if (len == 0) {
  function else (line 282) | else if (len==3)
  function pj_strnicmp (line 317) | PJ_IDEF(int) pj_strnicmp( const pj_str_t *str1, const pj_str_t *str2,
  function pj_strnicmp2 (line 337) | PJ_IDEF(int) pj_strnicmp2( const pj_str_t *str1, const char *str2,
  function pj_strcat (line 352) | PJ_IDEF(void) pj_strcat(pj_str_t *dst, const pj_str_t *src)
  function pj_strcat2 (line 360) | PJ_IDEF(void) pj_strcat2(pj_str_t *dst, const char *str)
  function pj_strtrim (line 369) | PJ_IDEF(pj_str_t*) pj_strtrim( pj_str_t *str )

FILE: deps/pjsip/pjlib/include/pj/timer.h
  type pj_timer_entry (line 73) | struct pj_timer_entry
  type pj_timer_entry (line 83) | struct pj_timer_entry
  type pj_timer_entry (line 89) | typedef struct pj_timer_entry

FILE: deps/pjsip/pjlib/include/pj/types.h
  type pj_uint32_t (line 43) | typedef unsigned int	pj_uint32_t;
  type pj_int16_t (line 46) | typedef short		pj_int16_t;
  type pj_uint16_t (line 49) | typedef unsigned short	pj_uint16_t;
  type pj_int8_t (line 52) | typedef signed char	pj_int8_t;
  type pj_uint8_t (line 55) | typedef unsigned char	pj_uint8_t;
  type pj_size_t (line 58) | typedef size_t		pj_size_t;
  type pj_int64_t (line 62) | typedef pj_int64_t     pj_ssize_t;
  type pj_ssize_t (line 64) | typedef long           pj_ssize_t;
  type pj_status_t (line 68) | typedef int		pj_status_t;
  type pj_bool_t (line 71) | typedef int		pj_bool_t;
  type wchar_t (line 76) | typedef wchar_t pj_char_t;
  type pj_char_t (line 78) | typedef char pj_char_t;
  type pj_constants_ (line 90) | enum pj_constants_
  type pj_int64_t (line 106) | typedef pj_int64_t pj_off_t;
  type pj_ssize_t (line 108) | typedef pj_ssize_t pj_off_t;
  type pj_str_t (line 119) | struct pj_str_t
  type pj_timestamp (line 133) | typedef union pj_timestamp
  type pj_list_type (line 157) | typedef void pj_list_type;
  type pj_list (line 162) | typedef struct pj_list pj_list;
  type pj_hash_table_t (line 167) | typedef struct pj_hash_table_t pj_hash_table_t;
  type pj_hash_entry (line 172) | typedef struct pj_hash_entry pj_hash_entry;
  type pj_hash_iterator_t (line 179) | typedef struct pj_hash_iterator_t
  type pj_pool_factory (line 189) | typedef struct pj_pool_factory pj_pool_factory;
  type pj_pool_t (line 194) | typedef struct pj_pool_t pj_pool_t;
  type pj_caching_pool (line 199) | typedef struct pj_caching_pool pj_caching_pool;
  type pj_str_t (line 205) | typedef struct pj_str_t pj_str_t;
  type pj_ioqueue_t (line 210) | typedef struct pj_ioqueue_t pj_ioqueue_t;
  type pj_ioqueue_key_t (line 216) | typedef struct pj_ioqueue_key_t pj_ioqueue_key_t;
  type pj_timer_heap_t (line 221) | typedef struct pj_timer_heap_t pj_timer_heap_t;
  type pj_atomic_t (line 226) | typedef struct pj_atomic_t pj_atomic_t;
  type PJ_ATOMIC_VALUE_TYPE (line 231) | typedef PJ_ATOMIC_VALUE_TYPE pj_atomic_value_t;
  type pj_thread_t (line 236) | typedef struct pj_thread_t pj_thread_t;
  type pj_lock_t (line 239) | typedef struct pj_lock_t pj_lock_t;
  type pj_grp_lock_t (line 242) | typedef struct pj_grp_lock_t pj_grp_lock_t;
  type pj_mutex_t (line 245) | typedef struct pj_mutex_t pj_mutex_t;
  type pj_sem_t (line 248) | typedef struct pj_sem_t pj_sem_t;
  type pj_event_t (line 251) | typedef struct pj_event_t pj_event_t;
  type pj_pipe_t (line 254) | typedef struct pj_pipe_t pj_pipe_t;
  type pj_int64_t (line 261) | typedef pj_int64_t pj_sock_t;
  type pj_sock_t (line 263) | typedef long pj_sock_t;
  type pj_sockaddr_t (line 267) | typedef void pj_sockaddr_t;
  type pj_sockaddr_in (line 270) | typedef struct pj_sockaddr_in pj_sockaddr_in;
  type pj_color_t (line 273) | typedef unsigned int pj_color_t;
  type pj_exception_id_t (line 276) | typedef int pj_exception_id_t;
  function pj_swap16 (line 339) | PJ_INLINE(pj_int16_t) pj_swap16(pj_int16_t val16)
  function pj_swap32 (line 355) | PJ_INLINE(pj_int32_t) pj_swap32(pj_int32_t val32)
  type pj_time_val (line 382) | typedef struct pj_time_val
  type pj_parsed_time (line 495) | typedef struct pj_parsed_time

FILE: deps/pjsip/pjlib/src/pj/activesock.c
  type read_type (line 39) | enum read_type
  type shutdown_dir (line 46) | enum shutdown_dir
  type read_op (line 53) | struct read_op
  type accept_op (line 63) | struct accept_op
  type send_data (line 71) | struct send_data
  type pj_activesock_t (line 79) | struct pj_activesock_t
  function pj_activesock_cfg_default (line 125) | PJ_DEF(void) pj_activesock_cfg_default(pj_activesock_cfg *cfg)
  function activesock_destroy_iphone_os_stream (line 135) | static void activesock_destroy_iphone_os_stream(pj_activesock_t *asock)
  function activesock_create_iphone_os_stream (line 144) | static void activesock_create_iphone_os_stream(pj_activesock_t *asock)
  function pj_activesock_set_iphone_os_bg (line 170) | PJ_DEF(void) pj_activesock_set_iphone_os_bg(pj_activesock_t *asock,
  function pj_activesock_enable_iphone_os_bg (line 180) | PJ_DEF(void) pj_activesock_enable_iphone_os_bg(pj_bool_t val)
  function pj_activesock_create (line 186) | PJ_DEF(pj_status_t) pj_activesock_create( pj_pool_t *pool,
  function pj_activesock_create_udp (line 248) | PJ_DEF(pj_status_t) pj_activesock_create_udp( pj_pool_t *pool,
  function pj_activesock_close (line 297) | PJ_DEF(pj_status_t) pj_activesock_close(pj_activesock_t *asock)
  function pj_activesock_set_user_data (line 315) | PJ_DEF(pj_status_t) pj_activesock_set_user_data( pj_activesock_t *asock,
  function pj_activesock_get_user_data (line 324) | PJ_DEF(void*) pj_activesock_get_user_data(pj_activesock_t *asock)
  function pj_activesock_start_read (line 331) | PJ_DEF(pj_status_t) pj_activesock_start_read(pj_activesock_t *asock,
  function pj_activesock_start_read2 (line 352) | PJ_DEF(pj_status_t) pj_activesock_start_read2( pj_activesock_t *asock,
  function pj_activesock_start_recvfrom (line 390) | PJ_DEF(pj_status_t) pj_activesock_start_recvfrom(pj_activesock_t *asock,
  function pj_activesock_start_recvfrom2 (line 412) | PJ_DEF(pj_status_t) pj_activesock_start_recvfrom2( pj_activesock_t *asock,
  function ioqueue_on_read_complete (line 452) | static void ioqueue_on_read_complete(pj_ioqueue_key_t *key,
  function pj_status_t (line 634) | static pj_status_t send_remaining(pj_activesock_t *asock,
  function pj_activesock_send (line 663) | PJ_DEF(pj_status_t) pj_activesock_send( pj_activesock_t *asock,
  function pj_activesock_sendto (line 713) | PJ_DEF(pj_status_t) pj_activesock_sendto( pj_activesock_t *asock,
  function ioqueue_on_write_complete (line 732) | static void ioqueue_on_write_complete(pj_ioqueue_key_t *key,
  function pj_activesock_start_accept (line 784) | PJ_DEF(pj_status_t) pj_activesock_start_accept(pj_activesock_t *asock,
  function ioqueue_on_accept_complete (line 828) | static void ioqueue_on_accept_complete(pj_ioqueue_key_t *key,
  function pj_activesock_start_connect (line 915) | PJ_DEF(pj_status_t) pj_activesock_start_connect( pj_activesock_t *asock,
  function ioqueue_on_connect_complete (line 928) | static void ioqueue_on_connect_complete(pj_ioqueue_key_t *key,

FILE: deps/pjsip/pjlib/src/pj/addr_resolv_linux_kernel.c
  function pj_gethostbyname (line 22) | PJ_DEF(pj_status_t) pj_gethostbyname(const pj_str_t *hostname, pj_hosten...

FILE: deps/pjsip/pjlib/src/pj/addr_resolv_sock.c
  function pj_gethostbyname (line 32) | PJ_DEF(pj_status_t) pj_gethostbyname(const pj_str_t *hostname, pj_hosten...
  function pj_getaddrinfo (line 64) | PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename,

FILE: deps/pjsip/pjlib/src/pj/addr_resolv_symbian.cpp
  function pj_gethostbyname (line 36) | pj_gethostbyname(const pj_str_t *name, pj_hostent *he)
  function pj_status_t (line 66) | static pj_status_t getaddrinfo_by_af(int af, const pj_str_t *name,
  function pj_getaddrinfo (line 161) | pj_getaddrinfo(int af, const pj_str_t *nodename,

FILE: deps/pjsip/pjlib/src/pj/array.c
  function pj_array_insert (line 25) | PJ_DEF(void) pj_array_insert( void *array,
  function pj_array_erase (line 39) | PJ_DEF(void) pj_array_erase( void *array,
  function pj_array_find (line 52) | PJ_DEF(pj_status_t) pj_array_find( const void *array,

FILE: deps/pjsip/pjlib/src/pj/compat/sigjmp.c
  function __sigjmp_save (line 23) | int __sigjmp_save(sigjmp_buf env, int savemask)
  function pj_setjmp (line 31) | PJ_DEF(int) pj_setjmp(pj_jmp_buf env)
  function pj_longjmp (line 36) | PJ_DEF(void) pj_longjmp(pj_jmp_buf env, int val)

FILE: deps/pjsip/pjlib/src/pj/compat/string.c
  function strcasecmp (line 24) | PJ_DEF(int) strcasecmp(const char *s1, const char *s2)
  function strncasecmp (line 34) | PJ_DEF(int) strncasecmp(const char *s1, const char *s2, int len)

FILE: deps/pjsip/pjlib/src/pj/compat/string_compat.c
  function strcasecmp (line 29) | PJ_DEF(int) strcasecmp(const char *s1, const char *s2)
  function strncasecmp (line 39) | PJ_DEF(int) strncasecmp(const char *s1, const char *s2, int len)
  function snprintf (line 54) | PJ_DEF(int) snprintf(char *s1, pj_size_t len, const char *s2, ...)
  function vsnprintf (line 68) | PJ_DEF(int) vsnprintf(char *s1, pj_size_t len, const char *s2, va_list arg)

FILE: deps/pjsip/pjlib/src/pj/config.c
  function pj_get_version (line 46) | PJ_DEF(const char*) pj_get_version(void)
  function pj_dump_config (line 51) | PJ_DEF(void) pj_dump_config(void)

FILE: deps/pjsip/pjlib/src/pj/errno.c
  type err_msg_hnd (line 42) | struct err_msg_hnd
  function pjlib_error (line 92) | static int pjlib_error(pj_status_t code, char *buf, pj_size_t size)
  function pj_register_strerror (line 119) | PJ_DEF(pj_status_t) pj_register_strerror( pj_status_t start,
  function pj_errno_clear_handlers (line 163) | void pj_errno_clear_handlers(void)
  function pj_strerror (line 173) | PJ_DEF(pj_str_t) pj_strerror( pj_status_t statcode,
  function invoke_log (line 219) | static void invoke_log(const char *sender, int level, const char *format...
  function pj_perror_imp (line 227) | static void pj_perror_imp(int log_level, const char *sender,
  function pj_perror (line 247) | PJ_DEF(void) pj_perror(int log_level, const char *sender, pj_status_t st...
  function pj_perror_1 (line 256) | PJ_DEF(void) pj_perror_1(const char *sender, pj_status_t status,
  function pj_perror (line 266) | PJ_DEF(void) pj_perror(int log_level, const char *sender, pj_status_t st...
  function pj_perror_2 (line 274) | PJ_DEF(void) pj_perror_2(const char *sender, pj_status_t status,
  function pj_perror_3 (line 285) | PJ_DEF(void) pj_perror_3(const char *sender, pj_status_t status,
  function pj_perror_4 (line 296) | PJ_DEF(void) pj_perror_4(const char *sender, pj_status_t status,
  function pj_perror_5 (line 307) | PJ_DEF(void) pj_perror_5(const char *sender, pj_status_t status,
  function pj_perror_6 (line 318) | PJ_DEF(void) pj_perror_6(const char *sender, pj_status_t status,

FILE: deps/pjsip/pjlib/src/pj/except.c
  function pj_throw_exception_ (line 41) | PJ_DEF(void) pj_throw_exception_(int exception_id)
  function exception_cleanup (line 57) | static void exception_cleanup(void)
  function pj_push_exception_handler_ (line 75) | PJ_DEF(void) pj_push_exception_handler_(struct pj_exception_state_t *rec)
  function pj_pop_exception_handler_ (line 90) | PJ_DEF(void) pj_pop_exception_handler_(struct pj_exception_state_t *rec)
  function pj_exception_id_alloc (line 103) | PJ_DEF(pj_status_t) pj_exception_id_alloc( const char *name,
  function pj_exception_id_free (line 127) | PJ_DEF(pj_status_t) pj_exception_id_free( pj_exception_id_t id )
  function pj_exception_id_name (line 143) | PJ_DEF(const char*) pj_exception_id_name(pj_exception_id_t id)
  function pj_exception_id_alloc (line 163) | PJ_DEF(pj_status_t) pj_exception_id_alloc( const char *name,
  function pj_exception_id_free (line 172) | PJ_DEF(pj_status_t) pj_exception_id_free( pj_exception_id_t id )
  function pj_exception_id_name (line 177) | PJ_DEF(const char*) pj_exception_id_name(pj_exception_id_t id)

FILE: deps/pjsip/pjlib/src/pj/exception_symbian.cpp
  function pj_exception_id_alloc (line 39) | pj_exception_id_alloc( const char *name,
  function pj_exception_id_free (line 63) | pj_exception_id_free( pj_exception_id_t id )
  function pj_exception_id_name (line 79) | pj_exception_id_name(pj_exception_id_t id)
  function pj_exception_id_alloc (line 94) | pj_exception_id_alloc( const char *name,
  function pj_exception_id_free (line 103) | pj_exception_id_free( pj_exception_id_t id )
  function pj_exception_id_name (line 108) | pj_exception_id_name(pj_exception_id_t id)

FILE: deps/pjsip/pjlib/src/pj/fifobuf.c
  function pj_fifobuf_init (line 29) | PJ_DEF(void) pj_fifobuf_init (pj_fifobuf_t *fifobuf, void *buffer, unsig...
  function pj_fifobuf_max_size (line 43) | PJ_DEF(unsigned) pj_fifobuf_max_size (pj_fifobuf_t *fifobuf)
  function pj_fifobuf_alloc (line 59) | PJ_DEF(void*) pj_fifobuf_alloc (pj_fifobuf_t *fifobuf, unsigned size)
  function pj_fifobuf_unalloc (line 116) | PJ_DEF(pj_status_t) pj_fifobuf_unalloc (pj_fifobuf_t *fifobuf, void *buf)
  function pj_fifobuf_free (line 146) | PJ_DEF(pj_status_t) pj_fifobuf_free (pj_fifobuf_t *fifobuf, void *buf)

FILE: deps/pjsip/pjlib/src/pj/file_access_unistd.c
  function pj_file_exists (line 33) | PJ_DEF(pj_bool_t) pj_file_exists(const char *filename)
  function pj_file_size (line 49) | PJ_DEF(pj_off_t) pj_file_size(const char *filename)
  function pj_file_delete (line 65) | PJ_DEF(pj_status_t) pj_file_delete(const char *filename)
  function pj_file_move (line 79) | PJ_DEF(pj_status_t) pj_file_move( const char *oldname, const char *newname)
  function pj_file_getstat (line 93) | PJ_DEF(pj_status_t) pj_file_getstat(const char *filename,

FILE: deps/pjsip/pjlib/src/pj/file_access_win32.c
  function pj_file_exists (line 40) | PJ_DEF(pj_bool_t) pj_file_exists(const char *filename)
  function pj_file_size (line 62) | PJ_DEF(pj_off_t) pj_file_size(const char *filename)
  function pj_file_delete (line 98) | PJ_DEF(pj_status_t) pj_file_delete(const char *filename)
  function pj_file_move (line 114) | PJ_DEF(pj_status_t) pj_file_move( const char *oldname, const char *newname)
  function pj_status_t (line 138) | static pj_status_t file_time_to_time_val(const FILETIME *file_time,
  function pj_file_getstat (line 171) | PJ_DEF(pj_status_t) pj_file_getstat(const char *filename, pj_file_stat *...

FILE: deps/pjsip/pjlib/src/pj/file_io_ansi.c
  function pj_file_open (line 26) | PJ_DEF(pj_status_t) pj_file_open( pj_pool_t *pool,
  function pj_file_close (line 70) | PJ_DEF(pj_status_t) pj_file_close(pj_oshandle_t fd)
  function pj_file_write (line 79) | PJ_DEF(pj_status_t) pj_file_write( pj_oshandle_t fd,
  function pj_file_read (line 96) | PJ_DEF(pj_status_t) pj_file_read( pj_oshandle_t fd,
  function pj_file_setpos (line 121) | PJ_DEF(pj_status_t) pj_file_setpos( pj_oshandle_t fd,
  function pj_file_getpos (line 145) | PJ_DEF(pj_status_t) pj_file_getpos( pj_oshandle_t fd,
  function pj_file_flush (line 160) | PJ_DEF(pj_status_t) pj_file_flush(pj_oshandle_t fd)

FILE: deps/pjsip/pjlib/src/pj/file_io_win32.c
  type pj_file_access (line 40) | enum pj_file_access
  function pj_file_open (line 43) | PJ_DEF(pj_status_t) pj_file_open( pj_pool_t *pool,
  function pj_file_close (line 113) | PJ_DEF(pj_status_t) pj_file_close(pj_oshandle_t fd)
  function pj_file_write (line 120) | PJ_DEF(pj_status_t) pj_file_write( pj_oshandle_t fd,
  function pj_file_read (line 137) | PJ_DEF(pj_status_t) pj_file_read( pj_oshandle_t fd,
  function pj_file_setpos (line 178) | PJ_DEF(pj_status_t) pj_file_setpos( pj_oshandle_t fd,
  function pj_file_getpos (line 209) | PJ_DEF(pj_status_t) pj_file_getpos( pj_oshandle_t fd,
  function pj_file_flush (line 227) | PJ_DEF(pj_status_t) pj_file_flush(pj_oshandle_t fd)

FILE: deps/pjsip/pjlib/src/pj/guid.c
  function pj_generate_unique_string_lower (line 24) | PJ_DEF(pj_str_t*) pj_generate_unique_string_lower(pj_str_t *str)
  function pj_create_unique_string (line 35) | PJ_DEF(void) pj_create_unique_string(pj_pool_t *pool, pj_str_t *str)
  function pj_create_unique_string_lower (line 41) | PJ_DEF(void) pj_create_unique_string_lower(pj_pool_t *pool, pj_str_t *str)

FILE: deps/pjsip/pjlib/src/pj/guid_simple.c
  function pj_GUID_STRING_LENGTH (line 30) | PJ_DEF(unsigned) pj_GUID_STRING_LENGTH()
  function init_guid_chars (line 35) | static void init_guid_chars(void)
  function pj_generate_unique_string (line 52) | PJ_DEF(pj_str_t*) pj_generate_unique_string(pj_str_t *str)

FILE: deps/pjsip/pjlib/src/pj/guid_uuid.c
  function pj_GUID_STRING_LENGTH (line 30) | PJ_DEF(unsigned) pj_GUID_STRING_LENGTH()
  function pj_generate_unique_string (line 35) | PJ_DEF(pj_str_t*) pj_generate_unique_string(pj_str_t *str)

FILE: deps/pjsip/pjlib/src/pj/guid_win32.c
  function pj_GUID_STRING_LENGTH (line 30) | PJ_DEF(unsigned) pj_GUID_STRING_LENGTH()
  function hex2digit (line 35) | PJ_INLINE(void) hex2digit(unsigned value, char *p)
  function guid_to_str (line 43) | static void guid_to_str( GUID *guid, pj_str_t *str )
  function pj_generate_unique_string (line 62) | PJ_DEF(pj_str_t*) pj_generate_unique_string(pj_str_t *str)

FILE: deps/pjsip/pjlib/src/pj/hash.c
  type pj_hash_entry (line 34) | struct pj_hash_entry
  type pj_hash_table_t (line 44) | struct pj_hash_table_t
  function pj_hash_calc (line 53) | PJ_DEF(pj_uint32_t) pj_hash_calc(pj_uint32_t hash, const void *key,
  function pj_hash_calc_tolower (line 73) | PJ_DEF(pj_uint32_t) pj_hash_calc_tolower( pj_uint32_t hval,
  function pj_hash_create (line 104) | PJ_DEF(pj_hash_table_t*) pj_hash_create(pj_pool_t *pool, unsigned size)
  function pj_hash_entry (line 133) | static pj_hash_entry **find_entry( pj_pool_t *pool, pj_hash_table_t *ht,
  function pj_hash_get (line 225) | PJ_DEF(void *) pj_hash_get( pj_hash_table_t *ht,
  function pj_hash_get_lower (line 234) | PJ_DEF(void *) pj_hash_get_lower( pj_hash_table_t *ht,
  function hash_set (line 243) | static void hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
  function pj_hash_set (line 267) | PJ_DEF(void) pj_hash_set( pj_pool_t *pool, pj_hash_table_t *ht,
  function pj_hash_set_lower (line 274) | PJ_DEF(void) pj_hash_set_lower( pj_pool_t *pool, pj_hash_table_t *ht,
  function pj_hash_set_np (line 281) | PJ_DEF(void) pj_hash_set_np( pj_hash_table_t *ht,
  function pj_hash_set_np_lower (line 289) | PJ_DEF(void) pj_hash_set_np_lower( pj_hash_table_t *ht,
  function pj_hash_count (line 298) | PJ_DEF(unsigned) pj_hash_count( pj_hash_table_t *ht )
  function pj_hash_first (line 303) | PJ_DEF(pj_hash_iterator_t*) pj_hash_first( pj_hash_table_t *ht,
  function pj_hash_next (line 319) | PJ_DEF(pj_hash_iterator_t*) pj_hash_next( pj_hash_table_t *ht,
  function pj_hash_this (line 337) | PJ_DEF(void*) pj_hash_this( pj_hash_table_t *ht, pj_hash_iterator_t *it )
  function pj_hash_dump_collision (line 345) | void pj_hash_dump_collision( pj_hash_table_t *ht )

FILE: deps/pjsip/pjlib/src/pj/ioqueue_common_abs.c
  function ioqueue_init (line 33) | static void ioqueue_init( pj_ioqueue_t *ioqueue )
  function pj_status_t (line 40) | static pj_status_t ioqueue_destroy(pj_ioqueue_t *ioqueue)
  function pj_ioqueue_set_lock (line 53) | PJ_DEF(pj_status_t) pj_ioqueue_set_lock( pj_ioqueue_t *ioqueue,
  function pj_status_t (line 69) | static pj_status_t ioqueue_init_key( pj_pool_t *pool,
  function pj_ioqueue_get_user_data (line 137) | PJ_DEF(void*) pj_ioqueue_get_user_data( pj_ioqueue_key_t *key )
  function pj_ioqueue_set_user_data (line 146) | PJ_DEF(pj_status_t) pj_ioqueue_set_user_data( pj_ioqueue_key_t *key,
  function key_has_pending_write (line 159) | PJ_INLINE(int) key_has_pending_write(pj_ioqueue_key_t *key)
  function key_has_pending_read (line 164) | PJ_INLINE(int) key_has_pending_read(pj_ioqueue_key_t *key)
  function key_has_pending_accept (line 169) | PJ_INLINE(int) key_has_pending_accept(pj_ioqueue_key_t *key)
  function key_has_pending_connect (line 179) | PJ_INLINE(int) key_has_pending_connect(pj_ioqueue_key_t *key)
  function pj_bool_t (line 198) | pj_bool_t ioqueue_dispatch_write_event( pj_ioqueue_t *ioqueue,
  function pj_bool_t (line 433) | pj_bool_t ioqueue_dispatch_read_event( pj_ioqueue_t *ioqueue,
  function pj_bool_t (line 629) | pj_bool_t ioqueue_dispatch_exception_event( pj_ioqueue_t *ioqueue,
  function pj_ioqueue_recv (line 703) | PJ_DEF(pj_status_t) pj_ioqueue_recv(  pj_ioqueue_key_t *key,
  function pj_ioqueue_recvfrom (line 777) | PJ_DEF(pj_status_t) pj_ioqueue_recvfrom( pj_ioqueue_key_t *key,
  function pj_ioqueue_send (line 853) | PJ_DEF(pj_status_t) pj_ioqueue_send( pj_ioqueue_key_t *key,
  function pj_ioqueue_sendto (line 968) | PJ_DEF(pj_status_t) pj_ioqueue_sendto( pj_ioqueue_key_t *key,
  function pj_ioqueue_accept (line 1112) | PJ_DEF(pj_status_t) pj_ioqueue_accept( pj_ioqueue_key_t *key,
  function pj_ioqueue_connect (line 1189) | PJ_DEF(pj_status_t) pj_ioqueue_connect( pj_ioqueue_key_t *key,
  function pj_ioqueue_op_key_init (line 1235) | PJ_DEF(void) pj_ioqueue_op_key_init( pj_ioqueue_op_key_t *op_key,
  function pj_ioqueue_is_pending (line 1245) | PJ_DEF(pj_bool_t) pj_ioqueue_is_pending( pj_ioqueue_key_t *key,
  function pj_ioqueue_post_completion (line 1260) | PJ_DEF(pj_status_t) pj_ioqueue_post_completion( pj_ioqueue_key_t *key,
  function pj_ioqueue_set_default_concurrency (line 1321) | PJ_DEF(pj_status_t) pj_ioqueue_set_default_concurrency( pj_ioqueue_t *io...
  function pj_ioqueue_set_concurrency (line 1330) | PJ_DEF(pj_status_t) pj_ioqueue_set_concurrency(pj_ioqueue_key_t *key,
  function pj_ioqueue_lock_key (line 1344) | PJ_DEF(pj_status_t) pj_ioqueue_lock_key(pj_ioqueue_key_t *key)
  function pj_ioqueue_trylock_key (line 1352) | PJ_DEF(pj_status_t) pj_ioqueue_trylock_key(pj_ioqueue_key_t *key)
  function pj_ioqueue_unlock_key (line 1360) | PJ_DEF(pj_status_t) pj_ioqueue_unlock_key(pj_ioqueue_key_t *key)

FILE: deps/pjsip/pjlib/src/pj/ioqueue_common_abs.h
  type generic_operation (line 39) | struct generic_operation
  type read_operation (line 45) | struct read_operation
  type write_operation (line 57) | struct write_operation
  type accept_operation (line 70) | struct accept_operation
  type generic_operation (line 83) | struct generic_operation
  type read_operation (line 84) | struct read_operation
  type write_operation (line 85) | struct write_operation
  type accept_operation (line 87) | struct accept_operation
  type ioqueue_event_type (line 126) | enum ioqueue_event_type
  type ioqueue_event_type (line 136) | enum ioqueue_event_type
  type ioqueue_event_type (line 139) | enum ioqueue_event_type

FILE: deps/pjsip/pjlib/src/pj/ioqueue_dummy.c
  type pj_ioqueue_key_t (line 52) | struct pj_ioqueue_key_t
  type pj_ioqueue_t (line 61) | struct pj_ioqueue_t
  function pj_ioqueue_create (line 65) | PJ_DEF(pj_status_t) pj_ioqueue_create( pj_pool_t *pool,
  function pj_ioqueue_destroy (line 73) | PJ_DEF(pj_status_t) pj_ioqueue_destroy(pj_ioqueue_t *ioque)
  function pj_ioqueue_set_lock (line 78) | PJ_DEF(pj_status_t) pj_ioqueue_set_lock( pj_ioqueue_t *ioque,
  function pj_ioqueue_register_sock (line 85) | PJ_DEF(pj_status_t) pj_ioqueue_register_sock( pj_pool_t *pool,
  function pj_ioqueue_unregister (line 95) | PJ_DEF(pj_status_t) pj_ioqueue_unregister( pj_ioqueue_t *ioque,
  function pj_ioqueue_get_user_data (line 101) | PJ_DEF(void*) pj_ioqueue_get_user_data( pj_ioqueue_key_t *key )
  function pj_ioqueue_poll (line 107) | PJ_DEF(int) pj_ioqueue_poll( pj_ioqueue_t *ioque, const pj_time_val *tim...
  function pj_ioqueue_read (line 112) | PJ_DEF(pj_status_t) pj_ioqueue_read( pj_ioqueue_t *ioque,
  function pj_ioqueue_recv (line 120) | PJ_DEF(pj_status_t) pj_ioqueue_recv( pj_ioqueue_t *ioque,
  function pj_ioqueue_recvfrom (line 129) | PJ_DEF(pj_status_t) pj_ioqueue_recvfrom( pj_ioqueue_t *ioque,
  function pj_ioqueue_write (line 140) | PJ_DEF(pj_status_t) pj_ioqueue_write( pj_ioqueue_t *ioque,
  function pj_ioqueue_send (line 148) | PJ_DEF(pj_status_t) pj_ioqueue_send( pj_ioqueue_t *ioque,
  function pj_ioqueue_sendto (line 157) | PJ_DEF(pj_status_t) pj_ioqueue_sendto( pj_ioqueue_t *ioque,
  function pj_ioqueue_accept (line 172) | PJ_DEF(pj_status_t) pj_ioqueue_accept( pj_ioqueue_t *ioqueue,
  function pj_ioqueue_connect (line 186) | PJ_DEF(pj_status_t) pj_ioqueue_connect( pj_ioqueue_t *ioqueue,

FILE: deps/pjsip/pjlib/src/pj/ioqueue_epoll.c
  type EPOLL_EVENTS (line 75) | enum EPOLL_EVENTS
  function os_epoll_ctl (line 82) | static int os_epoll_ctl(int epfd, int op, int fd, struct epoll_event *ev...
  function os_epoll_wait (line 96) | static int os_epoll_wait(int epfd, struct epoll_event *events,
  function os_read (line 108) | static int os_read(int fd, void *buf, size_t len)
  function os_ioctl (line 125) | static int os_ioctl(int fd, int opt, ioctl_val_type value)
  type pj_ioqueue_key_t (line 157) | struct pj_ioqueue_key_t
  type queue (line 162) | struct queue
  type pj_ioqueue_t (line 171) | struct pj_ioqueue_t
  function pj_ioqueue_name (line 202) | PJ_DEF(const char*) pj_ioqueue_name(void)
  function pj_ioqueue_create (line 216) | PJ_DEF(pj_status_t) pj_ioqueue_create( pj_pool_t *pool,
  function pj_ioqueue_destroy (line 312) | PJ_DEF(pj_status_t) pj_ioqueue_destroy(pj_ioqueue_t *ioqueue)
  function pj_ioqueue_register_sock2 (line 353) | PJ_DEF(pj_status_t) pj_ioqueue_register_sock2(pj_pool_t *pool,
  function pj_ioqueue_register_sock (line 452) | PJ_DEF(pj_status_t) pj_ioqueue_register_sock( pj_pool_t *pool,
  function increment_counter (line 465) | static void increment_counter(pj_ioqueue_key_t *key)
  function decrement_counter (line 477) | static void decrement_counter(pj_ioqueue_key_t *key)
  function pj_ioqueue_unregister (line 503) | PJ_DEF(pj_status_t) pj_ioqueue_unregister( pj_ioqueue_key_t *key)
  function ioqueue_remove_from_set (line 589) | static void ioqueue_remove_from_set( pj_ioqueue_t *ioqueue,
  function ioqueue_add_to_set (line 608) | static void ioqueue_add_to_set( pj_ioqueue_t *ioqueue,
  function scan_closing_keys (line 623) | static void scan_closing_keys(pj_ioqueue_t *ioqueue)
  function pj_ioqueue_poll (line 652) | PJ_DEF(int) pj_ioqueue_poll( pj_ioqueue_t *ioqueue, const pj_time_val *t...

FILE: deps/pjsip/pjlib/src/pj/ioqueue_linux_kernel.c
  type pj_ioqueue_key_t (line 51) | struct pj_ioqueue_key_t
  type pj_ioqueue_t (line 60) | struct pj_ioqueue_t
  function pj_ioqueue_create (line 64) | PJ_DEF(pj_ioqueue_t*) pj_ioqueue_create(pj_pool_t *pool, pj_size_t max_fd)
  function pj_ioqueue_destroy (line 69) | PJ_DEF(pj_status_t) pj_ioqueue_destroy(pj_ioqueue_t *ioque)
  function pj_ioqueue_register (line 74) | PJ_DEF(pj_ioqueue_key_t*) pj_ioqueue_register( pj_pool_t *pool,
  function pj_ioqueue_unregister (line 83) | PJ_DEF(pj_status_t) pj_ioqueue_unregister( pj_ioqueue_t *ioque,
  function pj_ioqueue_get_user_data (line 89) | PJ_DEF(void*) pj_ioqueue_get_user_data( pj_ioqueue_key_t *key )
  function pj_ioqueue_poll (line 95) | PJ_DEF(int) pj_ioqueue_poll( pj_ioqueue_t *ioque, const pj_time_val *tim...
  function pj_ioqueue_read (line 100) | PJ_DEF(int) pj_ioqueue_read( pj_ioqueue_t *ioque,
  function pj_ioqueue_recvfrom (line 108) | PJ_DEF(int) pj_ioqueue_recvfrom( pj_ioqueue_t *ioque,
  function pj_ioqueue_write (line 118) | PJ_DEF(int) pj_ioqueue_write( pj_ioqueue_t *ioque,
  function pj_ioqueue_sendto (line 126) | PJ_DEF(int) pj_ioqueue_sendto( pj_ioqueue_t *ioque,
  function pj_ioqueue_accept (line 140) | PJ_DEF(int) pj_ioqueue_accept( pj_ioqueue_t *ioqueue,
  function pj_ioqueue_connect (line 154) | PJ_DEF(pj_status_t) pj_ioqueue_connect( pj_ioqueue_t *ioqueue,

FILE: deps/pjsip/pjlib/src/pj/ioqueue_select.c
  type pj_ioqueue_key_t (line 100) | struct pj_ioqueue_key_t
  type pj_ioqueue_t (line 108) | struct pj_ioqueue_t
  function pj_ioqueue_name (line 147) | PJ_DEF(const char*) pj_ioqueue_name(void)
  function rescan_fdset (line 157) | static void rescan_fdset(pj_ioqueue_t *ioqueue)
  function rescan_fdset (line 171) | static void rescan_fdset(pj_ioqueue_t *ioqueue)
  function pj_ioqueue_create (line 183) | PJ_DEF(pj_status_t) pj_ioqueue_create( pj_pool_t *pool,
  function pj_ioqueue_destroy (line 276) | PJ_DEF(pj_status_t) pj_ioqueue_destroy(pj_ioqueue_t *ioqueue)
  function pj_ioqueue_register_sock (line 414) | PJ_DEF(pj_status_t) pj_ioqueue_register_sock( pj_pool_t *pool,
  function increment_counter (line 427) | static void increment_counter(pj_ioqueue_key_t *key)
  function decrement_counter (line 439) | static void decrement_counter(pj_ioqueue_key_t *key)
  function pj_ioqueue_unregister (line 467) | PJ_DEF(pj_status_t) pj_ioqueue_unregister( pj_ioqueue_key_t *key)
  function ioqueue_remove_from_set (line 616) | static void ioqueue_remove_from_set( pj_ioqueue_t *ioqueue,
  function ioqueue_add_to_set (line 642) | static void ioqueue_add_to_set( pj_ioqueue_t *ioqueue,
  function scan_closing_keys (line 664) | static void scan_closing_keys(pj_ioqueue_t *ioqueue)
  type flags (line 693) | enum flags {
  function pj_ioqueue_poll (line 841) | PJ_DEF(int) pj_ioqueue_poll( pj_ioqueue_t *ioqueue, const pj_time_val *t...

FILE: deps/pjsip/pjlib/src/pj/ioqueue_symbian.cpp
  class CIoqueueCallback (line 30) | class CIoqueueCallback
    method set_user_data (line 92) | void set_user_data(void *user_data)
    method pj_ioqueue_op_key_t (line 96) | pj_ioqueue_op_key_t *get_op_key() const
    method CPjSocket (line 100) | CPjSocket* get_pj_socket()
    type Type (line 107) | enum Type {
    type Common (line 129) | struct Common
    type Pending_Read (line 134) | struct Pending_Read
    type Pending_Accept (line 141) | struct Pending_Accept
    method CIoqueueCallback (line 154) | CIoqueueCallback(pj_ioqueue_t *ioqueue,
    method ConstructL (line 165) | void ConstructL()
  type pj_ioqueue_t (line 35) | struct pj_ioqueue_t
  class CIoqueueCallback (line 44) | class CIoqueueCallback : public CActive
    method set_user_data (line 92) | void set_user_data(void *user_data)
    method pj_ioqueue_op_key_t (line 96) | pj_ioqueue_op_key_t *get_op_key() const
    method CPjSocket (line 100) | CPjSocket* get_pj_socket()
    type Type (line 107) | enum Type {
    type Common (line 129) | struct Common
    type Pending_Read (line 134) | struct Pending_Read
    type Pending_Accept (line 141) | struct Pending_Accept
    method CIoqueueCallback (line 154) | CIoqueueCallback(pj_ioqueue_t *ioqueue,
    method ConstructL (line 165) | void ConstructL()
  function CIoqueueCallback (line 175) | CIoqueueCallback* CIoqueueCallback::NewL(pj_ioqueue_t *ioqueue,
    method set_user_data (line 92) | void set_user_data(void *user_data)
    method pj_ioqueue_op_key_t (line 96) | pj_ioqueue_op_key_t *get_op_key() const
    method CPjSocket (line 100) | CPjSocket* get_pj_socket()
    type Type (line 107) | enum Type {
    type Common (line 129) | struct Common
    type Pending_Read (line 134) | struct Pending_Read
    type Pending_Accept (line 141) | struct Pending_Accept
    method CIoqueueCallback (line 154) | CIoqueueCallback(pj_ioqueue_t *ioqueue,
    method ConstructL (line 165) | void ConstructL()
  function pj_status_t (line 194) | pj_status_t CIoqueueCallback::StartRead(pj_ioqueue_op_key_t *op_key,
  function pj_status_t (line 236) | pj_status_t CIoqueueCallback::StartAccept(pj_ioqueue_op_key_t *op_key,
  function CPjSocket (line 286) | CPjSocket *CIoqueueCallback::HandleAcceptCompletion()
  type pj_ioqueue_key_t (line 444) | struct pj_ioqueue_key_t
  function pj_ioqueue_name (line 453) | pj_ioqueue_name(void)
  function pj_ioqueue_create (line 462) | pj_ioqueue_create(	pj_pool_t *pool,
  function pj_ioqueue_destroy (line 479) | pj_ioqueue_destroy( pj_ioqueue_t *ioq )
  function pj_ioqueue_set_lock (line 489) | pj_ioqueue_set_lock( pj_ioqueue_t *ioq,
  function pj_ioqueue_set_default_concurrency (line 503) | pj_ioqueue_set_default_concurrency(pj_ioqueue_t *ioqueue,
  function pj_ioqueue_register_sock (line 515) | pj_ioqueue_register_sock( pj_pool_t *pool,
  function pj_ioqueue_register_sock2 (line 531) | pj_ioqueue_register_sock2(pj_pool_t *pool,
  function pj_ioqueue_unregister (line 547) | pj_ioqueue_unregister( pj_ioqueue_key_t *key )
  function pj_ioqueue_get_user_data (line 574) | pj_ioqueue_get_user_data( pj_ioqueue_key_t *key )
  function pj_ioqueue_set_user_data (line 584) | pj_ioqueue_set_user_data( pj_ioqueue_key_t *key,
  function pj_ioqueue_op_key_init (line 599) | pj_ioqueue_op_key_init( pj_ioqueue_op_key_t *op_key,
  function pj_ioqueue_is_pending (line 609) | pj_ioqueue_is_pending( pj_ioqueue_key_t *key,
  function pj_ioqueue_post_completion (line 621) | pj_ioqueue_post_completion( pj_ioqueue_key_t *key,
  function pj_ioqueue_accept (line 637) | pj_ioqueue_accept( pj_ioqueue_key_t *key,
  function pj_ioqueue_connect (line 652) | pj_ioqueue_connect( pj_ioqueue_key_t *key,
  function pj_ioqueue_poll (line 689) | pj_ioqueue_poll( pj_ioqueue_t *ioq,
  function pj_ioqueue_recv (line 704) | pj_ioqueue_recv( pj_ioqueue_key_t *key,
  function pj_ioqueue_recvfrom (line 725) | pj_ioqueue_recvfrom( pj_ioqueue_key_t *key,
  function pj_ioqueue_send (line 762) | pj_ioqueue_send( pj_ioqueue_key_t *key,
  function pj_ioqueue_sendto (line 799) | pj_ioqueue_sendto( pj_ioqueue_key_t *key,
  function pj_ioqueue_set_concurrency (line 845) | pj_ioqueue_set_concurrency(pj_ioqueue_key_t *key,
  function pj_ioqueue_lock_key (line 854) | pj_ioqueue_lock_key(pj_ioqueue_key_t *key)
  function pj_ioqueue_unlock_key (line 861) | pj_ioqueue_unlock_key(pj_ioqueue_key_t *key)

FILE: deps/pjsip/pjlib/src/pj/ioqueue_winnt.c
  type generic_overlapped (line 49) | typedef struct generic_overlapped
  type ioqueue_overlapped (line 58) | typedef struct ioqueue_overlapped
  type ioqueue_accept_rec (line 71) | typedef struct ioqueue_accept_rec
  type handle_type (line 97) | enum handle_type
  type pj_ioqueue_key_t (line 109) | struct pj_ioqueue_key_t
  type pj_ioqueue_t (line 136) | struct pj_ioqueue_t
  function ioqueue_on_accept_complete (line 170) | static void ioqueue_on_accept_complete(pj_ioqueue_key_t *key,
  function erase_connecting_socket (line 222) | static void erase_connecting_socket( pj_ioqueue_t *ioqueue, unsigned pos)
  function check_connecting (line 257) | static int check_connecting( pj_ioqueue_t *ioqueue )
  function pj_ioqueue_name (line 318) | PJ_DEF(const char*) pj_ioqueue_name(void)
  function pj_ioqueue_create (line 326) | PJ_DEF(pj_status_t) pj_ioqueue_create( pj_pool_t *pool,
  function pj_ioqueue_destroy (line 413) | PJ_DEF(pj_status_t) pj_ioqueue_destroy( pj_ioqueue_t *ioqueue )
  function pj_ioqueue_set_default_concurrency (line 467) | PJ_DEF(pj_status_t) pj_ioqueue_set_default_concurrency(pj_ioqueue_t *ioq...
  function pj_ioqueue_set_lock (line 478) | PJ_DEF(pj_status_t) pj_ioqueue_set_lock( pj_ioqueue_t *ioqueue,
  function pj_ioqueue_register_sock (line 497) | PJ_DEF(pj_status_t) pj_ioqueue_register_sock( pj_pool_t *pool,
  function pj_ioqueue_get_user_data (line 588) | PJ_DEF(void*) pj_ioqueue_get_user_data( pj_ioqueue_key_t *key )
  function pj_ioqueue_set_user_data (line 597) | PJ_DEF(pj_status_t) pj_ioqueue_set_user_data( pj_ioqueue_key_t *key,
  function decrement_counter (line 615) | static void decrement_counter(pj_ioqueue_key_t *key)
  function pj_bool_t (line 638) | static pj_bool_t poll_iocp( HANDLE hIocp, DWORD dwTimeout,
  function pj_ioqueue_unregister (line 765) | PJ_DEF(pj_status_t) pj_ioqueue_unregister( pj_ioqueue_key_t *key )
  function scan_closing_keys (line 871) | static void scan_closing_keys(pj_ioqueue_t *ioqueue)
  function pj_ioqueue_poll (line 903) | PJ_DEF(int) pj_ioqueue_poll( pj_ioqueue_t *ioqueue, const pj_time_val *t...
  function pj_ioqueue_recv (line 948) | PJ_DEF(pj_status_t) pj_ioqueue_recv(  pj_ioqueue_key_t *key,
  function pj_ioqueue_recvfrom (line 1027) | PJ_DEF(pj_status_t) pj_ioqueue_recvfrom( pj_ioqueue_key_t *key,
  function pj_ioqueue_send (line 1103) | PJ_DEF(pj_status_t) pj_ioqueue_send(  pj_ioqueue_key_t *key,
  function pj_ioqueue_sendto (line 1118) | PJ_DEF(pj_status_t) pj_ioqueue_sendto( pj_ioqueue_key_t *key,
  function pj_ioqueue_accept (line 1196) | PJ_DEF(pj_status_t) pj_ioqueue_accept( pj_ioqueue_key_t *key,
  function pj_ioqueue_connect (line 1299) | PJ_DEF(pj_status_t) pj_ioqueue_connect( pj_ioqueue_key_t *key,
  function pj_ioqueue_op_key_init (line 1374) | PJ_DEF(void) pj_ioqueue_op_key_init( pj_ioqueue_op_key_t *op_key,
  function pj_ioqueue_is_pending (line 1380) | PJ_DEF(pj_bool_t) pj_ioqueue_is_pending( pj_ioqueue_key_t *key,
  function pj_ioqueue_post_completion (line 1397) | PJ_DEF(pj_status_t) pj_ioqueue_post_completion( pj_ioqueue_key_t *key,
  function pj_ioqueue_set_concurrency (line 1412) | PJ_DEF(pj_status_t) pj_ioqueue_set_concurrency(pj_ioqueue_key_t *key,
  function pj_ioqueue_lock_key (line 1426) | PJ_DEF(pj_status_t) pj_ioqueue_lock_key(pj_ioqueue_key_t *key)
  function pj_ioqueue_unlock_key (line 1435) | PJ_DEF(pj_status_t) pj_ioqueue_unlock_key(pj_ioqueue_key_t *key)

FILE: deps/pjsip/pjlib/src/pj/ip_helper_generic.c
  type sockaddr (line 42) | struct sockaddr
  type sockaddr (line 42) | struct sockaddr
  function pj_status_t (line 59) | static pj_status_t if_enum_by_af(int af,
  function pj_status_t (line 137) | static pj_status_t if_enum_by_af(int af,
  function pj_status_t (line 237) | static pj_status_t if_enum_by_af(int af, unsigned *p_cnt, pj_sockaddr if...
  function pj_status_t (line 330) | static pj_status_t if_enum_by_af(int af,
  function pj_enum_ip_interface (line 353) | PJ_DEF(pj_status_t) pj_enum_ip_interface(int af,
  function pj_enum_ip_route (line 387) | PJ_DEF(pj_status_t) pj_enum_ip_route(unsigned *p_cnt,

FILE: deps/pjsip/pjlib/src/pj/ip_helper_symbian.cpp
  function pj_status_t (line 34) | static pj_status_t rsock_enum_interface(int af,
  function pj_enum_ip_interface (line 106) | pj_enum_ip_interface(int af,
  function pj_enum_ip_route (line 143) | pj_enum_ip_route(unsigned *p_cnt,

FILE: deps/pjsip/pjlib/src/pj/ip_helper_win32.c
  function unload_iphlp_module (line 103) | static void unload_iphlp_module(void)
  function FARPROC (line 113) | static FARPROC GetIpHlpApiProc(gpa_char *lpProcName)
  function DWORD (line 128) | static DWORD MyGetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable,
  function DWORD (line 144) | static DWORD MyGetAdapterAddresses(ULONG Family,
  function DWORD (line 164) | static DWORD MyGetIfEntry(MIB_IFROW *pIfRow)
  function DWORD (line 180) | static DWORD MyGetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable,
  function pj_status_t (line 199) | static pj_status_t enum_ipv4_interface(unsigned *p_cnt,
  function pj_status_t (line 271) | static pj_status_t enum_ipv4_ipv6_interface(int af,
  function pj_enum_ip_interface (line 366) | PJ_DEF(pj_status_t) pj_enum_ip_interface(int af,
  function pj_enum_ip_route (line 385) | PJ_DEF(pj_status_t) pj_enum_ip_route(unsigned *p_cnt,

FILE: deps/pjsip/pjlib/src/pj/lock.c
  type LOCK_OBJ (line 30) | typedef void LOCK_OBJ;
  type pj_lock_t (line 35) | struct pj_lock_t
  type pj_status_t (line 45) | typedef pj_status_t (*FPTR)(LOCK_OBJ*);
  function pj_status_t (line 59) | static pj_status_t create_mutex_lock( pj_pool_t *pool,
  function pj_lock_create_simple_mutex (line 85) | PJ_DEF(pj_status_t) pj_lock_create_simple_mutex( pj_pool_t *pool,
  function pj_lock_create_recursive_mutex (line 92) | PJ_DEF(pj_status_t) pj_lock_create_recursive_mutex( pj_pool_t *pool,
  function pj_status_t (line 103) | static pj_status_t null_op(void *arg)
  function pj_lock_create_null_mutex (line 118) | PJ_DEF(pj_status_t) pj_lock_create_null_mutex( pj_pool_t *pool,
  function pj_lock_create_semaphore (line 146) | PJ_DEF(pj_status_t) pj_lock_create_semaphore(  pj_pool_t *pool,
  function pj_lock_acquire (line 177) | PJ_DEF(pj_status_t) pj_lock_acquire( pj_lock_t *lock )
  function pj_lock_tryacquire (line 183) | PJ_DEF(pj_status_t) pj_lock_tryacquire( pj_lock_t *lock )
  function pj_lock_release (line 189) | PJ_DEF(pj_status_t) pj_lock_release( pj_lock_t *lock )
  function pj_lock_destroy (line 195) | PJ_DEF(pj_status_t) pj_lock_destroy( pj_lock_t *lock )
  type grp_lock_item (line 207) | typedef struct grp_lock_item
  type grp_destroy_callback (line 216) | typedef struct grp_destroy_callback
  type grp_lock_ref (line 225) | typedef struct grp_lock_ref
  type pj_grp_lock_t (line 234) | struct pj_grp_lock_t
  function pj_grp_lock_config_default (line 255) | PJ_DEF(void) pj_grp_lock_config_default(pj_grp_lock_config *cfg)
  function grp_lock_set_owner_thread (line 260) | static void grp_lock_set_owner_thread(pj_grp_lock_t *glock)
  function grp_lock_unset_owner_thread (line 271) | static void grp_lock_unset_owner_thread(pj_grp_lock_t *glock)
  function pj_status_t (line 281) | static pj_status_t grp_lock_acquire(LOCK_OBJ *p)
  function pj_status_t (line 298) | static pj_status_t grp_lock_tryacquire(LOCK_OBJ *p)
  function pj_status_t (line 323) | static pj_status_t grp_lock_release(LOCK_OBJ *p)
  function pj_status_t (line 338) | static pj_status_t grp_lock_add_handler( pj_grp_lock_t *glock,
  function pj_status_t (line 363) | static pj_status_t grp_lock_destroy(LOCK_OBJ *p)
  function pj_grp_lock_create (line 403) | PJ_DEF(pj_status_t) pj_grp_lock_create( pj_pool_t *pool,
  function pj_grp_lock_create_w_handler (line 455) | PJ_DEF(pj_status_t) pj_grp_lock_create_w_handler( pj_pool_t *pool,
  function pj_grp_lock_destroy (line 471) | PJ_DEF(pj_status_t) pj_grp_lock_destroy( pj_grp_lock_t *grp_lock)
  function pj_grp_lock_acquire (line 476) | PJ_DEF(pj_status_t) pj_grp_lock_acquire( pj_grp_lock_t *grp_lock)
  function pj_grp_lock_tryacquire (line 481) | PJ_DEF(pj_status_t) pj_grp_lock_tryacquire( pj_grp_lock_t *grp_lock)
  function pj_grp_lock_release (line 486) | PJ_DEF(pj_status_t) pj_grp_lock_release( pj_grp_lock_t *grp_lock)
  function pj_grp_lock_replace (line 491) | PJ_DEF(pj_status_t) pj_grp_lock_replace( pj_grp_lock_t *old_lock,
  function pj_grp_lock_add_handler (line 515) | PJ_DEF(pj_status_t) pj_grp_lock_add_handler( pj_grp_lock_t *glock,
  function pj_grp_lock_del_handler (line 523) | PJ_DEF(pj_status_t) pj_grp_lock_del_handler( pj_grp_lock_t *glock,
  function pj_status_t (line 545) | static pj_status_t grp_lock_add_ref(pj_grp_lock_t *glock)
  function pj_status_t (line 551) | static pj_status_t grp_lock_dec_ref(pj_grp_lock_t *glock)
  function pj_grp_lock_add_ref_dbg (line 564) | PJ_DEF(pj_status_t) pj_grp_lock_add_ref_dbg(pj_grp_lock_t *glock,
  function pj_grp_lock_dec_ref_dbg (line 597) | PJ_DEF(pj_status_t) pj_grp_lock_dec_ref_dbg(pj_grp_lock_t *glock,
  function pj_grp_lock_add_ref (line 624) | PJ_DEF(pj_status_t) pj_grp_lock_add_ref(pj_grp_lock_t *glock)
  function pj_grp_lock_dec_ref (line 629) | PJ_DEF(pj_status_t) pj_grp_lock_dec_ref(pj_grp_lock_t *glock)
  function pj_grp_lock_get_ref (line 635) | PJ_DEF(int) pj_grp_lock_get_ref(pj_grp_lock_t *glock)
  function pj_grp_lock_chain_lock (line 640) | PJ_DEF(pj_status_t) pj_grp_lock_chain_lock( pj_grp_lock_t *glock,
  function pj_grp_lock_unchain_lock (line 669) | PJ_DEF(pj_status_t) pj_grp_lock_unchain_lock( pj_grp_lock_t *glock,
  function pj_grp_lock_dump (line 695) | PJ_DEF(void) pj_grp_lock_dump(pj_grp_lock_t *grp_lock)

FILE: deps/pjsip/pjlib/src/pj/log.c
  function logging_shutdown (line 88) | static void logging_shutdown(void)
  function log_set_indent (line 104) | static void log_set_indent(int indent)
  function log_get_raw_indent (line 110) | static int log_get_raw_indent(void)
  function log_set_indent (line 116) | static void log_set_indent(int indent)
  function log_get_raw_indent (line 122) | static int log_get_raw_indent(void)
  function log_get_indent (line 128) | static int log_get_indent(void)
  function pj_log_add_indent (line 134) | PJ_DEF(void) pj_log_add_indent(int indent)
  function pj_log_push_indent (line 139) | PJ_DEF(void) pj_log_push_indent(void)
  function pj_log_pop_indent (line 144) | PJ_DEF(void) pj_log_pop_indent(void)
  function pj_status_t (line 149) | pj_status_t pj_log_init(void)
  function pj_log_set_decor (line 173) | PJ_DEF(void) pj_log_set_decor(unsigned decor)
  function pj_log_get_decor (line 178) | PJ_DEF(unsigned) pj_log_get_decor(void)
  function pj_log_set_color (line 183) | PJ_DEF(void) pj_log_set_color(int level, pj_color_t color)
  function pj_log_get_color (line 210) | PJ_DEF(pj_color_t) pj_log_get_color(int level)
  function pj_log_set_level (line 233) | PJ_DEF(void) pj_log_set_level(int level)
  function pj_log_get_level (line 239) | PJ_DEF(int) pj_log_get_level(void)
  function pj_log_set_log_func (line 245) | PJ_DEF(void) pj_log_set_log_func( pj_log_func *func )
  function pj_log_get_log_func (line 250) | PJ_DEF(pj_log_func*) pj_log_get_log_func(void)
  function suspend_logging (line 261) | static void suspend_logging(int *saved_level)
  function resume_logging (line 282) | static void resume_logging(int *saved_level)
  function pj_bool_t (line 302) | static pj_bool_t is_logging_suspended(void)
  function pj_log (line 316) | PJ_DEF(void) pj_log( const char *sender, int level,
  function pj_log_1 (line 491) | PJ_DEF(void) pj_log_1(const char *obj, const char *format, ...)
  function pj_log_2 (line 501) | PJ_DEF(void) pj_log_2(const char *obj, const char *format, ...)
  function pj_log_3 (line 511) | PJ_DEF(void) pj_log_3(const char *obj, const char *format, ...)
  function pj_log_4 (line 521) | PJ_DEF(void) pj_log_4(const char *obj, const char *format, ...)
  function pj_log_5 (line 531) | PJ_DEF(void) pj_log_5(const char *obj, const char *format, ...)
  function pj_log_6 (line 541) | PJ_DEF(void) pj_log_6(const char *obj, const char *format, ...)

FILE: deps/pjsip/pjlib/src/pj/log_writer_printk.c
  function pj_log_write (line 23) | PJ_DEF(void) pj_log_write(int level, const char *buffer, int len)

FILE: deps/pjsip/pjlib/src/pj/log_writer_stdout.c
  function term_set_color (line 25) | static void term_set_color(int level)
  function term_restore_color (line 34) | static void term_restore_color(void)
  function pj_log_write (line 43) | PJ_DEF(void) pj_log_write(int level, const char *buffer, int len)

FILE: deps/pjsip/pjlib/src/pj/log_writer_symbian_console.cpp
  function pj_log_write (line 27) | pj_log_write(int level, const char *buffer, int len)

FILE: deps/pjsip/pjlib/src/pj/os_core_linux_kernel.c
  type pj_thread_t (line 47) | struct pj_thread_t
  type pj_atomic_t (line 86) | struct pj_atomic_t
  type pj_mutex_t (line 91) | struct pj_mutex_t
  type pj_sem_t (line 99) | struct pj_sem_t
  function thread_initialize (line 121) | static void thread_initialize( pj_thread_t *thread )
  function thread_deinitialize (line 153) | static void thread_deinitialize(pj_thread_t *thread)
  function thread_proc (line 179) | static int thread_proc(void *arg)
  function kthread_launcher (line 210) | static void kthread_launcher(void *arg)
  function pj_init (line 216) | PJ_DEF(pj_status_t) pj_init(void)
  function pj_getpid (line 236) | PJ_DEF(pj_uint32_t) pj_getpid(void)
  function pj_thread_register (line 241) | PJ_DEF(pj_status_t) pj_thread_register ( const char *cstr_thread_name,
  function pj_status_t (line 294) | pj_status_t pj_thread_init(void)
  function pj_thread_create (line 306) | PJ_DEF(pj_status_t) pj_thread_create( pj_pool_t *pool, const char *threa...
  function pj_thread_get_name (line 374) | PJ_DEF(const char*) pj_thread_get_name(pj_thread_t *thread)
  function pj_thread_resume (line 379) | PJ_DEF(pj_status_t) pj_thread_resume(pj_thread_t *thread)
  function pj_thread_this (line 385) | PJ_DEF(pj_thread_t*) pj_thread_this(void)
  function pj_thread_join (line 390) | PJ_DEF(pj_status_t) pj_thread_join(pj_thread_t *p)
  function pj_thread_destroy (line 398) | PJ_DEF(pj_status_t) pj_thread_destroy(pj_thread_t *thread)
  function pj_thread_sleep (line 404) | PJ_DEF(pj_status_t) pj_thread_sleep(unsigned msec)
  function pj_atomic_create (line 427) | PJ_DEF(pj_status_t) pj_atomic_create( pj_pool_t *pool,
  function pj_atomic_destroy (line 440) | PJ_DEF(pj_status_t) pj_atomic_destroy( pj_atomic_t *var )
  function pj_atomic_set (line 445) | PJ_DEF(void) pj_atomic_set(pj_atomic_t *var, pj_atomic_value_t value)
  function pj_atomic_get (line 450) | PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *var)
  function pj_atomic_inc (line 455) | PJ_DEF(void) pj_atomic_inc(pj_atomic_t *var)
  function pj_atomic_dec (line 460) | PJ_DEF(void) pj_atomic_dec(pj_atomic_t *var)
  function pj_atomic_add (line 465) | PJ_DEF(void) pj_atomic_add( pj_atomic_t *var, pj_atomic_value_t value )
  function pj_thread_local_alloc (line 472) | PJ_DEF(pj_status_t) pj_thread_local_alloc(long *index)
  function pj_thread_local_free (line 482) | PJ_DEF(void) pj_thread_local_free(long index)
  function pj_thread_local_set (line 487) | PJ_DEF(pj_status_t) pj_thread_local_set(long index, void *value)
  function pj_thread_local_get (line 494) | PJ_DEF(void*) pj_thread_local_get(long index)
  function pj_enter_critical_section (line 502) | PJ_DEF(void) pj_enter_critical_section(void)
  function pj_leave_critical_section (line 507) | PJ_DEF(void) pj_leave_critical_section(void)
  function pj_mutex_create (line 514) | PJ_DEF(pj_status_t) pj_mutex_create( pj_pool_t *pool,
  function pj_mutex_create_simple (line 538) | PJ_DEF(pj_status_t) pj_mutex_create_simple( pj_pool_t *pool, const char ...
  function pj_mutex_create_recursive (line 544) | PJ_DEF(pj_status_t) pj_mutex_create_recursive( pj_pool_t *pool,
  function pj_mutex_lock (line 551) | PJ_DEF(pj_status_t) pj_mutex_lock(pj_mutex_t *mutex)
  function pj_mutex_trylock (line 571) | PJ_DEF(pj_status_t) pj_mutex_trylock(pj_mutex_t *mutex)
  function pj_mutex_unlock (line 597) | PJ_DEF(pj_status_t) pj_mutex_unlock(pj_mutex_t *mutex)
  function pj_mutex_destroy (line 620) | PJ_DEF(pj_status_t) pj_mutex_destroy(pj_mutex_t *mutex)
  function pj_mutex_is_locked (line 628) | PJ_DEF(pj_bool_t) pj_mutex_is_locked(pj_mutex_t *mutex)
  function pj_sem_create (line 640) | PJ_DEF(pj_status_t) pj_sem_create(  pj_pool_t *pool,
  function pj_sem_wait (line 657) | PJ_DEF(pj_status_t) pj_sem_wait(pj_sem_t *sem)
  function pj_sem_trywait (line 665) | PJ_DEF(pj_status_t) pj_sem_trywait(pj_sem_t *sem)
  function pj_sem_post (line 679) | PJ_DEF(pj_status_t) pj_sem_post(pj_sem_t *sem)
  function pj_sem_destroy (line 687) | PJ_DEF(pj_status_t) pj_sem_destroy(pj_sem_t *sem)

FILE: deps/pjsip/pjlib/src/pj/os_core_symbian.cpp
  type pj_thread_t (line 52) | struct pj_thread_t
  type pj_atomic_t (line 67) | struct pj_atomic_t
  type pj_sem_t (line 72) | struct pj_sem_t
  function CPjTimeoutTimer (line 112) | CPjTimeoutTimer *CPjTimeoutTimer::NewL()
  function TInt (line 148) | TInt CPjTimeoutTimer::RunError(TInt aError)
  function PjSymbianOS (line 180) | PjSymbianOS *PjSymbianOS::Instance()
  function TInt (line 188) | TInt PjSymbianOS::Initialize()
  function TInt (line 281) | TInt PjSymbianOS::ConvertToUnicode(TDes16 &aUnicode, const TDesC8 &aFore...
  function TInt (line 292) | TInt PjSymbianOS::ConvertFromUnicode(TDes8 &aForeign, const TDesC16 &aUn...
  function pj_getpid (line 308) | pj_getpid(void)
  function pj_symbianos_set_params (line 315) | pj_symbianos_set_params(pj_symbianos_params *prm)
  function pj_symbianos_set_connection_status (line 324) | pj_symbianos_set_connection_status(pj_bool_t up)
  function pj_init (line 334) | pj_init(void)
  function pj_atexit (line 391) | pj_atexit(pj_exit_callback func)
  function pj_shutdown (line 402) | pj_shutdown(void)
  class CPollTimeoutTimer (line 430) | class CPollTimeoutTimer : public CActive
  function CPollTimeoutTimer (line 465) | CPollTimeoutTimer* CPollTimeoutTimer::NewL(int msec, TInt prio)
  function pj_symbianos_poll (line 488) | pj_symbianos_poll(int priority, int ms_timeout)
  function pj_thread_is_registered (line 519) | pj_thread_is_registered(void)
  function pj_thread_get_prio (line 528) | pj_thread_get_prio(pj_thread_t *thread)
  function pj_thread_set_prio (line 538) | pj_thread_set_prio(pj_thread_t *thread,  int prio)
  function pj_thread_get_prio_min (line 549) | pj_thread_get_prio_min(pj_thread_t *thread)
  function pj_thread_get_prio_max (line 559) | pj_thread_get_prio_max(pj_thread_t *thread)
  function pj_thread_get_os_handle (line 569) | pj_thread_get_os_handle(pj_thread_t *thread)
  function pj_thread_register (line 578) | pj_thread_register ( const char *cstr_thread_name,
  function pj_thread_create (line 592) | pj_thread_create( pj_pool_t *pool,
  function pj_thread_get_name (line 615) | pj_thread_get_name(pj_thread_t *p)
  function pj_thread_resume (line 624) | pj_thread_resume(pj_thread_t *p)
  function pj_thread_this (line 633) | pj_thread_this(void)
  function pj_thread_join (line 641) | pj_thread_join(pj_thread_t *rec)
  function pj_thread_destroy (line 650) | pj_thread_destroy(pj_thread_t *rec)
  function pj_thread_sleep (line 659) | pj_thread_sleep(unsigned msec)
  function pj_thread_local_alloc (line 672) | pj_thread_local_alloc(long *index)
  function pj_thread_local_free (line 694) | pj_thread_local_free(long index)
  function pj_thread_local_set (line 706) | pj_thread_local_set(long index, void *value)
  function pj_thread_local_get (line 720) | pj_thread_local_get(long index)
  function pj_atomic_create (line 735) | pj_atomic_create( pj_pool_t *pool,
  function pj_atomic_destroy (line 748) | pj_atomic_destroy( pj_atomic_t *atomic_var )
  function pj_atomic_set (line 758) | pj_atomic_set( pj_atomic_t *atomic_var,
  function pj_atomic_get (line 768) | pj_atomic_get(pj_atomic_t *atomic_var)
  function pj_atomic_inc (line 777) | pj_atomic_inc(pj_atomic_t *atomic_var)
  function pj_atomic_inc_and_get (line 786) | pj_atomic_inc_and_get(pj_atomic_t *atomic_var)
  function pj_atomic_dec (line 795) | pj_atomic_dec(pj_atomic_t *atomic_var)
  function pj_atomic_dec_and_get (line 804) | pj_atomic_dec_and_get(pj_atomic_t *atomic_var)
  function pj_atomic_add (line 813) | pj_atomic_add( pj_atomic_t *atomic_var,
  function pj_atomic_add_and_get (line 823) | pj_atomic_add_and_get( pj_atomic_t *atomic_var,
  function pj_mutex_create (line 834) | pj_mutex_create( pj_pool_t *pool,
  function pj_mutex_create_simple (line 850) | pj_mutex_create_simple( pj_pool_t *pool,
  function pj_mutex_create_recursive (line 858) | pj_mutex_create_recursive( pj_pool_t *pool,
  function pj_mutex_lock (line 869) | pj_mutex_lock(pj_mutex_t *mutex)
  function pj_mutex_trylock (line 878) | pj_mutex_trylock(pj_mutex_t *mutex)
  function pj_mutex_unlock (line 887) | pj_mutex_unlock(pj_mutex_t *mutex)
  function pj_mutex_destroy (line 896) | pj_mutex_destroy(pj_mutex_t *mutex)
  function pj_enter_critical_section (line 915) | pj_enter_critical_section(void)
  function pj_leave_critical_section (line 924) | pj_leave_critical_section(void)
  function pj_sem_create (line 935) | pj_sem_create( pj_pool_t *pool,
  function pj_sem_wait (line 958) | pj_sem_wait(pj_sem_t *sem)
  function pj_sem_trywait (line 973) | pj_sem_trywait(pj_sem_t *sem)
  function pj_sem_post (line 988) | pj_sem_post(pj_sem_t *sem)
  function pj_sem_destroy (line 998) | pj_sem_destroy(pj_sem_t *sem)
  function pj_thread_check_stack (line 1009) | pj_thread_check_stack(const char *file, int line)
  function pj_thread_get_stack_max_usage (line 1035) | pj_thread_get_stack_max_usage(pj_thread_t *thread)
  function pj_thread_get_stack_info (line 1043) | pj_thread_get_stack_info(pj_thread_t *thread,
  function pj_run_app (line 1059) | pj_run_app(pj_main_func_ptr main_func, int argc, char *argv[],

FILE: deps/pjsip/pjlib/src/pj/os_core_unix.c
  function JNIEXPORT (line 67) | JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved)
  type pj_thread_t (line 75) | struct pj_thread_t
  type pj_atomic_t (line 95) | struct pj_atomic_t
  type pj_mutex_t (line 101) | struct pj_mutex_t
  type pj_sem_t (line 113) | struct pj_sem_t
  type pj_event_t (line 125) | struct pj_event_t
  function pj_init (line 167) | PJ_DEF(pj_status_t) pj_init(void)
  function pj_atexit (line 232) | PJ_DEF(pj_status_t) pj_atexit(void (*func)(void))
  function pj_shutdown (line 244) | PJ_DEF(void) pj_shutdown()
  function pj_getpid (line 287) | PJ_DEF(pj_uint32_t) pj_getpid(void)
  function pj_thread_is_registered (line 296) | PJ_DEF(pj_bool_t) pj_thread_is_registered(void)
  function pj_thread_get_prio (line 310) | PJ_DEF(int) pj_thread_get_prio(pj_thread_t *thread)
  function pj_thread_set_prio (line 332) | PJ_DEF(pj_status_t) pj_thread_set_prio(pj_thread_t *thread,  int prio)
  function pj_thread_get_prio_min (line 362) | PJ_DEF(int) pj_thread_get_prio_min(pj_thread_t *thread)
  function pj_thread_get_prio_max (line 387) | PJ_DEF(int) pj_thread_get_prio_max(pj_thread_t *thread)
  function pj_thread_get_os_handle (line 412) | PJ_DEF(void*) pj_thread_get_os_handle(pj_thread_t *thread)
  function pj_thread_register (line 427) | PJ_DEF(pj_status_t) pj_thread_register ( const char *cstr_thread_name,
  function pj_status_t (line 502) | pj_status_t pj_thread_init(void)
  function pj_thread_create (line 562) | PJ_DEF(pj_status_t) pj_thread_create( pj_pool_t *pool,
  function pj_thread_get_name (line 661) | PJ_DEF(const char*) pj_thread_get_name(pj_thread_t *p)
  function pj_thread_resume (line 678) | PJ_DEF(pj_status_t) pj_thread_resume(pj_thread_t *p)
  function pj_thread_this (line 693) | PJ_DEF(pj_thread_t*) pj_thread_this(void)
  function pj_thread_join (line 720) | PJ_DEF(pj_status_t) pj_thread_join(pj_thread_t *p)
  function pj_thread_destroy (line 754) | PJ_DEF(pj_status_t) pj_thread_destroy(pj_thread_t *p)
  function pj_thread_sleep (line 770) | PJ_DEF(pj_status_t) pj_thread_sleep(unsigned msec)
  function pj_thread_check_stack (line 815) | PJ_DEF(void) pj_thread_check_stack(const char *file, int line)
  function pj_thread_get_stack_max_usage (line 839) | PJ_DEF(pj_uint32_t) pj_thread_get_stack_max_usage(pj_thread_t *thread)
  function pj_thread_get_stack_info (line 847) | PJ_DEF(pj_status_t) pj_thread_get_stack_info( pj_thread_t *thread,
  function pj_atomic_create (line 864) | PJ_DEF(pj_status_t) pj_atomic_create( pj_pool_t *pool,
  function pj_atomic_destroy (line 889) | PJ_DEF(pj_status_t) pj_atomic_destroy( pj_atomic_t *atomic_var )
  function pj_atomic_set (line 902) | PJ_DEF(void) pj_atomic_set(pj_atomic_t *atomic_var, pj_atomic_value_t va...
  function pj_atomic_get (line 918) | PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *atomic_var)
  function pj_atomic_inc_and_get (line 937) | PJ_DEF(pj_atomic_value_t) pj_atomic_inc_and_get(pj_atomic_t *atomic_var)
  function pj_atomic_inc (line 956) | PJ_DEF(void) pj_atomic_inc(pj_atomic_t *atomic_var)
  function pj_atomic_dec_and_get (line 964) | PJ_DEF(pj_atomic_value_t) pj_atomic_dec_and_get(pj_atomic_t *atomic_var)
  function pj_atomic_dec (line 984) | PJ_DEF(void) pj_atomic_dec(pj_atomic_t *atomic_var)
  function pj_atomic_add_and_get (line 992) | PJ_DEF(pj_atomic_value_t) pj_atomic_add_and_get( pj_atomic_t *atomic_var,
  function pj_atomic_add (line 1014) | PJ_DEF(void) pj_atomic_add( pj_atomic_t *atomic_var,
  function pj_thread_local_alloc (line 1024) | PJ_DEF(pj_status_t) pj_thread_local_alloc(long *p_index)
  function pj_thread_local_free (line 1058) | PJ_DEF(void) pj_thread_local_free(long index)
  function pj_thread_local_set (line 1071) | PJ_DEF(pj_status_t) pj_thread_local_set(long index, void *value)
  function pj_thread_local_get (line 1086) | PJ_DEF(void*) pj_thread_local_get(long index)
  function pj_enter_critical_section (line 1100) | PJ_DEF(void) pj_enter_critical_section(void)
  function pj_leave_critical_section (line 1107) | PJ_DEF(void) pj_leave_critical_section(void)
  function pj_status_t (line 1122) | static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name, int t...
  function pj_mutex_create (line 1209) | PJ_DEF(pj_status_t) pj_mutex_create(pj_pool_t *pool,
  function pj_mutex_create_simple (line 1237) | PJ_DEF(pj_status_t) pj_mutex_create_simple( pj_pool_t *pool,
  function pj_mutex_create_recursive (line 1247) | PJ_DEF(pj_status_t) pj_mutex_create_recursive( pj_pool_t *pool,
  function pj_mutex_lock (line 1257) | PJ_DEF(pj_status_t) pj_mutex_lock(pj_mutex_t *mutex)
  function pj_mutex_unlock (line 1309) | PJ_DEF(pj_status_t) pj_mutex_unlock(pj_mutex_t *mutex)
  function pj_mutex_trylock (line 1347) | PJ_DEF(pj_status_t) pj_mutex_trylock(pj_mutex_t *mutex)
  function pj_mutex_destroy (line 1391) | PJ_DEF(pj_status_t) pj_mutex_destroy(pj_mutex_t *mutex)
  function pj_mutex_is_locked (line 1425) | PJ_DEF(pj_bool_t) pj_mutex_is_locked(pj_mutex_t *mutex)
  type pj_rwmutex_t (line 1447) | struct pj_rwmutex_t
  function pj_rwmutex_create (line 1452) | PJ_DEF(pj_status_t) pj_rwmutex_create(pj_pool_t *pool, const char *name,
  function pj_rwmutex_lock_read (line 1475) | PJ_DEF(pj_status_t) pj_rwmutex_lock_read(pj_rwmutex_t *mutex)
  function pj_rwmutex_lock_write (line 1490) | PJ_DEF(pj_status_t) pj_rwmutex_lock_write(pj_rwmutex_t *mutex)
  function pj_rwmutex_unlock_read (line 1505) | PJ_DEF(pj_status_t) pj_rwmutex_unlock_read(pj_rwmutex_t *mutex)
  function pj_rwmutex_unlock_write (line 1514) | PJ_DEF(pj_status_t) pj_rwmutex_unlock_write(pj_rwmutex_t *mutex)
  function pj_rwmutex_destroy (line 1529) | PJ_DEF(pj_status_t) pj_rwmutex_destroy(pj_rwmutex_t *mutex)
  function pj_sem_create (line 1549) | PJ_DEF(pj_status_t) pj_sem_create( pj_pool_t *pool,
  function pj_sem_wait (line 1606) | PJ_DEF(pj_status_t) pj_sem_wait(pj_sem_t *sem)
  function pj_sem_trywait (line 1657) | PJ_DEF(pj_status_t) pj_sem_trywait(pj_sem_t *sem)
  function pj_sem_post (line 1709) | PJ_DEF(pj_status_t) pj_sem_post(pj_sem_t *sem)
  function pj_sem_destroy (line 1746) | PJ_DEF(pj_status_t) pj_sem_destroy(pj_sem_t *sem)
  function pj_event_create (line 1792) | PJ_DEF(pj_status_t) pj_event_create(pj_pool_t *pool, const char *name,
  function event_on_one_release (line 1817) | static void event_on_one_release(pj_event_t *event)
  function pj_event_wait (line 1843) | PJ_DEF(pj_status_t) pj_event_wait(pj_event_t *event)
  function pj_event_trywait (line 1858) | PJ_DEF(pj_status_t) pj_event_trywait(pj_event_t *event)
  function pj_event_set (line 1875) | PJ_DEF(pj_status_t) pj_event_set(pj_event_t *event)
  function pj_event_pulse (line 1891) | PJ_DEF(pj_status_t) pj_event_pulse(pj_event_t *event)
  function pj_event_reset (line 1910) | PJ_DEF(pj_status_t) pj_event_reset(pj_event_t *event)
  function pj_event_destroy (line 1922) | PJ_DEF(pj_status_t) pj_event_destroy(pj_event_t *event)
  function pj_term_set_color (line 1940) | PJ_DEF(pj_status_t) pj_term_set_color(pj_color_t color)
  function pj_term_get_color (line 1998) | PJ_DEF(pj_color_t) pj_term_get_color(void)
  function pj_run_app (line 2009) | PJ_DEF(int) pj_run_app(pj_main_func_ptr main_func, int argc, char *argv[],

FILE: deps/pjsip/pjlib/src/pj/os_core_win32.c
  type pj_thread_t (line 57) | struct pj_thread_t
  type pj_mutex_t (line 78) | struct pj_mutex_t
  type pj_mem_t (line 95) | typedef struct pj_sem_t
  type pj_event_t (line 105) | struct pj_event_t
  type pj_atomic_t (line 114) | struct pj_atomic_t
  function pj_init (line 143) | PJ_DEF(pj_status_t) pj_init(void)
  function pj_atexit (line 214) | PJ_DEF(pj_status_t) pj_atexit(void (*func)(void))
  function pj_shutdown (line 227) | PJ_DEF(void) pj_shutdown()
  function pj_getpid (line 280) | PJ_DEF(pj_uint32_t) pj_getpid(void)
  function pj_thread_is_registered (line 289) | PJ_DEF(pj_bool_t) pj_thread_is_registered(void)
  function pj_thread_get_prio (line 298) | PJ_DEF(int) pj_thread_get_prio(pj_thread_t *thread)
  function pj_thread_set_prio (line 307) | PJ_DEF(pj_status_t) pj_thread_set_prio(pj_thread_t *thread,  int prio)
  function pj_thread_get_prio_min (line 332) | PJ_DEF(int) pj_thread_get_prio_min(pj_thread_t *thread)
  function pj_thread_get_prio_max (line 342) | PJ_DEF(int) pj_thread_get_prio_max(pj_thread_t *thread)
  function pj_thread_get_os_handle (line 352) | PJ_DEF(void*) pj_thread_get_os_handle(pj_thread_t *thread)
  function pj_thread_register (line 367) | PJ_DEF(pj_status_t) pj_thread_register ( const char *cstr_thread_name,
  function pj_status_t (line 424) | pj_status_t pj_thread_init(void)
  function DWORD (line 436) | static DWORD WINAPI thread_main(void *param)
  function pj_thread_create (line 465) | PJ_DEF(pj_status_t) pj_thread_create( pj_pool_t *pool,
  function pj_thread_get_name (line 523) | PJ_DEF(const char*) pj_thread_get_name(pj_thread_t *p)
  function pj_thread_resume (line 536) | PJ_DEF(pj_status_t) pj_thread_resume(pj_thread_t *p)
  function pj_thread_this (line 552) | PJ_DEF(pj_thread_t*) pj_thread_this(void)
  function pj_thread_join (line 574) | PJ_DEF(pj_status_t) pj_thread_join(pj_thread_t *p)
  function pj_thread_destroy (line 600) | PJ_DEF(pj_status_t) pj_thread_destroy(pj_thread_t *p)
  function pj_thread_sleep (line 616) | PJ_DEF(pj_status_t) pj_thread_sleep(unsigned msec)
  function pj_thread_check_stack (line 628) | PJ_DEF(void) pj_thread_check_stack(const char *file, int line)
  function pj_thread_get_stack_max_usage (line 656) | PJ_DEF(pj_uint32_t) pj_thread_get_stack_max_usage(pj_thread_t *thread)
  function pj_thread_get_stack_info (line 664) | PJ_DEF(pj_status_t) pj_thread_get_stack_info( pj_thread_t *thread,
  function pj_atomic_create (line 683) | PJ_DEF(pj_status_t) pj_atomic_create( pj_pool_t *pool,
  function pj_atomic_destroy (line 700) | PJ_DEF(pj_status_t) pj_atomic_destroy( pj_atomic_t *var )
  function pj_atomic_set (line 711) | PJ_DEF(void) pj_atomic_set( pj_atomic_t *atomic_var, pj_atomic_value_t v...
  function pj_atomic_get (line 721) | PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *atomic_var)
  function pj_atomic_inc_and_get (line 732) | PJ_DEF(pj_atomic_value_t) pj_atomic_inc_and_get(pj_atomic_t *atomic_var)
  function pj_atomic_inc (line 746) | PJ_DEF(void) pj_atomic_inc(pj_atomic_t *atomic_var)
  function pj_atomic_dec_and_get (line 754) | PJ_DEF(pj_atomic_value_t) pj_atomic_dec_and_get(pj_atomic_t *atomic_var)
  function pj_atomic_dec (line 768) | PJ_DEF(void) pj_atomic_dec(pj_atomic_t *atomic_var)
  function pj_atomic_add (line 776) | PJ_DEF(void) pj_atomic_add( pj_atomic_t *atomic_var,
  function pj_atomic_add_and_get (line 789) | PJ_DEF(pj_atomic_value_t) pj_atomic_add_and_get( pj_atomic_t *atomic_var,
  function pj_thread_local_alloc (line 805) | PJ_DEF(pj_status_t) pj_thread_local_alloc(long *index)
  function pj_thread_local_free (line 824) | PJ_DEF(void) pj_thread_local_free(long index)
  function pj_thread_local_set (line 833) | PJ_DEF(pj_status_t) pj_thread_local_set(long index, void *value)
  function pj_thread_local_get (line 847) | PJ_DEF(void*) pj_thread_local_get(long index)
  function pj_status_t (line 856) | static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name)
  function pj_mutex_create (line 894) | PJ_DEF(pj_status_t) pj_mutex_create(pj_pool_t *pool,
  function pj_mutex_create_simple (line 921) | PJ_DEF(pj_status_t) pj_mutex_create_simple( pj_pool_t *pool,
  function pj_mutex_create_recursive (line 931) | PJ_DEF(pj_status_t) pj_mutex_create_recursive( pj_pool_t *pool,
  function pj_mutex_lock (line 941) | PJ_DEF(pj_status_t) pj_mutex_lock(pj_mutex_t *mutex)
  function pj_mutex_unlock (line 978) | PJ_DEF(pj_status_t) pj_mutex_unlock(pj_mutex_t *mutex)
  function pj_mutex_trylock (line 1008) | PJ_DEF(pj_status_t) pj_mutex_trylock(pj_mutex_t *mutex)
  function pj_mutex_destroy (line 1043) | PJ_DEF(pj_status_t) pj_mutex_destroy(pj_mutex_t *mutex)
  function pj_mutex_is_locked (line 1062) | PJ_DEF(pj_bool_t) pj_mutex_is_locked(pj_mutex_t *mutex)
  function pj_enter_critical_section (line 1083) | PJ_DEF(void) pj_enter_critical_section(void)
  function pj_leave_critical_section (line 1092) | PJ_DEF(void) pj_leave_critical_section(void)
  function pj_sem_create (line 1103) | PJ_DEF(pj_status_t) pj_sem_create( pj_pool_t *pool,
  function pj_status_t (line 1136) | static pj_status_t pj_sem_wait_for(pj_sem_t *sem, unsigned timeout)
  function pj_sem_wait (line 1166) | PJ_DEF(pj_status_t) pj_sem_wait(pj_sem_t *sem)
  function pj_sem_trywait (line 1177) | PJ_DEF(pj_status_t) pj_sem_trywait(pj_sem_t *sem)
  function pj_sem_post (line 1188) | PJ_DEF(pj_status_t) pj_sem_post(pj_sem_t *sem)
  function pj_sem_destroy (line 1205) | PJ_DEF(pj_status_t) pj_sem_destroy(pj_sem_t *sem)
  function pj_event_create (line 1228) | PJ_DEF(pj_status_t) pj_event_create( pj_pool_t *pool,
  function pj_status_t (line 1266) | static pj_status_t pj_event_wait_for(pj_event_t *event, unsigned timeout)
  function pj_event_wait (line 1296) | PJ_DEF(pj_status_t) pj_event_wait(pj_event_t *event)
  function pj_event_trywait (line 1306) | PJ_DEF(pj_status_t) pj_event_trywait(pj_event_t *event)
  function pj_event_set (line 1316) | PJ_DEF(pj_status_t) pj_event_set(pj_event_t *event)
  function pj_event_pulse (line 1332) | PJ_DEF(pj_status_t) pj_event_pulse(pj_event_t *event)
  function pj_event_reset (line 1348) | PJ_DEF(pj_status_t) pj_event_reset(pj_event_t *event)
  function pj_event_destroy (line 1364) | PJ_DEF(pj_status_t) pj_event_destroy(pj_event_t *event)
  function WORD (line 1385) | static WORD pj_color_to_os_attr(pj_color_t color)
  function pj_color_t (line 1401) | static pj_color_t os_attr_to_pj_color(WORD attr)
  function pj_term_set_color (line 1421) | PJ_DEF(pj_status_t) pj_term_set_color(pj_color_t color)
  function pj_term_get_color (line 1437) | PJ_DEF(pj_color_t) pj_term_get_color(void)
  function pj_run_app (line 1452) | PJ_DEF(int) pj_run_app(pj_main_func_ptr main_func, int argc, char *argv[],

FILE: deps/pjsip/pjlib/src/pj/os_error_linux_kernel.c
  function pj_get_os_error (line 32) | PJ_DEF(pj_status_t) pj_get_os_error(void)
  function pj_set_os_error (line 37) | PJ_DEF(void) pj_set_os_error(pj_status_t code)
  function pj_get_netos_error (line 42) | PJ_DEF(pj_status_t) pj_get_netos_error(void)
  function pj_set_netos_error (line 47) | PJ_DEF(void) pj_set_netos_error(pj_status_t code)
  function platform_strerror (line 58) | int platform_strerror( pj_os_err_type os_errcode,

FILE: deps/pjsip/pjlib/src/pj/os_error_symbian.cpp
  function pj_get_os_error (line 100) | pj_get_os_error(void)
  function pj_set_os_error (line 105) | pj_set_os_error(pj_status_t code)
  function pj_get_netos_error (line 110) | pj_get_netos_error(void)
  function pj_set_netos_error (line 115) | pj_set_netos_error(pj_status_t code)
  function platform_strerror (line 132) | platform_strerror( pj_os_err_type os_errcode,

FILE: deps/pjsip/pjlib/src/pj/os_error_unix.c
  function pj_get_os_error (line 24) | PJ_DEF(pj_status_t) pj_get_os_error(void)
  function pj_set_os_error (line 29) | PJ_DEF(void) pj_set_os_error(pj_status_t code)
  function pj_get_netos_error (line 34) | PJ_DEF(pj_status_t) pj_get_netos_error(void)
  function pj_set_netos_error (line 39) | PJ_DEF(void) pj_set_netos_error(pj_status_t code)
  function PJ_END_DECL (line 48) | PJ_END_DECL

FILE: deps/pjsip/pjlib/src/pj/os_error_win32.c
  function pj_get_os_error (line 116) | PJ_DEF(pj_status_t) pj_get_os_error(void)
  function pj_set_os_error (line 121) | PJ_DEF(void) pj_set_os_error(pj_status_t code)
  function pj_get_netos_error (line 126) | PJ_DEF(pj_status_t) pj_get_netos_error(void)
  function pj_set_netos_error (line 131) | PJ_DEF(void) pj_set_netos_error(pj_status_t code)
  function platform_strerror (line 142) | int platform_strerror( pj_os_err_type os_errcode,

FILE: deps/pjsip/pjlib/src/pj/os_info.c
  function pj_uint32_t (line 100) | static pj_uint32_t parse_version(char *str)
  function pj_get_sys_info (line 125) | PJ_DEF(const pj_sys_info*) pj_get_sys_info(void)

FILE: deps/pjsip/pjlib/src/pj/os_info_symbian.cpp
  function pj_symbianos_get_model_info (line 35) | PJ_END_DECL
  function pj_symbianos_get_platform_info (line 130) | unsigned pj_symbianos_get_platform_info(char *buf, unsigned buf_size)
  function pj_symbianos_get_sdk_info (line 167) | void pj_symbianos_get_sdk_info(pj_str_t *name, pj_uint32_t *ver)

FILE: deps/pjsip/pjlib/src/pj/os_rwmutex.c
  type pj_rwmutex_t (line 36) | struct pj_rwmutex_t
  function pj_rwmutex_create (line 51) | PJ_DEF(pj_status_t) pj_rwmutex_create(pj_pool_t *pool, const char *name,
  function pj_rwmutex_lock_read (line 81) | PJ_DEF(pj_status_t) pj_rwmutex_lock_read(pj_rwmutex_t *mutex)
  function pj_rwmutex_lock_write (line 108) | PJ_DEF(pj_status_t) pj_rwmutex_lock_write(pj_rwmutex_t *mutex)
  function pj_rwmutex_unlock_read (line 118) | PJ_DEF(pj_status_t) pj_rwmutex_unlock_read(pj_rwmutex_t *mutex)
  function pj_rwmutex_unlock_write (line 144) | PJ_DEF(pj_status_t) pj_rwmutex_unlock_write(pj_rwmutex_t *mutex)
  function pj_rwmutex_destroy (line 156) | PJ_DEF(pj_status_t) pj_rwmutex_destroy(pj_rwmutex_t *mutex)

FILE: deps/pjsip/pjlib/src/pj/os_symbian.h
  function class (line 48) | class CPjSocket
  function class (line 129) | class CPjSocketReader : public CActive
  function class (line 188) | class CPjTimeoutTimer : public CActive
  function class (line 215) | class PjSymbianOS

FILE: deps/pjsip/pjlib/src/pj/os_time_bsd.c
  function pj_gettimeofday (line 25) | PJ_DEF(pj_status_t) pj_gettimeofday(pj_time_val *tv)

FILE: deps/pjsip/pjlib/src/pj/os_time_common.c
  function pj_time_decode (line 29) | PJ_DEF(pj_status_t) pj_time_decode(const pj_time_val *tv, pj_parsed_time...
  function pj_time_encode (line 52) | PJ_DEF(pj_status_t) pj_time_encode(const pj_parsed_time *pt, pj_time_val...
  function pj_time_local_to_gmt (line 76) | PJ_DEF(pj_status_t) pj_time_local_to_gmt(pj_time_val *tv)
  function pj_time_gmt_to_local (line 85) | PJ_DEF(pj_status_t) pj_time_gmt_to_local(pj_time_val *tv)

FILE: deps/pjsip/pjlib/src/pj/os_time_linux_kernel.c
  function pj_gettimeofday (line 25) | PJ_DEF(pj_status_t) pj_gettimeofday(pj_time_val *tv)
  function pj_time_decode (line 36) | PJ_DEF(pj_status_t) pj_time_decode(const pj_time_val *tv, pj_parsed_time...

FILE: deps/pjsip/pjlib/src/pj/os_time_unix.c
  function pj_gettimeofday (line 32) | PJ_DEF(pj_status_t) pj_gettimeofday(pj_time_val *p_tv)

FILE: deps/pjsip/pjlib/src/pj/os_time_win32.c
  function pj_status_t (line 73) | static pj_status_t init_start_time(void)
  function pj_status_t (line 105) | static pj_status_t check_system_time(pj_uint64_t ts_elapsed)
  function pj_status_t (line 153) | static pj_status_t get_base_time(void)
  function pj_gettimeofday (line 178) | PJ_DEF(pj_status_t) pj_gettimeofday(pj_time_val *tv)
  function pj_time_decode (line 235) | PJ_DEF(pj_status_t) pj_time_decode(const pj_time_val *tv, pj_parsed_time...
  function pj_time_encode (line 265) | PJ_DEF(pj_status_t) pj_time_encode(const pj_parsed_time *pt, pj_time_val...

FILE: deps/pjsip/pjlib/src/pj/os_timestamp_common.c
  function pj_highprec_t (line 32) | static pj_highprec_t get_elapsed( const pj_timestamp *start,
  function pj_highprec_t (line 50) | static pj_highprec_t elapsed_msec( const pj_timestamp *start,
  function pj_highprec_t (line 81) | static pj_highprec_t elapsed_usec( const pj_timestamp *start,
  function pj_elapsed_nanosec (line 112) | PJ_DEF(pj_uint32_t) pj_elapsed_nanosec( const pj_timestamp *start,
  function pj_elapsed_usec (line 143) | PJ_DEF(pj_uint32_t) pj_elapsed_usec( const pj_timestamp *start,
  function pj_elapsed_msec (line 149) | PJ_DEF(pj_uint32_t) pj_elapsed_msec( const pj_timestamp *start,
  function pj_elapsed_msec64 (line 155) | PJ_DEF(pj_uint64_t) pj_elapsed_msec64(const pj_timestamp *start,
  function pj_elapsed_time (line 161) | PJ_DEF(pj_time_val) pj_elapsed_time( const pj_timestamp *start,
  function pj_elapsed_cycle (line 185) | PJ_DEF(pj_uint32_t) pj_elapsed_cycle( const pj_timestamp *start,
  function pj_gettickcount (line 191) | PJ_DEF(pj_status_t) pj_gettickcount(pj_time_val *tv)

FILE: deps/pjsip/pjlib/src/pj/os_timestamp_linux_kernel.c
  function pj_get_timestamp (line 24) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 31) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 38) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 51) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 58) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 71) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)

FILE: deps/pjsip/pjlib/src/pj/os_timestamp_posix.c
  function rdtsc (line 44) | static __inline__ unsigned long long int rdtsc()
  function get_machine_speed_mhz (line 53) | static int get_machine_speed_mhz()
  function pj_get_timestamp (line 88) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 105) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 132) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 155) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 170) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 185) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 199) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 214) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)

FILE: deps/pjsip/pjlib/src/pj/os_timestamp_win32.c
  function pj_status_t (line 49) | static pj_status_t GetCpuHz(void)
  function __int64 (line 83) | __declspec(naked) __int64 rdtsc()
  function pj_get_timestamp (line 92) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 98) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 130) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_status_t (line 194) | static pj_status_t init_performance_counter(void)
  function pj_get_timestamp_freq (line 226) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)
  function pj_get_timestamp (line 271) | PJ_DEF(pj_status_t) pj_get_timestamp(pj_timestamp *ts)
  function pj_get_timestamp_freq (line 282) | PJ_DEF(pj_status_t) pj_get_timestamp_freq(pj_timestamp *freq)

FILE: deps/pjsip/pjlib/src/pj/pool.c
  function pj_NO_MEMORY_EXCEPTION (line 39) | PJ_DEF(int) pj_NO_MEMORY_EXCEPTION()
  function pj_pool_block (line 49) | static pj_pool_block *pj_pool_create_block( pj_pool_t *pool, pj_size_t s...
  function pj_pool_allocate_find (line 91) | PJ_DEF(void*) pj_pool_allocate_find(pj_pool_t *pool, pj_size_t size)
  function pj_pool_init_int (line 155) | PJ_DEF(void) pj_pool_init_int(  pj_pool_t *pool,
  function pj_pool_create_int (line 181) | PJ_DEF(pj_pool_t*) pj_pool_create_int( pj_pool_factory *f, const char *n...
  function reset_pool (line 236) | static void reset_pool(pj_pool_t *pool)
  function pj_pool_reset (line 270) | PJ_DEF(void) pj_pool_reset(pj_pool_t *pool)
  function pj_pool_destroy_int (line 282) | PJ_DEF(void) pj_pool_destroy_int(pj_pool_t *pool)

FILE: deps/pjsip/pjlib/src/pj/pool_buf.c
  type pj_pool_factory (line 24) | struct pj_pool_factory
  type creation_param (line 26) | struct creation_param
  function pool_buf_cleanup (line 36) | static void pool_buf_cleanup(void)
  function pj_status_t (line 46) | static pj_status_t pool_buf_initialize(void)
  type creation_param (line 56) | struct creation_param
  type creation_param (line 61) | struct creation_param
  function pj_pool_create_on_buf (line 80) | PJ_DEF(pj_pool_t*) pj_pool_create_on_buf(const char *name,

FILE: deps/pjsip/pjlib/src/pj/pool_caching.c
  function pj_caching_pool_init (line 53) | PJ_DEF(void) pj_caching_pool_init( pj_caching_pool *cp,
  function pj_caching_pool_destroy (line 84) | PJ_DEF(void) pj_caching_pool_destroy( pj_caching_pool *cp )
  function pj_pool_t (line 119) | static pj_pool_t* cpool_create_pool(pj_pool_factory *pf,
  function cpool_release_pool (line 203) | static void cpool_release_pool( pj_pool_factory *pf, pj_pool_t *pool)
  function cpool_dump_status (line 270) | static void cpool_dump_status(pj_pool_factory *factory, pj_bool_t detail )
  function pj_bool_t (line 310) | static pj_bool_t cpool_on_block_alloc(pj_pool_factory *f, pj_size_t sz)
  function cpool_on_block_free (line 327) | static void cpool_on_block_free(pj_pool_factory *f, pj_size_t sz)

FILE: deps/pjsip/pjlib/src/pj/pool_dbg.c
  function pj_NO_MEMORY_EXCEPTION (line 50) | PJ_DEF(int) pj_NO_MEMORY_EXCEPTION()
  function pj_pool_create_imp (line 56) | PJ_DEF(pj_pool_t*) pj_pool_create_imp( const char *file, int line,
  function pj_pool_release_imp (line 92) | PJ_DEF(void) pj_pool_release_imp(pj_pool_t *pool)
  function pj_pool_getobjname_imp (line 99) | PJ_DEF(const char*) pj_pool_getobjname_imp(pj_pool_t *pool)
  function pj_pool_reset_imp (line 106) | PJ_DEF(void) pj_pool_reset_imp(pj_pool_t *pool)
  function pj_pool_get_capacity_imp (line 121) | PJ_DEF(pj_size_t) pj_pool_get_capacity_imp(pj_pool_t *pool)
  function pj_pool_get_used_size_imp (line 130) | PJ_DEF(pj_size_t) pj_pool_get_used_size_imp(pj_pool_t *pool)
  function pj_pool_alloc_imp (line 136) | PJ_DEF(void*) pj_pool_alloc_imp( const char *file, int line,
  function pj_pool_calloc_imp (line 168) | PJ_DEF(void*) pj_pool_calloc_imp( const char *file, int line,
  function pj_pool_zalloc_imp (line 183) | PJ_DEF(void*) pj_pool_zalloc_imp( const char *file, int line,

FILE: deps/pjsip/pjlib/src/pj/pool_policy_kmalloc.c
  function default_block_free (line 33) | static void default_block_free(pj_pool_factory *factory,
  function default_pool_callback (line 43) | static void default_pool_callback(pj_pool_t *pool, pj_size_t size)
  function pj_pool_factory_get_default_policy (line 60) | PJ_DEF(const pj_pool_factory_policy*) pj_pool_factory_get_default_policy...

FILE: deps/pjsip/pjlib/src/pj/pool_policy_malloc.c
  function default_block_free (line 61) | static void default_block_free(pj_pool_factory *factory, void *mem,
  function default_pool_callback (line 81) | static void default_pool_callback(pj_pool_t *pool, pj_size_t size)
  function pj_pool_factory_get_default_policy (line 98) | PJ_DEF(const pj_pool_factory_policy*) pj_pool_factory_get_default_policy...

FILE: deps/pjsip/pjlib/src/pj/pool_policy_new.cpp
  function operator_delete (line 58) | static void operator_delete(pj_pool_factory *factory, void *mem, pj_size...
  function default_pool_callback (line 78) | static void default_pool_callback(pj_pool_t *pool, pj_size_t size)
  function pj_pool_factory_get_default_policy (line 95) | pj_pool_factory_get_default_policy(void)

FILE: deps/pjsip/pjlib/src/pj/pool_signature.h
  function apply_signature (line 37) | static void apply_signature(void *p, pj_size_t size)
  function check_pool_signature (line 48) | static void check_pool_signature(void *p, pj_size_t size)

FILE: deps/pjsip/pjlib/src/pj/rand.c
  function pj_srand (line 24) | PJ_DEF(void) pj_srand(unsigned int seed)
  function pj_rand (line 30) | PJ_DEF(int) pj_rand(void)

FILE: deps/pjsip/pjlib/src/pj/rbtree.c
  function left_rotate (line 23) | static void left_rotate( pj_rbtree *tree, pj_rbtree_node *node )
  function right_rotate (line 50) | static void right_rotate( pj_rbtree *tree, pj_rbtree_node *node )
  function insert_fixup (line 78) | static void insert_fixup( pj_rbtree *tree, pj_rbtree_node *node )
  function delete_fixup (line 131) | static void delete_fixup( pj_rbtree *tree, pj_rbtree_node *node )
  function pj_rbtree_init (line 197) | PJ_DEF(void) pj_rbtree_init( pj_rbtree *tree, pj_rbtree_comp *comp )
  function pj_rbtree_first (line 210) | PJ_DEF(pj_rbtree_node*) pj_rbtree_first( pj_rbtree *tree )
  function pj_rbtree_last (line 222) | PJ_DEF(pj_rbtree_node*) pj_rbtree_last( pj_rbtree *tree )
  function pj_rbtree_next (line 234) | PJ_DEF(pj_rbtree_node*) pj_rbtree_next( pj_rbtree *tree,
  function pj_rbtree_prev (line 255) | PJ_DEF(pj_rbtree_node*) pj_rbtree_prev( pj_rbtree *tree,
  function pj_rbtree_insert (line 276) | PJ_DEF(int) pj_rbtree_insert( pj_rbtree *tree,
  function pj_rbtree_find (line 319) | PJ_DEF(pj_rbtree_node*) pj_rbtree_find( pj_rbtree *tree,
  function pj_rbtree_erase (line 336) | PJ_DEF(pj_rbtree_node*) pj_rbtree_erase( pj_rbtree *tree,
  function pj_rbtree_max_height (line 398) | PJ_DEF(unsigned) pj_rbtree_max_height( pj_rbtree *tree,
  function pj_rbtree_min_height (line 413) | PJ_DEF(unsigned) pj_rbtree_min_height( pj_rbtree *tree,

FILE: deps/pjsip/pjlib/src/pj/sock_bsd.c
  function CHECK_ADDR_LEN (line 174) | static void CHECK_ADDR_LEN(const pj_sockaddr *addr, int len)
  function pj_ntohs (line 188) | PJ_DEF(pj_uint16_t) pj_ntohs(pj_uint16_t netshort)
  function pj_htons (line 196) | PJ_DEF(pj_uint16_t) pj_htons(pj_uint16_t hostshort)
  function pj_ntohl (line 204) | PJ_DEF(pj_uint32_t) pj_ntohl(pj_uint32_t netlong)
  function pj_htonl (line 212) | PJ_DEF(pj_uint32_t) pj_htonl(pj_uint32_t hostlong)
  function pj_inet_ntoa (line 221) | PJ_DEF(char*) pj_inet_ntoa(pj_in_addr inaddr)
  function pj_inet_aton (line 237) | PJ_DEF(int) pj_inet_aton(const pj_str_t *cp, struct pj_in_addr *inp)
  function pj_inet_pton (line 270) | PJ_DEF(pj_status_t) pj_inet_pton(int af, const pj_str_t *src, void *dst)
  function pj_inet_ntop (line 359) | PJ_DEF(pj_status_t) pj_inet_ntop(int af, const void *src,
  function pj_gethostname (line 447) | PJ_DEF(const pj_str_t*) pj_gethostname(void)
  function pj_sock_socket (line 470) | PJ_DEF(pj_status_t) pj_sock_socket(int af,
  function pj_sock_socket (line 520) | PJ_DEF(pj_status_t) pj_sock_socket(int af,
  function pj_sock_bind (line 557) | PJ_DEF(pj_status_t) pj_sock_bind( pj_sock_t sock,
  function pj_sock_bind_in (line 577) | PJ_DEF(pj_status_t) pj_sock_bind_in( pj_sock_t sock,
  function pj_sock_close (line 598) | PJ_DEF(pj_status_t) pj_sock_close(pj_sock_t sock)
  function pj_sock_getpeername (line 620) | PJ_DEF(pj_status_t) pj_sock_getpeername( pj_sock_t sock,
  function pj_sock_getsockname (line 636) | PJ_DEF(pj_status_t) pj_sock_getsockname( pj_sock_t sock,
  function pj_sock_send (line 652) | PJ_DEF(pj_status_t) pj_sock_send(pj_sock_t sock,
  function pj_sock_sendto (line 677) | PJ_DEF(pj_status_t) pj_sock_sendto(pj_sock_t sock,
  function pj_sock_recv (line 701) | PJ_DEF(pj_status_t) pj_sock_recv(pj_sock_t sock,
  function pj_sock_recvfrom (line 720) | PJ_DEF(pj_status_t) pj_sock_recvfrom(pj_sock_t sock,
  function pj_sock_getsockopt (line 746) | PJ_DEF(pj_status_t) pj_sock_getsockopt( pj_sock_t sock,
  function pj_sock_setsockopt (line 764) | PJ_DEF(pj_status_t) pj_sock_setsockopt( pj_sock_t sock,
  function pj_sock_setsockopt_params (line 792) | PJ_DEF(pj_status_t) pj_sock_setsockopt_params( pj_sock_t sockfd,
  function pj_sock_connect (line 820) | PJ_DEF(pj_status_t) pj_sock_connect( pj_sock_t sock,
  function pj_sock_shutdown (line 836) | PJ_DEF(pj_status_t) pj_sock_shutdown( pj_sock_t sock,
  function pj_sock_listen (line 849) | PJ_DEF(pj_status_t) pj_sock_listen( pj_sock_t sock,
  function pj_sock_accept (line 862) | PJ_DEF(pj_status_t) pj_sock_accept( pj_sock_t serverfd,

FILE: deps/pjsip/pjlib/src/pj/sock_common.c
  function pj_inet_addr (line 44) | PJ_DEF(pj_in_addr) pj_inet_addr(const pj_str_t *cp)
  function pj_inet_addr2 (line 55) | PJ_DEF(pj_in_addr) pj_inet_addr2(const char *cp)
  function pj_inet_ntop2 (line 64) | PJ_DEF(char*) pj_inet_ntop2( int af, const void *src,
  function pj_sockaddr_print (line 76) | PJ_DEF(char*) pj_sockaddr_print( const pj_sockaddr_t *addr,
  function pj_sockaddr_in_set_str_addr (line 122) | PJ_DEF(pj_status_t) pj_sockaddr_in_set_str_addr( pj_sockaddr_in *addr,
  function pj_sockaddr_set_str_addr (line 157) | PJ_DEF(pj_status_t) pj_sockaddr_set_str_addr(int af,
  function pj_sockaddr_in_init (line 199) | PJ_DEF(pj_status_t) pj_sockaddr_in_init( pj_sockaddr_in *addr,
  function pj_sockaddr_init (line 215) | PJ_DEF(pj_status_t) pj_sockaddr_init(int af,
  function pj_sockaddr_cmp (line 243) | PJ_DEF(int) pj_sockaddr_cmp( const pj_sockaddr_t *addr1,
  function pj_gethostaddr (line 284) | PJ_DEF(pj_in_addr) pj_gethostaddr(void)
  function pj_sockaddr_in_get_port (line 296) | PJ_DEF(pj_uint16_t) pj_sockaddr_in_get_port(const pj_sockaddr_in *addr)
  function pj_sockaddr_get_addr (line 304) | PJ_DEF(void*) pj_sockaddr_get_addr(const pj_sockaddr_t *addr)
  function pj_sockaddr_has_addr (line 320) | PJ_DEF(pj_bool_t) pj_sockaddr_has_addr(const pj_sockaddr_t *addr)
  function pj_sockaddr_get_port (line 358) | PJ_DEF(pj_uint16_t) pj_sockaddr_get_port(const pj_sockaddr_t *addr)
  function pj_sockaddr_get_addr_len (line 372) | PJ_DEF(unsigned) pj_sockaddr_get_addr_len(const pj_sockaddr_t *addr)
  function pj_sockaddr_get_len (line 384) | PJ_DEF(unsigned) pj_sockaddr_get_len(const pj_sockaddr_t *addr)
  function pj_sockaddr_copy_addr (line 396) | PJ_DEF(void) pj_sockaddr_copy_addr( pj_sockaddr *dst,
  function pj_sockaddr_cp (line 408) | PJ_DEF(void) pj_sockaddr_cp(pj_sockaddr_t *dst, const pj_sockaddr_t *src)
  function pj_sockaddr_in_set_port (line 416) | PJ_DEF(void) pj_sockaddr_in_set_port(pj_sockaddr_in *addr,
  function pj_sockaddr_set_port (line 425) | PJ_DEF(pj_status_t) pj_sockaddr_set_port(pj_sockaddr *addr,
  function pj_sockaddr_in_get_addr (line 443) | PJ_DEF(pj_in_addr) pj_sockaddr_in_get_addr(const pj_sockaddr_in *addr)
  function pj_sockaddr_in_set_addr (line 453) | PJ_DEF(void) pj_sockaddr_in_set_addr(pj_sockaddr_in *addr,
  function pj_sockaddr_parse2 (line 462) | PJ_DEF(pj_status_t) pj_sockaddr_parse2(int af, unsigned options,
  function pj_sockaddr_parse (line 626) | PJ_DEF(pj_status_t) pj_sockaddr_parse( int af, unsigned options,
  function pj_gethostip (line 695) | PJ_DEF(pj_status_t) pj_gethostip(int af, pj_sockaddr *addr)
  function pj_getipinterface (line 960) | PJ_DEF(pj_status_t) pj_getipinterface(int af,
  function pj_getdefaultipinterface (line 1029) | PJ_DEF(pj_status_t) pj_getdefaultipinterface(int af, pj_sockaddr *addr)
  function pj_sock_bind_random (line 1046) | PJ_DEF(pj_status_t) pj_sock_bind_random(  pj_sock_t sockfd,
  function pj_sock_setsockopt_sobuf (line 1084) | PJ_DEF(pj_status_t) pj_sock_setsockopt_sobuf( pj_sock_t sockfd,
  function pj_AF_UNSPEC (line 1147) | PJ_DEF(pj_uint16_t) pj_AF_UNSPEC(void)
  function pj_AF_UNIX (line 1152) | PJ_DEF(pj_uint16_t) pj_AF_UNIX(void)
  function pj_AF_INET (line 1157) | PJ_DEF(pj_uint16_t) pj_AF_INET(void)
  function pj_AF_INET6 (line 1162) | PJ_DEF(pj_uint16_t) pj_AF_INET6(void)
  function pj_AF_PACKET (line 1167) | PJ_DEF(pj_uint16_t) pj_AF_PACKET(void)
  function pj_AF_IRDA (line 1172) | PJ_DEF(pj_uint16_t) pj_AF_IRDA(void)
  function pj_SOCK_STREAM (line 1177) | PJ_DEF(int) pj_SOCK_STREAM(void)
  function pj_SOCK_DGRAM (line 1182) | PJ_DEF(int) pj_SOCK_DGRAM(void)
  function pj_SOCK_RAW (line 1187) | PJ_DEF(int) pj_SOCK_RAW(void)
  function pj_SOCK_RDM (line 1192) | PJ_DEF(int) pj_SOCK_RDM(void)
  function pj_SOL_SOCKET (line 1197) | PJ_DEF(pj_uint16_t) pj_SOL_SOCKET(void)
  function pj_SOL_IP (line 1202) | PJ_DEF(pj_uint16_t) pj_SOL_IP(void)
  function pj_SOL_TCP (line 1207) | PJ_DEF(pj_uint16_t) pj_SOL_TCP(void)
  function pj_SOL_UDP (line 1212) | PJ_DEF(pj_uint16_t) pj_SOL_UDP(void)
  function pj_SOL_IPV6 (line 1217) | PJ_DEF(pj_uint16_t) pj_SOL_IPV6(void)
  function pj_IP_TOS (line 1222) | PJ_DEF(int) pj_IP_TOS(void)
  function pj_IPTOS_LOWDELAY (line 1227) | PJ_DEF(int) pj_IPTOS_LOWDELAY(void)
  function pj_IPTOS_THROUGHPUT (line 1232) | PJ_DEF(int) pj_IPTOS_THROUGHPUT(void)
  function pj_IPTOS_RELIABILITY (line 1237) | PJ_DEF(int) pj_IPTOS_RELIABILITY(void)
  function pj_IPTOS_MINCOST (line 1242) | PJ_DEF(int) pj_IPTOS_MINCOST(void)
  function pj_SO_TYPE (line 1247) | PJ_DEF(pj_uint16_t) pj_SO_TYPE(void)
  function pj_SO_RCVBUF (line 1252) | PJ_DEF(pj_uint16_t) pj_SO_RCVBUF(void)
  function pj_SO_SNDBUF (line 1257) | PJ_DEF(pj_uint16_t) pj_SO_SNDBUF(void)
  function pj_TCP_NODELAY (line 1262) | PJ_DEF(pj_uint16_t) pj_TCP_NODELAY(void)
  function pj_SO_REUSEADDR (line 1267) | PJ_DEF(pj_uint16_t) pj_SO_REUSEADDR(void)
  function pj_SO_NOSIGPIPE (line 1272) | PJ_DEF(pj_uint16_t) pj_SO_NOSIGPIPE(void)
  function pj_SO_PRIORITY (line 1277) | PJ_DEF(pj_uint16_t) pj_SO_PRIORITY(void)
  function pj_IP_MULTICAST_IF (line 1282) | PJ_DEF(pj_uint16_t) pj_IP_MULTICAST_IF(void)
  function pj_IP_MULTICAST_TTL (line 1287) | PJ_DEF(pj_uint16_t) pj_IP_MULTICAST_TTL(void)
  function pj_IP_MULTICAST_LOOP (line 1292) | PJ_DEF(pj_uint16_t) pj_IP_MULTICAST_LOOP(void)
  function pj_IP_ADD_MEMBERSHIP (line 1297) | PJ_DEF(pj_uint16_t) pj_IP_ADD_MEMBERSHIP(void)
  function pj_IP_DROP_MEMBERSHIP (line 1302) | PJ_DEF(pj_uint16_t) pj_IP_DROP_MEMBERSHIP(void)
  function pj_MSG_OOB (line 1307) | PJ_DEF(int) pj_MSG_OOB(void)
  function pj_MSG_PEEK (line 1312) | PJ_DEF(int) pj_MSG_PEEK(void)
  function pj_MSG_DONTROUTE (line 1317) | PJ_DEF(int) pj_MSG_DONTROUTE(void)

FILE: deps/pjsip/pjlib/src/pj/sock_linux_kernel.c
  function pj_ntohs (line 101) | PJ_DEF(pj_uint16_t) pj_ntohs(pj_uint16_t netshort)
  function pj_htons (line 109) | PJ_DEF(pj_uint16_t) pj_htons(pj_uint16_t hostshort)
  function pj_ntohl (line 117) | PJ_DEF(pj_uint32_t) pj_ntohl(pj_uint32_t netlong)
  function pj_htonl (line 125) | PJ_DEF(pj_uint32_t) pj_htonl(pj_uint32_t hostlong)
  function pj_inet_ntoa (line 134) | PJ_DEF(char*) pj_inet_ntoa(pj_in_addr in)
  function pj_inet_aton (line 152) | PJ_DEF(int) pj_inet_aton(const pj_str_t *ccp, struct pj_in_addr *addr)
  function pj_inet_addr (line 254) | PJ_DEF(pj_in_addr) pj_inet_addr(const pj_str_t *cp)
  function pj_sockaddr_in_set_str_addr (line 268) | PJ_DEF(pj_status_t) pj_sockaddr_in_set_str_addr( pj_sockaddr_in *addr,
  function pj_sockaddr_in_init (line 302) | PJ_DEF(pj_status_t) pj_sockaddr_in_init( pj_sockaddr_in *addr,
  function pj_gethostname (line 317) | PJ_DEF(const pj_str_t*) pj_gethostname(void)
  function pj_gethostaddr (line 342) | PJ_DEF(pj_in_addr) pj_gethostaddr(void)
  function pj_sock_socket (line 355) | PJ_DEF(pj_status_t) pj_sock_socket(int af, int type, int proto,
  function pj_sock_bind (line 382) | PJ_DEF(pj_status_t) pj_sock_bind( pj_sock_t sockfd,
  function pj_sock_bind_in (line 411) | PJ_DEF(pj_status_t) pj_sock_bind_in( pj_sock_t sockfd,
  function pj_sock_close (line 429) | PJ_DEF(pj_status_t) pj_sock_close(pj_sock_t sockfd)
  function pj_sock_getpeername (line 444) | PJ_DEF(pj_status_t) pj_sock_getpeername( pj_sock_t sockfd,
  function pj_sock_getsockname (line 469) | PJ_DEF(pj_status_t) pj_sock_getsockname( pj_sock_t sockfd,
  function pj_sock_send (line 494) | PJ_DEF(pj_status_t) pj_sock_send( pj_sock_t sockfd,
  function pj_sock_sendto (line 506) | PJ_DEF(pj_status_t) pj_sock_sendto( pj_sock_t sockfd,
  function pj_sock_recv (line 537) | PJ_DEF(pj_status_t) pj_sock_recv( pj_sock_t sockfd,
  function pj_sock_recvfrom (line 548) | PJ_DEF(pj_status_t) pj_sock_recvfrom( pj_sock_t sockfd,
  function pj_sock_getsockopt (line 578) | PJ_DEF(pj_status_t) pj_sock_getsockopt( pj_sock_t sockfd,
  function pj_sock_setsockopt (line 605) | PJ_DEF(pj_status_t) pj_sock_setsockopt( pj_sock_t sockfd,
  function pj_sock_setsockopt_params (line 633) | PJ_DEF(pj_status_t) pj_sock_setsockopt_params( pj_sock_t sockfd,
  function pj_sock_shutdown (line 662) | PJ_DEF(pj_status_t) pj_sock_shutdown( pj_sock_t sockfd,
  function pj_sock_listen (line 680) | PJ_DEF(pj_status_t) pj_sock_listen( pj_sock_t sockfd,
  function pj_sock_connect (line 698) | PJ_DEF(pj_status_t) pj_sock_connect( pj_sock_t sockfd,
  function pj_sock_accept (line 723) | PJ_DEF(pj_status_t) pj_sock_accept( pj_sock_t sockfd,

FILE: deps/pjsip/pjlib/src/pj/sock_qos_bsd.c
  function pj_sock_set_qos_params (line 29) | PJ_DEF(pj_status_t) pj_sock_set_qos_params(pj_sock_t sock,
  function pj_sock_set_qos_type (line 68) | PJ_DEF(pj_status_t) pj_sock_set_qos_type(pj_sock_t sock,
  function pj_sock_get_qos_params (line 82) | PJ_DEF(pj_status_t) pj_sock_get_qos_params(pj_sock_t sock,
  function pj_sock_get_qos_type (line 118) | PJ_DEF(pj_status_t) pj_sock_get_qos_type(pj_sock_t sock,

FILE: deps/pjsip/pjlib/src/pj/sock_qos_common.c
  function pj_qos_get_params (line 42) | PJ_DEF(pj_status_t) pj_qos_get_params(pj_qos_type type,
  function pj_qos_get_type (line 51) | PJ_DEF(pj_status_t) pj_qos_get_type( const pj_qos_params *param,
  function pj_sock_apply_qos (line 94) | PJ_DEF(pj_status_t) pj_sock_apply_qos( pj_sock_t sock,
  function pj_sock_apply_qos2 (line 135) | PJ_DEF(pj_status_t) pj_sock_apply_qos2( pj_sock_t sock,

FILE: deps/pjsip/pjlib/src/pj/sock_qos_dummy.c
  function pj_sock_set_qos_params (line 31) | PJ_DEF(pj_status_t) pj_sock_set_qos_params(pj_sock_t sock,
  function pj_sock_set_qos_type (line 42) | PJ_DEF(pj_status_t) pj_sock_set_qos_type(pj_sock_t sock,
  function pj_sock_get_qos_params (line 54) | PJ_DEF(pj_status_t) pj_sock_get_qos_params(pj_sock_t sock,
  function pj_sock_get_qos_type (line 65) | PJ_DEF(pj_status_t) pj_sock_get_qos_type(pj_sock_t sock,

FILE: deps/pjsip/pjlib/src/pj/sock_qos_symbian.cpp
  function pj_sock_set_qos_params (line 22) | pj_sock_set_qos_params(pj_sock_t sock,
  function pj_sock_set_qos_type (line 48) | pj_sock_set_qos_type(pj_sock_t sock,
  function pj_sock_get_qos_params (line 62) | pj_sock_get_qos_params(pj_sock_t sock,
  function pj_sock_get_qos_type (line 83) | pj_sock_get_qos_type(pj_sock_t sock,

FILE: deps/pjsip/pjlib/src/pj/sock_qos_wm.c
  function pj_sock_set_qos_params (line 43) | PJ_DEF(pj_status_t) pj_sock_set_qos_params(pj_sock_t sock,
  function pj_sock_set_qos_type (line 54) | PJ_DEF(pj_status_t) pj_sock_set_qos_type(pj_sock_t sock,
  function pj_sock_get_qos_params (line 67) | PJ_DEF(pj_status_t) pj_sock_get_qos_params(pj_sock_t sock,
  function pj_sock_get_qos_type (line 78) | PJ_DEF(pj_status_t) pj_sock_get_qos_type(pj_sock_t sock,

FILE: deps/pjsip/pjlib/src/pj/sock_select.c
  function PJ_FD_ZERO (line 43) | PJ_DEF(void) PJ_FD_ZERO(pj_fd_set_t *fdsetp)
  function PJ_FD_SET (line 53) | PJ_DEF(void) PJ_FD_SET(pj_sock_t fd, pj_fd_set_t *fdsetp)
  function PJ_FD_CLR (line 64) | PJ_DEF(void) PJ_FD_CLR(pj_sock_t fd, pj_fd_set_t *fdsetp)
  function PJ_FD_ISSET (line 75) | PJ_DEF(pj_bool_t) PJ_FD_ISSET(pj_sock_t fd, const pj_fd_set_t *fdsetp)
  function PJ_FD_COUNT (line 84) | PJ_DEF(pj_size_t) PJ_FD_COUNT(const pj_fd_set_t *fdsetp)
  function pj_sock_select (line 89) | PJ_DEF(int) pj_sock_select( int n,

FILE: deps/pjsip/pjlib/src/pj/sock_select_symbian.cpp
  type symbian_fd_set (line 27) | struct symbian_fd_set
  function PJ_FD_ZERO (line 34) | PJ_FD_ZERO(pj_fd_set_t *fdsetp)
  function PJ_FD_SET (line 41) | PJ_FD_SET(pj_sock_t fd, pj_fd_set_t *fdsetp)
  function PJ_FD_CLR (line 50) | PJ_FD_CLR(pj_sock_t fd, pj_fd_set_t *fdsetp)
  function PJ_FD_ISSET (line 65) | PJ_FD_ISSET(pj_sock_t fd, const pj_fd_set_t *fdsetp)
  function PJ_FD_COUNT (line 79) | PJ_FD_COUNT(const pj_fd_set_t *fdsetp)
  function pj_sock_select (line 86) | pj_sock_select( int n,

FILE: deps/pjsip/pjlib/src/pj/sock_symbian.cpp
  function CPjSocketReader (line 101) | CPjSocketReader *CPjSocket::CreateReader(unsigned max_len)
  function CPjSocketReader (line 141) | CPjSocketReader *CPjSocketReader::NewL(CPjSocket &sock, unsigned max_len)
  function pj_ntohs (line 235) | pj_ntohs(pj_uint16_t netshort)
  function pj_htons (line 247) | pj_htons(pj_uint16_t hostshort)
  function pj_ntohl (line 259) | pj_ntohl(pj_uint32_t netlong)
  function pj_htonl (line 271) | pj_htonl(pj_uint32_t hostlong)
  function pj_inet_ntoa (line 284) | pj_inet_ntoa(pj_in_addr inaddr)
  function pj_inet_aton (line 302) | pj_inet_aton(const pj_str_t *cp, struct pj_in_addr *inp)
  function pj_inet_pton (line 346) | pj_inet_pton(int af, const pj_str_t *src, void *dst)
  function pj_inet_ntop (line 402) | pj_inet_ntop(int af, const void *src,
  function pj_gethostname (line 454) | pj_gethostname(void)
  function pj_sock_socket (line 482) | pj_sock_socket(int af,
  function pj_sock_bind (line 530) | pj_sock_bind( pj_sock_t sock,
  function pj_sock_bind_in (line 561) | pj_sock_bind_in( pj_sock_t sock,
  function pj_sock_close (line 581) | pj_sock_close(pj_sock_t sock)
  function pj_sock_getpeername (line 598) | pj_sock_getpeername( pj_sock_t sock,
  function pj_sock_getsockname (line 622) | pj_sock_getsockname( pj_sock_t sock,
  function pj_sock_send (line 643) | pj_sock_send(pj_sock_t sock,
  function pj_sock_sendto (line 678) | pj_sock_sendto(pj_sock_t sock,
  function pj_sock_recv (line 722) | pj_sock_recv(pj_sock_t sock,
  function pj_sock_recvfrom (line 783) | pj_sock_recvfrom(pj_sock_t sock,
  function pj_sock_getsockopt (line 848) | pj_sock_getsockopt( pj_sock_t sock,
  function pj_sock_setsockopt (line 866) | pj_sock_setsockopt( pj_sock_t sock,
  function pj_sock_connect (line 884) | pj_sock_connect( pj_sock_t sock,
  function pj_sock_shutdown (line 925) | pj_sock_shutdown( pj_sock_t sock,
  function pj_sock_listen (line 958) | pj_sock_listen( pj_sock_t sock,
  function pj_sock_accept (line 980) | pj_sock_accept( pj_sock_t serverfd,

FILE: deps/pjsip/pjlib/src/pj/ssl_sock_common.c
  function pj_ssl_sock_param_default (line 28) | PJ_DEF(void) pj_ssl_sock_param_default(pj_ssl_sock_param *param)
  function pj_ssl_sock_param_copy (line 55) | PJ_DEF(void) pj_ssl_sock_param_copy( pj_pool_t *pool,
  function pj_ssl_cert_get_verify_status_strings (line 77) | PJ_DEF(pj_status_t) pj_ssl_cert_get_verify_status_strings(

FILE: deps/pjsip/pjlib/src/pj/ssl_sock_dump.c
  function pj_ssl_cert_info_dump (line 37) | PJ_DEF(pj_ssize_t) pj_ssl_cert_info_dump(const pj_ssl_cert_info *ci,

FILE: deps/pjsip/pjlib/src/pj/ssl_sock_ossl.c
  type ssl_state (line 86) | enum ssl_state {
  type timer_id (line 95) | enum timer_id
  type read_data_t (line 105) | typedef struct read_data_t
  type write_data_t (line 128) | typedef struct write_data_t {
  type send_buf_t (line 145) | typedef struct send_buf_t {
  type pj_ssl_sock_t (line 155) | struct pj_ssl_sock_t
  type pj_ssl_cert_t (line 205) | struct pj_ssl_cert_t
  function pj_status_t (line 237) | static pj_status_t STATUS_FROM_SSL_ERR(pj_ssl_sock_t *ssock,
  function pj_status_t (line 260) | static pj_status_t GET_SSL_STATUS(pj_ssl_sock_t *ssock)
  function pj_str_t (line 269) | static pj_str_t ssl_strerror(pj_status_t status,
  type openssl_ciphers_t (line 312) | struct openssl_ciphers_t {
  function pj_status_t (line 322) | static pj_status_t init_openssl(void)
  function shutdown_openssl (line 409) | static void shutdown_openssl(void)
  function password_cb (line 416) | static int password_cb(char *buf, int num, int rwflag, void *user_data)
  function verify_cb (line 431) | static int verify_cb(int preverify_ok, X509_STORE_CTX *x509_ctx)
  function pj_status_t (line 530) | static pj_status_t create_ssl(pj_ssl_sock_t *ssock)
  function destroy_ssl (line 821) | static void destroy_ssl(pj_ssl_sock_t *ssock)
  function reset_ssl_sock_state (line 844) | static void reset_ssl_sock_state(pj_ssl_sock_t *ssock)
  function pj_status_t (line 875) | static pj_status_t set_cipher_list(pj_ssl_sock_t *ssock)
  function pj_bool_t (line 944) | static pj_bool_t parse_ossl_asn1_time(pj_time_val *tv, pj_bool_t *gmt,
  function get_cn_from_gen_name (line 1001) | static void get_cn_from_gen_name(const pj_str_t *gen_name, pj_str_t *cn)
  function get_cert_info (line 1024) | static void get_cert_info(pj_pool_t *pool, pj_ssl_cert_info *ci, X509 *x,
  function update_certs_info (line 1162) | static void update_certs_info(pj_ssl_sock_t *ssock)
  function pj_bool_t (line 1194) | static pj_bool_t on_handshake_complete(pj_ssl_sock_t *ssock,
  function write_data_t (line 1280) | static write_data_t* alloc_send_data(pj_ssl_sock_t *ssock, pj_size_t len)
  function free_send_data (line 1344) | static void free_send_data(pj_ssl_sock_t *ssock, write_data_t *wdata)
  function pj_status_t (line 1397) | pj_status_t pj_ssl_sock_ossl_test_send_buf(pj_pool_t *pool)
  function pj_status_t (line 1459) | static pj_status_t flush_write_bio(pj_ssl_sock_t *ssock,
  function on_timer (line 1538) | static void on_timer(pj_timer_heap_t *th, struct pj_timer_entry *te)
  function pj_status_t (line 1565) | static pj_status_t do_handshake(pj_ssl_sock_t *ssock)
  function pj_bool_t (line 1609) | static pj_bool_t asock_on_data_read (pj_activesock_t *asock,
  function pj_bool_t (line 1757) | static pj_bool_t asock_on_data_sent (pj_activesock_t *asock,
  function pj_bool_t (line 1805) | static pj_bool_t asock_on_accept_complete (pj_activesock_t *asock,
  function pj_bool_t (line 1971) | static pj_bool_t asock_on_connect_complete (pj_activesock_t *asock,
  function pj_ssl_cert_load_from_files (line 2060) | PJ_DEF(pj_status_t) pj_ssl_cert_load_from_files (pj_pool_t *pool,
  function pj_ssl_cert_load_from_files2 (line 2071) | PJ_DEF(pj_status_t) pj_ssl_cert_load_from_files2(pj_pool_t *pool,
  function pj_ssl_sock_set_certificate (line 2103) | PJ_DEF(pj_status_t) pj_ssl_sock_set_certificate(
  function pj_ssl_cipher_get_availables (line 2127) | PJ_DEF(pj_status_t) pj_ssl_cipher_get_availables(pj_ssl_cipher ciphers[],
  function pj_ssl_cipher_name (line 2154) | PJ_DEF(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher)
  function pj_ssl_cipher_id (line 2172) | PJ_DEF(pj_ssl_cipher) pj_ssl_cipher_id(const char *cipher_name)
  function pj_ssl_cipher_is_supported (line 2190) | PJ_DEF(pj_bool_t) pj_ssl_cipher_is_supported(pj_ssl_cipher cipher)
  function pj_ssl_sock_create (line 2211) | PJ_DEF(pj_status_t) pj_ssl_sock_create (pj_pool_t *pool,
  function pj_ssl_sock_close (line 2262) | PJ_DEF(pj_status_t) pj_ssl_sock_close(pj_ssl_sock_t *ssock)
  function pj_ssl_sock_set_user_data (line 2292) | PJ_DEF(pj_status_t) pj_ssl_sock_set_user_data(pj_ssl_sock_t *ssock,
  function pj_ssl_sock_get_user_data (line 2306) | PJ_DEF(void*) pj_ssl_sock_get_user_data(pj_ssl_sock_t *ssock)
  function pj_ssl_sock_get_info (line 2317) | PJ_DEF(pj_status_t) pj_ssl_sock_get_info (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_start_read (line 2362) | PJ_DEF(pj_status_t) pj_ssl_sock_start_read (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_start_read2 (line 2392) | PJ_DEF(pj_status_t) pj_ssl_sock_start_read2 (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_start_recvfrom (line 2434) | PJ_DEF(pj_status_t) pj_ssl_sock_start_recvfrom (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_start_recvfrom2 (line 2453) | PJ_DEF(pj_status_t) pj_ssl_sock_start_recvfrom2 (pj_ssl_sock_t *ssock,
  function pj_status_t (line 2469) | static pj_status_t ssl_write(pj_ssl_sock_t *ssock,
  function pj_status_t (line 2517) | static pj_status_t flush_delayed_send(pj_ssl_sock_t *ssock)
  function pj_status_t (line 2565) | static pj_status_t delay_send (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_send (line 2599) | PJ_DEF(pj_status_t) pj_ssl_sock_send (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_sendto (line 2648) | PJ_DEF(pj_status_t) pj_ssl_sock_sendto (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_start_accept (line 2671) | PJ_DEF(pj_status_t) pj_ssl_sock_start_accept (pj_ssl_sock_t *ssock,
  function pj_ssl_sock_start_accept2 (line 2685) | PJ_DEF(pj_status_t)
  function pj_ssl_sock_start_connect (line 2799) | PJ_DEF(pj_status_t) pj_ssl_sock_start_connect( pj_ssl_sock_t *ssock,
  function pj_ssl_sock_renegotiate (line 2910) | PJ_DEF(pj_status_t) pj_ssl_sock_renegotiate(pj_ssl_sock_t *ssock)

FILE: deps/pjsip/pjlib/src/pj/ssl_sock_symbian.cpp
  type cipher_name_t (line 37) | struct cipher_name_t {
  class CPjSSLSocketReader (line 136) | class CPjSSLSocketReader : public CActive
    method CPjSSLSocketReader (line 139) | static CPjSSLSocketReader *NewL(CSecureSocket &sock)
    method Read (line 154) | int Read(CPjSSLSocket_cb cb, void *key, TPtr8 &data, TUint flags)
    method DoCancel (line 172) | void DoCancel() {
    method RunL (line 176) | void RunL() {
    method CPjSSLSocketReader (line 180) | CPjSSLSocketReader(CSecureSocket &sock) :
    method ConstructL (line 184) | void ConstructL() {
  class CPjSSLSocket (line 189) | class CPjSSLSocket : public CActive
    type ssl_state (line 192) | enum ssl_state {
    method CPjSSLSocket (line 199) | static CPjSSLSocket *NewL(const TDesC8 &ssl_proto,
    method GetState (line 223) | enum ssl_state GetState() const { return state_; }
    method TInetAddr (line 224) | const TInetAddr* GetLocalAddr() const { return &local_addr_; }
    method GetCipher (line 225) | int GetCipher(TDes8 &cipher) const {
    method CX509Certificate (line 230) | const CX509Certificate *GetPeerCert() {
    type ssl_state (line 237) | enum ssl_state
    method CPjSSLSocket (line 259) | CPjSSLSocket(pj_qos_type qos_type, const pj_qos_params &qos_params) :
    method ConstructL (line 266) | void ConstructL(const TDesC8 &ssl_proto) {
    method CleanupSubObjects (line 271) | void CleanupSubObjects() {
  function CPjSSLSocketReader (line 364) | CPjSSLSocketReader* CPjSSLSocket::GetReader()
    method CPjSSLSocketReader (line 139) | static CPjSSLSocketReader *NewL(CSecureSocket &sock)
    method Read (line 154) | int Read(CPjSSLSocket_cb cb, void *key, TPtr8 &data, TUint flags)
    method DoCancel (line 172) | void DoCancel() {
    method RunL (line 176) | void RunL() {
    method CPjSSLSocketReader (line 180) | CPjSSLSocketReader(CSecureSocket &sock) :
    method ConstructL (line 184) | void ConstructL() {
  class CPjTimer (line 465) | class CPjTimer : public CActive
    method CPjTimer (line 468) | CPjTimer(const pj_time_val *delay, CPjTimer_cb cb, void *user_data) :
    method RunL (line 489) | void RunL() { if (cb_) (*cb_)(user_data_); }
    method DoCancel (line 490) | void DoCancel() { rtimer_.Cancel(); }
  type read_state_t (line 496) | struct read_state_t {
  type write_data_t (line 505) | struct write_data_t {
  type write_state_t (line 515) | struct write_state_t {
  type pj_ssl_sock_t (line 527) | struct pj_ssl_sock_t
  function pj_str_t (line 558) | static pj_str_t get_cert_name(char *buf, unsigned buf_len,
  function get_cert_info (line 600) | static void get_cert_info(pj_pool_t *pool, pj_ssl_cert_info *ci,
  function update_certs_info (line 672) | static void update_certs_info(pj_ssl_sock_t *ssock)
  type ciphers_t (line 691) | struct ciphers_t
  function pj_ssl_cipher_get_availables (line 700) | pj_ssl_cipher_get_availables (pj_ssl_cipher ciphers[],
  function pj_ssl_cipher_name (line 744) | pj_ssl_cipher_name(pj_ssl_cipher cipher)
  function pj_ssl_cipher_id (line 764) | pj_ssl_cipher_id(const char *cipher_name)
  function pj_ssl_cipher_is_supported (line 784) | pj_ssl_cipher_is_supported(pj_ssl_cipher cipher)
  function pj_ssl_sock_create (line 806) | pj_ssl_sock_create (pj_pool_t *pool,
  function pj_ssl_cert_load_from_files (line 855) | pj_ssl_cert_load_from_files(pj_pool_t *pool,
  function pj_ssl_cert_load_from_files2 (line 866) | pj_ssl_cert_load_from_files2(pj_pool_t *
Copy disabled (too large) Download .json
Condensed preview — 1819 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,756K chars).
[
  {
    "path": ".boring",
    "chars": 369,
    "preview": "#\n# Boring file regular expresions\n#\n\n~$\n\\#\n(^|/)\\.DS_Store$\n(^|/)Thumbs\\.db$\n(^|/)core(\\.[0-9]+)?$\n\\.(pyc|pyo|o|so|orig"
  },
  {
    "path": "AUTHORS",
    "chars": 81,
    "preview": "Adrian Georgescu\nDan Pascu\nRuud Klaver\nDenis Bilenko\nLucian Stanescu\nSaúl Ibarra\n"
  },
  {
    "path": "LICENSE",
    "chars": 631,
    "preview": "Copyright: 2008-2020 AG Projects\n\nLicense: GPL-3+\n\n    This package is free software; you can redistribute it and/or mod"
  },
  {
    "path": "MANIFEST.in",
    "chars": 581,
    "preview": "include AUTHORS\ninclude LICENSE\ninclude README\ninclude MANIFEST.in\n\ninclude build_inplace\ninclude setup_pjsip.py\n\ninclud"
  },
  {
    "path": "README",
    "chars": 6113,
    "preview": "\nSIP SIMPLE Client SDK\n---------------------\n\nCopyright (c) 2008-2020 AG Projects\nhttp://ag-projects.com\n\n\nDescription\n-"
  },
  {
    "path": "TODO",
    "chars": 4122,
    "preview": "- If the SIP account password is changed on the server, then the client\n  modifies some contact, xcap PUT will keep fail"
  },
  {
    "path": "build_inplace",
    "chars": 92,
    "preview": "#!/bin/sh\n\npython setup.py build_ext --inplace \"$@\"\ntest -d build && python setup.py clean\n\n"
  },
  {
    "path": "debian/changelog",
    "chars": 69202,
    "preview": "python-sipsimple (3.6.0) unstable; urgency=medium\n\n  * Added support for creating and parsing IMDN (RFC5438) documents\n "
  },
  {
    "path": "debian/compat",
    "chars": 3,
    "preview": "11\n"
  },
  {
    "path": "debian/control",
    "chars": 1648,
    "preview": "Source: python-sipsimple\nSection: python\nPriority: optional\nMaintainer: Dan Pascu <dan@ag-projects.com>\nUploaders: Adria"
  },
  {
    "path": "debian/copyright",
    "chars": 626,
    "preview": "Copyright: 2008-2020 AG Projects\n\nLicense: GPL-3+\n\n    This package is free software; you can redistribute it and/or mod"
  },
  {
    "path": "debian/docs",
    "chars": 24,
    "preview": "docs/DeveloperGuide.txt\n"
  },
  {
    "path": "debian/python-sipsimple.lintian-overrides",
    "chars": 46,
    "preview": "binary: possible-gpl-code-linked-with-openssl\n"
  },
  {
    "path": "debian/rules",
    "chars": 190,
    "preview": "#!/usr/bin/make -f\n\nexport DEB_BUILD_HARDENING = 1\nexport PYBUILD_NAME = sipsimple\n\n%:\n\tdh $@ --with python2 --buildsyst"
  },
  {
    "path": "debian/source/format",
    "chars": 13,
    "preview": "3.0 (native)\n"
  },
  {
    "path": "deps/pjsip/COPYING",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "deps/pjsip/Makefile",
    "chars": 3434,
    "preview": "include build.mak\ninclude build/host-$(HOST_NAME).mak\n-include user.mak\ninclude version.mak\n\nLIB_DIRS = pjlib/build pjli"
  },
  {
    "path": "deps/pjsip/README.txt",
    "chars": 34669,
    "preview": " Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>\n Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n\n "
  },
  {
    "path": "deps/pjsip/aconfigure",
    "chars": 223408,
    "preview": "#!/bin/sh\n# Guess values for system-dependent variables and create Makefiles.\n# Generated by GNU Autoconf 2.69 for pjpro"
  },
  {
    "path": "deps/pjsip/aconfigure.ac",
    "chars": 30836,
    "preview": "AC_INIT(pjproject,2.x)\n\nhost_orig=\"$host\"\n\nAC_CANONICAL_BUILD\nAC_CANONICAL_HOST\nAC_CANONICAL_TARGET\nAC_CONFIG_HEADER([pj"
  },
  {
    "path": "deps/pjsip/base_rev",
    "chars": 5,
    "preview": "5249\n"
  },
  {
    "path": "deps/pjsip/build/cc-auto.mak.in",
    "chars": 443,
    "preview": "export CC = @CC@ -c\nexport CXX = @CXX@ -c\nexport AR = @AR@\nexport AR_FLAGS = @AR_FLAGS@\nexport LD = @LD@\nexport LDOUT = "
  },
  {
    "path": "deps/pjsip/build/cc-gcc.mak",
    "chars": 502,
    "preview": "export CC = $(CROSS_COMPILE)gcc -c\nexport AR = $(CROSS_COMPILE)ar rv \nexport LD = $(CROSS_COMPILE)gcc\nexport LDOUT = -o "
  },
  {
    "path": "deps/pjsip/build/common.mak",
    "chars": 1443,
    "preview": "#\n# Include host/target/compiler selection.\n# This will export CC_NAME, MACHINE_NAME, OS_NAME, and HOST_NAME variables.\n"
  },
  {
    "path": "deps/pjsip/build/host-mingw.mak",
    "chars": 304,
    "preview": "export HOST_MV := mv\nexport HOST_RM := rm -f @@\nexport HOST_RMR := rm -rf @@\nexport HOST_RMDIR := rm -rf @@\nexport HOST_"
  },
  {
    "path": "deps/pjsip/build/host-unix.mak",
    "chars": 289,
    "preview": "export HOST_MV := mv\nexport HOST_RM := rm -f @@\nexport HOST_RMR := rm -rf @@\nexport HOST_RMDIR := rm -rf @@\nexport HOST_"
  },
  {
    "path": "deps/pjsip/build/host-win32.mak",
    "chars": 341,
    "preview": "export HOST_MV := ren\nexport HOST_RM := if exist @@; del /F /Q @@\nexport HOST_RMR := if exist @@; del /F /Q @@\nexport HO"
  },
  {
    "path": "deps/pjsip/build/m-arm.mak",
    "chars": 102,
    "preview": "export M_CFLAGS := $(CC_DEF)PJ_M_ARMV4=1\nexport M_CXXFLAGS :=\nexport M_LDFLAGS :=\nexport M_SOURCES :=\n"
  },
  {
    "path": "deps/pjsip/build/m-auto.mak",
    "chars": 35,
    "preview": "# Nothing needs to be defined here\n"
  },
  {
    "path": "deps/pjsip/build/m-i386.mak",
    "chars": 101,
    "preview": "export M_CFLAGS := $(CC_DEF)PJ_M_I386=1\nexport M_CXXFLAGS :=\nexport M_LDFLAGS :=\nexport M_SOURCES :=\n"
  },
  {
    "path": "deps/pjsip/build/m-x86_64.mak",
    "chars": 103,
    "preview": "export M_CFLAGS := $(CC_DEF)PJ_M_X86_64=1\nexport M_CXXFLAGS :=\nexport M_LDFLAGS :=\nexport M_SOURCES :=\n"
  },
  {
    "path": "deps/pjsip/build/os-auto.mak.in",
    "chars": 198,
    "preview": "# @configure_input@\n\nexport OS_CFLAGS   := $(CC_DEF)PJ_AUTOCONF=1 @CFLAGS@\n\nexport OS_CXXFLAGS := $(CC_DEF)PJ_AUTOCONF=1"
  },
  {
    "path": "deps/pjsip/build/rules.mak",
    "chars": 5447,
    "preview": "ifeq ($(LIBDIR),)\nLIBDIR = ../lib\nendif\nifeq ($(BINDIR),)\nBINDIR = ../bin\nendif\n\n#\n# The full path of output lib file (e"
  },
  {
    "path": "deps/pjsip/build.mak.in",
    "chars": 6090,
    "preview": "export PJDIR := @ac_pjdir@\ninclude $(PJDIR)/version.mak\nexport PJ_DIR := $(PJDIR)\n\n# @configure_input@\nexport MACHINE_NA"
  },
  {
    "path": "deps/pjsip/config.guess",
    "chars": 44958,
    "preview": "#!/bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,\n"
  },
  {
    "path": "deps/pjsip/config.sub",
    "chars": 35553,
    "preview": "#!/bin/sh\n# Configuration validation subroutine script.\n#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999"
  },
  {
    "path": "deps/pjsip/configure",
    "chars": 131,
    "preview": "#!/bin/sh\n\n./aconfigure \"$@\"\n\n# Note:\n# if you're looking for the old configure script, it has been renamed\n# to configu"
  },
  {
    "path": "deps/pjsip/install-sh",
    "chars": 5568,
    "preview": "#!/bin/sh\n\n# install - install a program, script, or datafile\n# This comes from X11R5 (mit/util/scripts/install.sh).\n#\n#"
  },
  {
    "path": "deps/pjsip/pjlib/build/Makefile",
    "chars": 4181,
    "preview": "include ../../build.mak\ninclude ../../version.mak\ninclude $(PJDIR)/build/common.mak\n\nRULES_MAK := $(PJDIR)/build/rules.m"
  },
  {
    "path": "deps/pjsip/pjlib/build/os-auto.mak.in",
    "chars": 788,
    "preview": "# @configure_input@\n\n# Determine OS specific files\nAC_OS_OBJS=@ac_os_objs@\n\n#\n# PJLIB_OBJS specified here are object fil"
  },
  {
    "path": "deps/pjsip/pjlib/docs/doxygen.cfg",
    "chars": 42856,
    "preview": "# Doxyfile 1.3-rc3\r\n\r\n# This file describes the settings to be used by the documentation system\r\n# doxygen (www.doxygen."
  },
  {
    "path": "deps/pjsip/pjlib/docs/doxygen.css",
    "chars": 7071,
    "preview": "BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {\n\tfont-family: Geneva, Arial, Helvetica, sans-serif;\n}\nBODY,TD {\n      "
  },
  {
    "path": "deps/pjsip/pjlib/docs/footer.html",
    "chars": 233,
    "preview": "<p>&nbsp;</p>\r\n<hr><center>\r\nPJLIB Open Source, high performance, small footprint, and very very portable framework<br>\r"
  },
  {
    "path": "deps/pjsip/pjlib/docs/header.html",
    "chars": 415,
    "preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n<html><head><meta http-equiv=\"Content-Type\" content=\"te"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/activesock.h",
    "chars": 22059,
    "preview": "/* $Id: activesock.h 4461 2013-04-05 03:02:19Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/addr_resolv.h",
    "chars": 6551,
    "preview": "/* $Id: addr_resolv.h 4218 2012-08-07 02:18:15Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/array.h",
    "chars": 2968,
    "preview": "/* $Id: array.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/assert.h",
    "chars": 3043,
    "preview": "/* $Id: assert.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/assert.h",
    "chars": 1431,
    "preview": "/* $Id: assert.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/cc_armcc.h",
    "chars": 1727,
    "preview": "/* $Id: cc_armcc.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/cc_codew.h",
    "chars": 1690,
    "preview": "/* $Id: cc_codew.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/cc_gcc.h",
    "chars": 2113,
    "preview": "/* $Id: cc_gcc.h 3664 2011-07-19 03:42:28Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/cc_gcce.h",
    "chars": 1608,
    "preview": "/* $Id: cc_gcce.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/cc_msvc.h",
    "chars": 2814,
    "preview": "/* $Id: cc_msvc.h 3664 2011-07-19 03:42:28Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/cc_mwcc.h",
    "chars": 1605,
    "preview": "/* $Id: cc_mwcc.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/ctype.h",
    "chars": 1851,
    "preview": "/* $Id: ctype.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/errno.h",
    "chars": 1570,
    "preview": "/* $Id: errno.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/high_precision.h",
    "chars": 2870,
    "preview": "/* $Id: high_precision.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.tel"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_alpha.h",
    "chars": 1201,
    "preview": "/* $Id: m_alpha.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_armv4.h",
    "chars": 1242,
    "preview": "/* $Id: m_armv4.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_auto.h.in",
    "chars": 1800,
    "preview": "/* $Id: m_auto.h.in 3295 2010-08-25 12:51:29Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.c"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_i386.h",
    "chars": 1199,
    "preview": "/* $Id: m_i386.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_m68k.h",
    "chars": 1202,
    "preview": "/* $Id: m_m68k.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_powerpc.h",
    "chars": 1211,
    "preview": "/* $Id: m_powerpc.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_sparc.h",
    "chars": 1200,
    "preview": "/* $Id: m_sparc.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/m_x86_64.h",
    "chars": 1219,
    "preview": "/* $Id: m_x86_64.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/malloc.h",
    "chars": 1238,
    "preview": "/* $Id: malloc.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_auto.h.in",
    "chars": 5956,
    "preview": "/* $Id: os_auto.h.in 3841 2011-10-24 09:28:13Z ming $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_darwinos.h",
    "chars": 4394,
    "preview": "/* $Id: os_darwinos.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_linux.h",
    "chars": 3997,
    "preview": "/* $Id: os_linux.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_linux_kernel.h",
    "chars": 4540,
    "preview": "/* $Id: os_linux_kernel.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.te"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_palmos.h",
    "chars": 3741,
    "preview": "/* $Id: os_palmos.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_rtems.h",
    "chars": 4133,
    "preview": "/* $Id: os_rtems.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_sunos.h",
    "chars": 4043,
    "preview": "/* $Id: os_sunos.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_symbian.h",
    "chars": 4778,
    "preview": "/* $Id: os_symbian.h 3841 2011-10-24 09:28:13Z ming $ */\n/*\n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_win32.h",
    "chars": 4265,
    "preview": "/* $Id: os_win32.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/os_win32_wince.h",
    "chars": 4537,
    "preview": "/* $Id: os_win32_wince.h 3841 2011-10-24 09:28:13Z ming $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/rand.h",
    "chars": 2006,
    "preview": "/* $Id: rand.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/setjmp.h",
    "chars": 3021,
    "preview": "/* $Id: setjmp.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/size_t.h",
    "chars": 1109,
    "preview": "/* $Id: size_t.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/socket.h",
    "chars": 6914,
    "preview": "/* $Id: socket.h 4435 2013-03-11 06:32:58Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/stdarg.h",
    "chars": 1152,
    "preview": "/* $Id: stdarg.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/stdfileio.h",
    "chars": 1190,
    "preview": "/* $Id: stdfileio.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/string.h",
    "chars": 5111,
    "preview": "/* $Id: string.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/compat/time.h",
    "chars": 1336,
    "preview": "/* $Id: time.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/config.h",
    "chars": 33032,
    "preview": "/* $Id: config.h 4419 2013-03-05 11:23:52Z ming $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/config_site_sample.h",
    "chars": 14735,
    "preview": "/*\n * This file contains several sample settings especially for Windows\n * Mobile and Symbian targets. You can include t"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/ctype.h",
    "chars": 5544,
    "preview": "/* $Id: ctype.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/doxygen.h",
    "chars": 34515,
    "preview": "/* $Id: doxygen.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/errno.h",
    "chars": 18573,
    "preview": "/* $Id: errno.h 4461 2013-04-05 03:02:19Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/except.h",
    "chars": 12213,
    "preview": "/* $Id: except.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/fifobuf.h",
    "chars": 1524,
    "preview": "/* $Id: fifobuf.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/file_access.h",
    "chars": 3111,
    "preview": "/* $Id: file_access.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/file_io.h",
    "chars": 6485,
    "preview": "/* $Id: file_io.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/guid.h",
    "chars": 3272,
    "preview": "/* $Id: guid.h 4208 2012-07-18 07:52:33Z ming $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * C"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/hash.h",
    "chars": 8219,
    "preview": "/* $Id: hash.h 4208 2012-07-18 07:52:33Z ming $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * C"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/ioqueue.h",
    "chars": 37042,
    "preview": "/* $Id: ioqueue.h 4359 2013-02-21 11:18:36Z bennylp $\n */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/ip_helper.h",
    "chars": 2910,
    "preview": "/* $Id: ip_helper.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/list.h",
    "chars": 7840,
    "preview": "/* $Id: list.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/list_i.h",
    "chars": 3475,
    "preview": "/* $Id: list_i.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/lock.h",
    "chars": 13270,
    "preview": "/* $Id: lock.h 4359 2013-02-21 11:18:36Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/log.h",
    "chars": 13530,
    "preview": "/* $Id: log.h 3752 2011-09-18 14:38:46Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/math.h",
    "chars": 4710,
    "preview": "/* $Id: math.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/os.h",
    "chars": 41225,
    "preview": "/* $Id: os.h 3664 2011-07-19 03:42:28Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * C"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/pool.h",
    "chars": 30407,
    "preview": "/* $Id: pool.h 4298 2012-11-22 05:00:01Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/pool_alt.h",
    "chars": 5472,
    "preview": "/* $Id: pool_alt.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/pool_buf.h",
    "chars": 3061,
    "preview": "/* $Id: pool_buf.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/pool_i.h",
    "chars": 2746,
    "preview": "/* $Id: pool_i.h 4298 2012-11-22 05:00:01Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/rand.h",
    "chars": 1687,
    "preview": "/* $Id: rand.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/rbtree.h",
    "chars": 6088,
    "preview": "/* $Id: rbtree.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/sock.h",
    "chars": 47278,
    "preview": "/* $Id: sock.h 4343 2013-02-07 09:35:34Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/sock_qos.h",
    "chars": 14384,
    "preview": "/* $Id: sock_qos.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/sock_select.h",
    "chars": 4793,
    "preview": "/* $Id: sock_select.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/ssl_sock.h",
    "chars": 39336,
    "preview": "/* $Id: ssl_sock.h 4506 2013-04-26 06:01:43Z bennylp $ */\n/* \n * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/string.h",
    "chars": 18123,
    "preview": "/* $Id: string.h 4440 2013-03-14 07:18:13Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/string_i.h",
    "chars": 8831,
    "preview": "/* $Id: string_i.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/timer.h",
    "chars": 12241,
    "preview": "/* $Id: timer.h 4359 2013-02-21 11:18:36Z bennylp $ */\n/* \n * This program is free software; you can redistribute it and"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/types.h",
    "chars": 13591,
    "preview": "/* $Id: types.h 4359 2013-02-21 11:18:36Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj/unicode.h",
    "chars": 4349,
    "preview": "/* $Id: unicode.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/file.hpp",
    "chars": 3886,
    "preview": "/* $Id: file.hpp 2394 2008-12-23 17:27:53Z bennylp $  */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/hash.hpp",
    "chars": 3482,
    "preview": "/* $Id: hash.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/list.hpp",
    "chars": 6432,
    "preview": "/* $Id: list.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/lock.hpp",
    "chars": 3485,
    "preview": "/* $Id: lock.hpp 2394 2008-12-23 17:27:53Z bennylp $  */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/os.hpp",
    "chars": 15472,
    "preview": "/* $Id: os.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/pool.hpp",
    "chars": 5699,
    "preview": "/* $Id: pool.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/proactor.hpp",
    "chars": 12500,
    "preview": "/* $Id: proactor.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/scanner.hpp",
    "chars": 4654,
    "preview": "/* $Id: scanner.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.c"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/sock.hpp",
    "chars": 8458,
    "preview": "/* $Id: sock.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/string.hpp",
    "chars": 8042,
    "preview": "/* $Id: string.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/timer.hpp",
    "chars": 4292,
    "preview": "/* $Id: timer.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/tree.hpp",
    "chars": 3442,
    "preview": "/* $Id: tree.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/include/pj++/types.hpp",
    "chars": 3760,
    "preview": "/* $Id: types.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/include/pjlib++.hpp",
    "chars": 1262,
    "preview": "/* $Id: pjlib++.hpp 2394 2008-12-23 17:27:53Z bennylp $ */\n/* \n * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.c"
  },
  {
    "path": "deps/pjsip/pjlib/include/pjlib.h",
    "chars": 1773,
    "preview": "/* $Id: pjlib.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/activesock.c",
    "chars": 25387,
    "preview": "/* $Id: activesock.c 4461 2013-04-05 03:02:19Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/addr_resolv_linux_kernel.c",
    "chars": 1049,
    "preview": "/* $Id: addr_resolv_linux_kernel.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/addr_resolv_sock.c",
    "chars": 7837,
    "preview": "/* $Id: addr_resolv_sock.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.t"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/addr_resolv_symbian.cpp",
    "chars": 5517,
    "preview": "/* $Id: addr_resolv_symbian.cpp 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/array.c",
    "chars": 2122,
    "preview": "/* $Id: array.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/compat/longjmp_i386.S",
    "chars": 1487,
    "preview": "/* longjmp for i386.\n   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n   This file is part of the "
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/compat/setjmp_i386.S",
    "chars": 2073,
    "preview": "/* setjmp for i386, ELF version.\n   Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.\n   This fi"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/compat/sigjmp.c",
    "chars": 1306,
    "preview": "/* $Id: sigjmp.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/compat/string.c",
    "chars": 1468,
    "preview": "/* $Id: string.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/compat/string_compat.c",
    "chars": 2136,
    "preview": "/* $Id: string_compat.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/config.c",
    "chars": 4287,
    "preview": "/* $Id: config.c 4112 2012-04-27 09:47:20Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ctype.c",
    "chars": 1073,
    "preview": "/* $Id: ctype.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n "
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/errno.c",
    "chars": 9533,
    "preview": "/* $Id: errno.c 4461 2013-04-05 03:02:19Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * "
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/except.c",
    "chars": 5113,
    "preview": "/* $Id: except.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/exception_symbian.cpp",
    "chars": 3252,
    "preview": "/* $Id: exception_symbian.cpp 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://ww"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/extra-exports.c",
    "chars": 1433,
    "preview": "/* $Id: extra-exports.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/fifobuf.c",
    "chars": 5091,
    "preview": "/* $Id: fifobuf.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/file_access_unistd.c",
    "chars": 2569,
    "preview": "/* $Id: file_access_unistd.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/file_access_win32.c",
    "chars": 6090,
    "preview": "/* $Id: file_access_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www."
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/file_io_ansi.c",
    "chars": 4324,
    "preview": "/* $Id: file_io_ansi.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/file_io_win32.c",
    "chars": 6732,
    "preview": "/* $Id: file_io_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/guid.c",
    "chars": 1569,
    "preview": "/* $Id: guid.c 4208 2012-07-18 07:52:33Z ming $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * C"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/guid_simple.c",
    "chars": 2096,
    "preview": "/* $Id: guid_simple.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/guid_uuid.c",
    "chars": 1603,
    "preview": "/* $Id: guid_uuid.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.co"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/guid_win32.c",
    "chars": 1966,
    "preview": "/* $Id: guid_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.c"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/hash.c",
    "chars": 9730,
    "preview": "/* $Id: hash.c 4296 2012-11-07 04:56:26Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_common_abs.c",
    "chars": 40421,
    "preview": "/* $Id: ioqueue_common_abs.c 4359 2013-02-21 11:18:36Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://ww"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_common_abs.h",
    "chars": 4058,
    "preview": "/* $Id */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * Copyright (C) 2003-2008 Benny Prijono <ben"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_dummy.c",
    "chars": 4710,
    "preview": "/* $Id: ioqueue_dummy.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_epoll.c",
    "chars": 21570,
    "preview": "/* $Id: ioqueue_epoll.c 4528 2013-05-30 07:01:11Z ming $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_linux_kernel.c",
    "chars": 3930,
    "preview": "/* $Id: ioqueue_linux_kernel.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://w"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_select.c",
    "chars": 27088,
    "preview": "/* $Id: ioqueue_select.c 4514 2013-05-03 09:07:43Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.tel"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_symbian.cpp",
    "chars": 21519,
    "preview": "/* $Id: ioqueue_symbian.cpp 4374 2013-02-27 07:15:57Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.te"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ioqueue_winnt.c",
    "chars": 37948,
    "preview": "/* $Id: ioqueue_winnt.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ip_helper_generic.c",
    "chars": 11249,
    "preview": "/* $Id: ip_helper_generic.c 4355 2013-02-19 16:27:37Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ip_helper_symbian.cpp",
    "chars": 3847,
    "preview": "/* $Id: ip_helper_symbian.cpp 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://ww"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/ip_helper_win32.c",
    "chars": 12213,
    "preview": "/* $Id: ip_helper_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.te"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/list.c",
    "chars": 986,
    "preview": "/* $Id: list.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/lock.c",
    "chars": 17872,
    "preview": "/* $Id: lock.c 4412 2013-03-05 03:12:32Z riza $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n * C"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/log.c",
    "chars": 13296,
    "preview": "/* $Id: log.c 3752 2011-09-18 14:38:46Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)\n *"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/log_writer_printk.c",
    "chars": 1082,
    "preview": "/* $Id: log_writer_printk.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www."
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/log_writer_stdout.c",
    "chars": 1682,
    "preview": "/* $Id: log_writer_stdout.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www."
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/log_writer_symbian_console.cpp",
    "chars": 1443,
    "preview": "/* $Id: log_writer_symbian_console.cpp 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. ("
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_core_darwin.m",
    "chars": 2764,
    "preview": "/* $Id: os_core_darwin.m 3670 2011-07-20 03:00:48Z ming $ */\n/* \n * Copyright (C) 2011-2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_core_linux_kernel.c",
    "chars": 16980,
    "preview": "/* $Id: os_core_linux_kernel.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://w"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_core_symbian.cpp",
    "chars": 21429,
    "preview": "/* $Id: os_core_symbian.cpp 3999 2012-03-30 07:10:13Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_core_unix.c",
    "chars": 45210,
    "preview": "/* $Id: os_core_unix.c 4359 2013-02-21 11:18:36Z bennylp $ */\n/*\n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_core_win32.c",
    "chars": 33094,
    "preview": "/* $Id: os_core_win32.c 3999 2012-03-30 07:10:13Z bennylp $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.tel"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_error_linux_kernel.c",
    "chars": 2064,
    "preview": "/* $Id: os_error_linux_kernel.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_error_symbian.cpp",
    "chars": 5900,
    "preview": "/* $Id: os_error_symbian.cpp 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_error_unix.c",
    "chars": 1930,
    "preview": "/* $Id: os_error_unix.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_error_win32.c",
    "chars": 7649,
    "preview": "/* $Id: os_error_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.tel"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_info.c",
    "chars": 8753,
    "preview": "/* $Id: os_info.c 4411 2013-03-04 04:34:38Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_info_iphone.m",
    "chars": 1819,
    "preview": "/* $Id: os_info_iphone.m 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.tel"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_info_symbian.cpp",
    "chars": 5214,
    "preview": "/* $Id: os_info_symbian.cpp 3437 2011-03-08 06:30:34Z nanang $ */\n/* \n * Copyright (C) 2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_rwmutex.c",
    "chars": 3864,
    "preview": "/* $Id: os_rwmutex.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.c"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_symbian.h",
    "chars": 9944,
    "preview": "/* $Id: os_symbian.h 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.c"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_time_bsd.c",
    "chars": 1228,
    "preview": "/* $Id: os_time_bsd.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu."
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_time_common.c",
    "chars": 2377,
    "preview": "/* $Id: os_time_common.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.tel"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_time_linux_kernel.c",
    "chars": 1823,
    "preview": "/* $Id: os_time_linux_kernel.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://w"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_time_unix.c",
    "chars": 1497,
    "preview": "/* $Id: os_time_unix.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_time_win32.c",
    "chars": 8319,
    "preview": "/* $Id: os_time_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www.telu"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_timestamp_common.c",
    "chars": 5702,
    "preview": "/* $Id: os_timestamp_common.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://ww"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_timestamp_linux_kernel.c",
    "chars": 1947,
    "preview": "/* $Id: os_timestamp_linux_kernel.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (htt"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_timestamp_posix.c",
    "chars": 5129,
    "preview": "/* $Id: os_timestamp_posix.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www"
  },
  {
    "path": "deps/pjsip/pjlib/src/pj/os_timestamp_win32.c",
    "chars": 7259,
    "preview": "/* $Id: os_timestamp_win32.c 3553 2011-05-05 06:14:19Z nanang $ */\n/* \n * Copyright (C) 2008-2011 Teluu Inc. (http://www"
  }
]

// ... and 1619 more files (download for full content)

About this extraction

This page contains the full source code of the AGProjects/python-sipsimple GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1819 files (18.8 MB), approximately 5.0M tokens, and a symbol index with 12426 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!