Coder Social home page Coder Social logo

kastravec / risip Goto Github PK

View Code? Open in Web Editor NEW
28.0 9.0 10.0 42.49 MB

Cross-platform Qt C++ and QML APIs for Pjsip

License: Other

QMake 0.13% C++ 18.52% C 79.46% Objective-C 1.81% Java 0.05% Objective-C++ 0.04%
qt pjsip sip sip-sdk qt-pjsip qml-sip qml-pjsip qtcreator qml sdk

risip's Introduction

Copyright (C) 2016 - 2019 Petref Saraci

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 3 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 have received a copy of the GNU General Public License along with this program. See LICENSE.GPLv3 A copy of the license can be found also here http://www.gnu.org/licenses/.

What is Risip ?

Risip provides a set of APIs, headers, source files and other utilities for creating and enabling RTC audio/video applications.

Risip VoIP uses:

  • Pjsip
  • Qt

Is there a simple demo - example - tutorial?

Yes - check these out risip-demo - https://github.com/psaraci/risip-demo risip full blown app in QML - https://github.com/psaraci/risipapp

Can I use it commercially ?

Yes, it is possible to get a commercial license of risip. Drop me a message and I can help.

What is PJSIP ?

Learn about Pjsip here https://www.pjsip.org/ Documentation on pjsip, how build and use: https://trac.pjsip.org/repos

quick tip -> configuring and building Pjsip for Linux

  1. run the configure script

./configure --prefix="the install directory"

  1. make dep
  2. make
  3. make install

How to start using Risip in my project?

Using Risip in your Qt / QML project is very easy and straightforward.

  1. Make sure you have Qt installed and running properly.

  2. Create your project with Qt Creator

  3. Inside your project folder, clone the risip-voipsdk repo.

  4. Edit the .pro file of your project and add the following this line include(risip-voipsdk/risip-voipsdk.pri) on top.

RisipApp is based on Risip and is another great example to see how include the sdk in your project.


**How to start developing and contributing your code for Risip?

1. Download the latest Qt open source package and follow the instructions. (http://qt.io)

Install Qt for your platforms that that you want to build apps for (Desktop, and make sure everything is running smoothly with QtCreator IDE.

**2. Create a risi-voipsdk repo clone. **.

Risip provides Pjsip binaries for all supported platforms (Win, OSX, Linux, Android, iOS) already as part of the repositories.

3. Use QtCreator to load and build the Risip project.

You may use QtCreator to compile/build risip for all desktop platforms and Android, but for iOS you may need to use XCode too.


How to use the QML Risip ?

Risip QML API

QML Components ( Singleton - non instantiatable )

  • Risip

One of the main QML Components in Risip SDK. Use this singleton to create Risip SIP accounts in the Risip engine, save and read settings locally. This component initializes and registers all the rest of QML components, it does this automatically.

  • RisipEndpoint

Represents the SIP Endpoint / engine. You need to call start() and stop() in your application, upon creation and deletion respectively. Use this component to set various settings to your SIP endpoint. The default settings are typically suitable for most use cases.

  • RisipCallManager

Use this singleton component to make and accept calls to any SIP contact or phone number. It provides a simple and intuitive API, see its documentation and the risipsdk-demo example for more details. It is recommended to use this component to handle calls in order to have call history and logging working out of the box. Otherwise you can handle calls yourself using RisipAccount and RisipCall.

  • RisipContactManager

Use this singleton to access and manage your contacts and your contacts models that can be used directly into QML Views.

  • RisipRateManger

QML Components ( instantiatable components)

  • RisipAccount

This is a main component in Risip SDK. It provides a simple and intuitive API for creating and managing SIP accounts. In Risip you do not create RisipAccounts manually, but you must use Risip.createAccount() method from Risip singleton.

  • RisipAccountConfiguration

  • RisipCall

  • RisipMedia

  • RispBuddy

  • RisipMessage

  • RisipPhoneNumber

  • RisipPhoneContact

How to use the API ?

Use QtCreator and you will get code auto-completion for all Risip SDK APIs.

To refer to each component API details, to� see its Properties and Methods, please refer to the documentation, or the respective C++ header file. See (risip-voipsdk/src/risipsdk/headers/respective_file.h).

The Risip Singleton components help you get start very easily with RIsip.

First:

You need to let Risip initiate itself, load the necessary plugins and modules.

To do that you call:

RisipEndpoint.start();

When your application is shutting down then you need let Risip know, like this:

RisipEndpoint.stop();

Second:

To register a SIP user account, it works like this in Risip.

Create a RisipAccountConfiguration object:

RisipAccountConfiguration { id: myAccountConf }

Create the account using Risip Singleton:

Risip.createAccount(myAccountConf);

It is recommended to use Risip Default Account as a “default” SIP account, it makes the API easier to use:

Risip.setDefaultAccount(myAccountConf.uri);

risip's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

risip's Issues

pjsua2.hpp: No such file or directory

Hi
when I develop my QT app like Readme, the project can't find pjsua2.hpp file.
the pjsua2.hpp is included in several files in risipsdk/headers.
I don't known how to do

Risip Commercial License

Hi,

Can you please provide contact information in order for me to inquire about the possibility and pricing of a commercial license?

Thank you, and keep up the good work.

Support

Is there a mailing list / forums for support of this project?

Is QML necessary to use this project? (What if I just want PJSIP wrapped with QT for signals/slots etc)

Is this project still alive? (PJSIP 2.10 is most recent base). I would love to use for a system Im building.

Risip licensing

Hello, Petref! Sorry if I'm a bit off topic. Maybe you consider a possibility of changing licensing of Risip from GPL-3 to LGPL? We would like to use Risip as a library in our commercial project, but code disclosure (we will have to do it under GPL-3) is unacceptable for our customer. I am sure that if we can use Risip in our project it will be useful for Risip too (testing, bug fixing, etc.).

Memory deallocation segmentation fault

Hi,

I have compiled the risip-demo for ARM architecture and when the code runs, it breaks with a segmentation fault in the function RisipAccount::setConfiguration, called from Qt QML (Risip.accountForConfiguration(sipAccountDetails);) while trying to execute the following line in the risipaccount.cpp file:

delete m_data->configuration;

If I comment this line, the segmentation fault does not happen, but I get the following message from the application console:

QObject::disconnect: Unexpected null parameter

Do you have any advice how can I fix the "delete" issue? Is the QObject something to worry about?

Best regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.