VOIP Project: Understanding VOIP - Part 4
In order to be able to continue developing further more the VOIP system we need to know which are the components that can be used to build a VOIP system and how they are implemented.
In the book titled “Packet Guide to Voice over IP” VOIP is: “…exactly what the name indicates—sending voice (and video) over an IP-based network. This is completely different than the circuit-switched public telephone network…” ( Hartpence, 2013, p. 2). The fact that VOIP “…is completely different than the circuit-switched public tele‐ phone network…” ( Hartpence, 2013, p. 2)makes it possible to do things that are not possible with the standard telephony system, like programming customized applications based on individual needs.
VOIP does not only allows to transmit voice over IP but video as well, and this makes communication through VOIP even richer in features.
< Part 3: Database implementation Part 5: Design application >
(please report broken link in the comment)
In the book titled “Packet Guide to Voice over IP” VOIP is: “…exactly what the name indicates—sending voice (and video) over an IP-based network. This is completely different than the circuit-switched public telephone network…” ( Hartpence, 2013, p. 2). The fact that VOIP “…is completely different than the circuit-switched public tele‐ phone network…” ( Hartpence, 2013, p. 2)makes it possible to do things that are not possible with the standard telephony system, like programming customized applications based on individual needs.
VOIP does not only allows to transmit voice over IP but video as well, and this makes communication through VOIP even richer in features.
- Comparison with traditional telephony
- Overview of VOIPprotocols
- How SIP works
- PJSIP library
VOIP gives the opportunity to use internet connection in order to implement system, while the traditional telephony needs dedicated infrastructure in order to be implemented. Being the internet the medium of communication that is used to create the system, when using it makes possible to integrate multiple features in a VOIP application, which can’t be done in a traditional telephony system. In order to function traditional telephony needs relatively complex switching centrals in order to connect calls, for VOIP application it is necessary to have a PBX server which manages the traffic through the network.
Like every other implemented technology, even VOIP needs protocols in order to function. There are several protocols which make possible the implementation of VOIP communication like MGCP, H.323, SIP etc. but in this project is implemented and explained the SIP protocol. The sentence of Harpence about SIP: “…is a nonproprietary signaling protocol that is now supported by almost all vendors in the VoIP industry.”( Hartpence, 2013, p. 63), shows the popularity of SIP protocol in VOIP implementation nowadays.
SIP is an open, non-proprietary protocol part of the VOIP stack protocol which makes possible the implementation of VOIP systems. The way this protocol functions is shown in the figure 1, a picture taken by the book of CISCO, “Understanding Voice over IP Protocols”.
As shown in the picture above, initially according this protocol, calling party sends the INVITE message to the SIP server, which returns the TRYING signal to the calling party. In the next step SIP server transits the INVITE signal to the called party, which returns the signals TRYING and RINGING. After this step the SIP server transmits the RINGING signal to the calling party. After the call has been accepted by the called party, the OK signal is emitted to the server, which is than forwarded to the calling party that as the last step before call is established, the calling party emits the ACK signal.
PJSIP library used in the project implements the above explained protocol of VOIP stack protocols, SIP protocol, which as mentioned above is an open, non-proprietary standard. The fact that SIP protocol is open, allows the build of open source tools from a wide community of programmers, like in the case of PJSIP.
PJSIP library is written in C language and it can be compiled in multiple platforms. This gives PJSIP a very big advantage related to the other VOIP libraries. As shown in this project several tools may be used to compile this library. In windows Visual C++ can be used, while in Linux, in case of this project is used Ubuntu, can be used Qt Creator with MingW GCC compiler.
As shown in the PJSUA2 documentation: “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.” (Ming Liong & Prijono, 2014, p. 3), PJSUA2 API in general is the entry point for the PJSIP library, but user can access lower level library of this stack of libraries.
Evolution of this library has been continues from 2005, reaching a very stable and reach in features version. The implementation shown in this blog has benefited from version 2.4.5 when building the windows version and 1.16 for the Linux version. This library has been enriched continuously with features, until the adding of video with the release of the 2.0 version.
This tool combined whit another good programming tool, like Qt, reduces a lot of barriers into deploying the same code, with very limited changes or no changes at all, in different platforms.
This library is very well documented and it makes it very easy the start of building a VOIP application with this library. In the documentation of PJSUA2 mentioned above can be found starting point on how to integrate this library in C++, Python and Java applications.
< Part 3: Database implementation Part 5: Design application >
(please report broken link in the comment)
Comments
Post a Comment