PJSUA2 Documentation PJSUA2 Documentation, Release 1.0-alpha 2.2.6Symbian Symbian has been supported

  • View
    0

  • Download
    0

Embed Size (px)

Text of PJSUA2 Documentation PJSUA2 Documentation, Release 1.0-alpha 2.2.6Symbian Symbian has been supported

  • PJSUA2 Documentation Release 1.0-alpha

    Sauw Ming Liong, Benny Prijono

    Feb 17, 2020

  • CONTENTS

    1 Introduction 3 1.1 Getting Started with PJSIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 PJSIP Info and Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Development Guidelines and Considerations 5 2.1 Development Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Platform Consideration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Which API to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Network and Infrastructure Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Sound Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3 PJSUA2-High Level API 11 3.1 PJSUA2 Main Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 General Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Building PJSUA2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4 Building Java, Python, and C# SWIG Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5 Using in C++ Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.6 Using in Python Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.7 Using in Java Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.8 Using in C# Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4 Endpoint 21 4.1 Instantiating the Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 Creating the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 Initializing the Library and Configuring the Settings . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 Creating One or More Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.5 Creating A Secure Transport (TLS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.6 Starting the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.7 Shutting Down the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.8 Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    5 Accounts 37 5.1 Subclassing the Account class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2 Creating Userless Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.3 Creating Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.4 Account Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.5 Account Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.6 Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    6 Media 49 6.1 The Audio Conference Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    i

  • 6.2 Audio Device Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.3 Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    7 Calls 67 7.1 Subclassing the Call Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.2 Making Outgoing Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.3 Receiving Incoming Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.4 Call Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.5 Call Disconnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.6 Working with Call’s Audio Media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.7 Call Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.8 Instant Messaging(IM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.9 Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    8 Buddy (Presence) 85 8.1 Subclassing the Buddy class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 8.2 Subscribing to Buddy’s Presence Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 8.3 Responding to Presence Subscription Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.4 Changing Account’s Presence Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.5 Instant Messaging(IM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.6 Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    9 PJSUA2 Sample Applications 91 9.1 Sample Apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9.2 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    10 Media Quality 93 10.1 Audio Quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 10.2 Video Quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    11 Network Problems 95 11.1 IP Address Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 11.2 Blocked/Filtered Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    12 PJSUA2 API Reference Manuals 97 12.1 endpoint.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 12.2 account.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 12.3 media.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 12.4 call.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 12.5 presence.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 12.6 persistent.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 12.7 json.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 12.8 siptypes.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 12.9 types.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 12.10 config.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    13 Appendix: Generating This Documentation 241 13.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.2 Rendering The Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.3 How to Use Integrate Book with Doxygen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

    14 Indices and tables 245

    Index 247

    ii

  • PJSUA2 Documentation, Release 1.0-alpha

    Contents:

    CONTENTS 1

  • PJSUA2 Documentation, Release 1.0-alpha

    2 CONTENTS

  • CHAPTER

    ONE

    INTRODUCTION

    This documentation is intended for developers looking to develop Session Initiation Protocol (SIP) based client appli- cation. Some knowledge on SIP is definitely required, and of course some programming experience. Prior knowledge of PJSUA C API is not needed, although it will probably help.

    PJSIP libraries provide multi-level APIs to do SIP calls, presence, and instant messaging, as well as handling media and NAT traversal. PJSUA2 API is the highest API from PJSIP, on top of PJSUA-LIB API. PJSUA-LIB API itself is a library that unifies SIP, audio/video media, NAT traversal, and client media application best practices into a high level, integrated, and easy to use API. The next chapter will guide you on selecting which API level to use depending on your requirements.

    This documentation can be viewed online, or alternatively you can download the PDF format for offline viewing.

    1.1 Getting Started with PJSIP

    Check PJSIP Datasheet to make sure that it has the features that you require.

    To start using PJSIP, the Getting Started Guide contains instructions to acquire and build PJSIP on various platforms that we support.

    1.2 PJSIP Info and Documentation

    To get other relevant info and documentations about PJSIP, you can visit:

    • PJSIP General Wiki is the home for all documentation

    • PJSIP FAQ

    • PJSIP Reference Manual - please see Reference Manual section

    3

    http://www.pjsip.org/docs/book-latest/html/index.html http://www.pjsip.org/docs/book-latest/PJSUA2Doc.pdf https:/