Building VOIP into an application (C++ specifically) [closed] - c++

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Are there existing libraries and frameworks which allow VOIP to be built into a bespoke application without reinventing the wheel? A customer is interested by the possibility for a C++ desktop application and while it's not hugely useful (they could just use skype), it is quite cool.
I believe some technologies like DirectX may have some functionality built in for in-game chat, is that right? What else is there in the form of free/paid 3rd-party libraries?

Well, since Asterisk is open source, that's a good place to start.
Check out Astxx
"The goal of Astxx is to provide a fully functional and easy to use C++
wrapper for Asterisk enabling developers to write Asterisk related software
using the full range of what C++ has to offer. This includes AGI scripts
and accessing the Manager API."
Also IAXClient
"A lightweight cross platform IP telephony client using the IAX protocol, designed for use with the asterisk open source PBX. "
And Asterisk Sockets
"Asterisk Manage API and FAGI C++ Framework. Implemented with high efficient OS independent Sockets wrapper (ACE). Provide C++ API wrappers for Asterisk Manager API and FAGI."
There's also a .NET library
"The Asterisk .NET library consists of a set of C# classes that allow you to easily build applications that interact with an Asterisk PBX Server (1.0/1.2/1.4 version). Both FastAGI and Manager API supported. .NET/Mono compatible."

You might want to consider some form of SIP client which could be used as a basis for a softphone application. Check out the free pjsip library.

For SIP libraries, you should also look at Sofia-SIP and the GNU oSIP library.
As SIP is only use for session initiation, you'll also need a library for audio streaming (an RTP library). I've used and recommend librtp.

You may want to check out VDK: http://www.voipdevkit.com It's not free, but it's multi-platform and allows very easy integration of VoIP in other applications. It offers high-level API, so you don't have to deal with SIP or RTP by yourself.

If you want to develop a Windows C++, vb.NET or C#.Net VOIP app that uses SIP and RTP, check out the LanScape VOIP media engine SDK. Its not just a SIP library or RTP media library – it handles all the VOIP call requirements. This voip sdk is not free or open source. You license it from LS.
We used the LS sdk when we developed our windows VOIP client (softphone) and also use it on our windows voip servers for pstn trunk termination. The v5 sdk they had experienced some bugs but the “Release 6” media engine has worked great for us.
Here’s the link to their site and to the LS voip SDK.
We have been using the sdk for 3-4 years. The free and paid support LS offers is very good. I also have it on good authority that they are going to offer the same sdk on Linux and Mac OS X snow leopard.

Related

Web Services using C++

I am building a server-client application that involves heavy signal processing (e.g. FFT). I have a working application written in C++/Qt, where everything (signal processing and other calculations) is done in client and server just sends raw data. Now I feel it would be easier to implement these features on the server. So, that maintenance becomes easier.
As I am doing signal processing, I think I should stick to C++ for performance. But I am open to new ideas.
Constraints:
I need type checking so javascript is out of discussion.
Scaling includes adding more server and each server will have at the max
10-12 users. So, Hardware cost is important. I cannot use x number of
i7 processors.
No option of using cloud services.
So, right now my question is as follows:
How can I create web services using C++ for Linux server? (Although cross platform is not important, I would appreciate if I can achieve it.)
EDIT [02:09:2015]
Right now, I think the choice is between poco and C++ Rest SDK. I feel I should go for C++ Rest SDK. Mainly because it has only those features that I need. And Also it is supported by microsoft and uses boost internally. So, I feel in future, this might be well integreated with standard.
You could use cross-platform Poco library to implement HTTP server, it is really straightforward with this framework, and they have a lot of examples. You can also use JSON serialization (like rapidjson library) to implement REST service on top of HTTP - this way your Web service will be accesable by most of the modern Web frameworks.
You might want to take a look at the C++ Rest SDK, an open source, cross platform API from Microsoft.
Like #nogard suggested, I also recommend POCO for now. It's the most serious and feature-full solution. Given you mentioned Qt, I suggest you to take a look at Tufão.
EDIT:
I forgot to mention one comparison of mine on the C++ HTTP server frameworks.
If you directly handle HTTP requests, you might loose the functionality what Web Servers does well what it was build to do. I had a similar issue, what I did was wrap up my Qt c++ code inside a PHP extension. In your case you can do the same. Wrap your logic inside what ever technology you are about to use, doesn't matter it's PHP, net , Java or anything else.

How to build native C++ apps with HTML/CSS UI? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 months ago.
The community reviewed whether to reopen this question 3 months ago and left it closed:
Original close reason(s) were not resolved
Improve this question
Is it possible to develop a C++ program while using HTML and CSS for the user interface? I know about programming with Javascript using a Webkit container, but I am really interested in C++ development.
I felt in love with C# WPF when I developed under Windows, but now I moved to Linux and I haven't found a good tool for using markup for interfaces. For this, I would like to mix HTML and CSS, which are very lightweight and easy to use, with C++ code, with something like WPF.
Oh, one more thing: I'm looking for desktop development, not web.
Yes, it is possible. What you want is a C++ web framework. You could start by looking at CppCMS—a Free High Performance Web Development Framework (not a CMS) aimed for Rapid Web Application Development.
Edit: After the question has been clarified, I think Awesomium would be a good fit for your needs.
You can achieve the same functionality by embedding WebKit (or Gecko) but as far as I know that is exactly what Awesomium does behind the scenes.
An alternative is librocket—a C++ interface middleware package designed for game applications. As you can guess from the description it is a good fit for games or real-time applications.
Sciter is exactly that - embeddable HTML/CSS engine with C/C++ API. Compact and multi-platform.
And check this article.
Sciter has the same feature set as WPF but uses HTML/CSS instead of XAML and uses native API.
Features out of the box:
HTML, CSS, SVG, aPNG (animated PNGs), image sprites,
<plaintext> - editor with syntax highlighting,
<htmlarea> - WYSIWYG HTML editor,
<frame type=pager> - print preview and HTML/CSS print,
animations,
HTTP client, REST/JSON client, WebSocket's, DataSockets,
etc.
The same application with Sciter UI running on Windows, MacOS and Linux from the same sources:
Disclaimer: I am an author of Sciter Engine.
2021 update: you can also use Sciter.JS that is version of Sciter that uses standard JavaScript (ES2020) script engine.
I think Electron would be a nice addition to the other answers.
It uses NodeJS to run a Webkit Window. Electron itself is only html/css/js, but you can use any Node Module within your Electron App - including custom, natively compiled C++ code. A possible Module to embed your C++ code would be node-gyp.
Be aware, however, that this workflow may include a little bit more JS than you would have with the other answers.
My favourite text editor, Atom, was made with Electron.
You can use Chromium Embedded Framework to embed HTML5 content in your app.
You'll get might and speed of Chromium and ability to build GUI apps the same way you develop web applications.
I suggest checking out Ultralight HTML UI Engine
Not Open Source, Available for C++. OpenGL and DirectX rendering supported.
Ultralight is the lighter, faster option to integrate HTML UI in your
C++ app.
It's made by the creator of Awesomium, who unfortunately decided to delete Awesomium.
If you need something more heavy weight I recommend taking a look at CEF. It’s a very powerful (and open source) tool.
I would suggest RmlUI
Its an active fork of librocket with more features. Its very modular, you can handle rendering, event handling and user input yourself (or copy one from provided examples).
Note: RmlUI doesn't support full HTML5/CSS3 specifications, but only a subset of it. Animations are supported tho.

How to implement packet shaping or QOS using c++ library?

I have a question related to networking using c++ in linux.
Description
I am trying to build a client management system that can control bandwidth to each clients. I have tried to search for answers in many places. I end up in LARTC. I think LARTC provides a scripting mechanism to do it. But I want to know pure programming methodology or header file in c programming language (that can communicate to network stack- if any) in linux(Ubuntu 13.04 beta).
Example: I found a header file namely Qos.h in C++. Net (for Windows)
Couple of related questions:
I dont think that out-of-the box solution exists (in a sense of C/C++ API).
How can I programmatically manage iptables rules on the fly?
How to programmatically access iptables?

Good library for realtime audio (both sending and receiving)? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm thinking about doing realtime audio chatting stuff node.js. However, there currently aren't any good libraries for node for this that I know of. For recording audio, I'd probably open an audio device and read PCM bytes from it - however, I'm not sure about how to go on. I want to have control over the network stuff, e.g. I want to be able to multiplex the traffic through an existing connection, so a library that also handles the network part wouldn't work for me. So, what I think I need:
a C/C++/JavaScript library that is able to do fast (maybe lossy) realtime audio (de-)compression (maybe optimized for compressing human voices)
a C/C++/JavaScript library that can ensure that things stay realtime, e.g. takes care of dropping data after jitters - maybe I could also do this part in JavaScript myself
Does this sound sane? What are good libraries for these things?
I've created a C++ audio library named "Crosstalk".
It's a real-time C++ audio engine that allows you to create and route audio systems in real-time. Basically, the engine takes care of all the audio routing and gives you a simple platform for creating system components (E.g. "Network Input Feed" component connected to a "Low-Pass Filter" connected to a "File Recorder").
It's very easy to use. Here's an example of how to play an mp3 file (These components are provided with the engine):
XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;
long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);
system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);
mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();
You can check out the API documentation and licensing details here: http://www.adaptaudio.com/Crosstalk
Update: Compatibility with free licenses.
Only the demo version of Crosstalk may be used in conjunction with free licensed software, however, commercial use and distribution of Crosstalk is still not allowed. If you wish to use the Crosstalk demo in free software, just mention in your EULA that your program uses a demo version of Crosstalk, and wherever you provide a link to your software, provide a link to: "http://www.adaptaudio.com/Crosstalk", where they may download it themselves.
EDIT (01-12-2012):
Crosstalk has been replaced by an open-source project called "DSPatch". DSPatch is essentially an upgraded version of the routing engine behind Crosstalk that is no longer limited to only audio processing. DSPatch allows you to create and route almost any type of process chain imaginable, and free for personal AND proprietary use :)

What to use when building a desktop application? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I'm making desktop application for my own use.
I can't decide on whcih language/toolkit/framework to use.
I would like a good User experience and a not so bad Performance.
The choices in my mind are:
wxPython
Titanium
Adobe AIR
any other suggestions that would fit
-- EDIT
I would also like it to be cross-platform
Experience, I've got some experience in Java, Python, HTML/JS. (Haven't done much .net stuff).
I would live to learn if needed.
There are a lot of other considerations.
What platform? What OS? What level of backward compatibility? What runtimes are on the clients?
What sort of graphics support do you need? 3D? 2D?
What kind of interoperability do you need?
What are your deployment scenarios?
What languages do you want to write this in?
There are literally hundreds of technologies out there. You can only come up with a design when you have specified what your main constraints are.
The first thing I'll say is that I would favour Web applications where possible. Of course for many things you can't—Web browsers for example. :) But where you can you should. Sure you have cross-browser issues but the OS/library cost of a desktop app is really high now.
That being said, if what you're doing needs to be done as a desktop app or you simply want to do it that way as a personal preference I would choose:
.Net (C# or VB.NET) if you only need to run on Windows or
Java (Swing, SWT, etc) if you want to run on non-Windows platforms.
I would choose from these two for no other reason than they're the most proven. Sure there are other options Adobe Air, Python, etc. Python in particular has real apps written in it so it would be my third choice. Overall though, these stacks are just less proven for this particular task.
depending on your desktop OS. For Windows, you may get Microsoft Visual Studio Express Edition of C# or VB.Net. For Mac computer intel based computer, you have free XCODE available to do it or use JavaScript to build widget applications.
Another option to look at would be QT. It's a cross platform C++ framework with Java & Python Bindings. It really does boil down to what type of application you want to build though and which platform(s) you want to target it at. If you're aiming at Windows specifically, you might want to consider using .NET and C# to take advantage of native support, on OSX, Objective-C and Cocoa, or on Linux C/C++ & whichever API set your targeted distro uses. And for cross-platform, which platforms would you like to target? Windows? OSX? Linux (Ubuntu, OpenSuse, Fedora etc.)? That will also dictate your choice.
Try Flexonrails
then convert with adobeAir
:)
it will be good
im doing my desktop application with that
Depending on what skills and tools you have available to you, as others have pointed out.
If you're on windows one simple accessable option is HTA applications.
http://msdn.microsoft.com/en-us/library/ms536496(VS.85).aspx
if you're on a mac, dashcode is a similar option for, not just authoring widgets, but also full on web applications.
both options give you access to many more api's than typical javascript has access to, such as filesystem access, or the ability to execute system commands.
There's a zillion others, but those options come for for free with their respective operating systems.
Dependes on what kind of application you would like to build, but you definitely should put in your list of tools to evaluate (at least) Delphi.
It compiles to native win32, is a rapid application development tool and has support for a lot of areas like databases, internet, com and many many others. Also, is built into Object Pascal, a very simple to learn language.
Up to some point, you can make it's applications cross platform using others IDEs like Lazarus in Linux.
As of 20 march-2018 almost everything has shifted to javascript. Have a look at Electron.js . Its usefull to build cross platform desktop apps in javascript , html and css.