MP3 decoder using IPP - mp3

I need an mp3 decoder (no need for encoding), and since I already own Intel IPP, I wonder if I can use it instead searching for other libraries such as mpg123 or ffmpeg. This page contains IPP sample archive:
https://software.intel.com/en-us/articles/code-samples-for-intel-integrated-performance-primitives-intel-ipp-v61-library
There is something called UMC, which should be generalized codec system, but the documentation is virtually nonexistent, it is spread between many subprojects and the downloads are different for Windows & Mac.
Is UMC the right way to go to get an MP3 decoder? Does it work on both Windows & Mac?

Related

QNX Microphone sampling and speaker playback

I am using QNX neutrino RTOS, I am new to QNX. I have setup my first project with some IPC messaging between two threads.
What I want to do is have one thread as a microphone "driver" that samples input from the microphone and stores / sends it as PCM packets to another thread which plays it out of the speaker.
So, are there any audio support libraries?, what is the best way to achieve recording microphone input and speaker output?
Yes, QNX comes with an audio library.
The audio library is documented starting at this location (6.5 SP1 version):
http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_audio%2Fabout.html&cp=13_1
Your qnx system includes a utility (command) called "wave" for playing back a .wav file and "waverec" for recording audio from the microphone and saving it to a .wav file.
You can use the "use wave" and "use waverec" commands for getting information about the supported command line options.
The documentation includes the complete source of the wave and waverec utilities:
wave.c:
http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_audio%2Fwavec.html
waverec.c:
http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_audio%2Fwaverec.html
The recommended way to start with audio recording and playback is to first have the wave and waverec binaries shipped with the system working. After that build the supplied source, have it working again, then understand it and embed in your application, possibly after stripping it down. (Because the sample is generic and perhaps you want to hard-code certain features that are dynamically configured in the sample).
You need to link against the libasound.so library in order to build the samples.
A minimal command-line example (tested) to build wave.c for armlev7 and x86:
ntoarmv7-gcc wave.c -o wave -l asound
ntox86-gcc wave.c -o wave -l asound
If you are building via the IDE then you need to add the library in the appropriate setting.
You are welcome to post here any questions you may have while working with the samples.

Using Standard .so files in GStreamer

I'm a beginner in GStreamer programming.
I created a pipeline for playing media in a file.
I would like to use libogg.so for decoding the ogg format files rather than libgstogg.so.
How can i use the this decoder in my pipeline?
Everybody is beginner in gstreamer programming it seems :)
You will have to write a program, may be C program and link it against libogg.so rather than libgstogg.so
You can achieve above easily using cmake
To be confirm what lib the program picked for linking,
You may try renaming libgstogg or
Running strace to see which location the binary picked the file
Create a shared library of your program and run ldd
you seem to miss some basic concepts here:
gstreamer is a framework to build media pipelines from elements
elements are defined via a plugin-system. the plugin-files are shared-objects (.so) files
you cannot use just any shared-object as a plugin (gstreamer will not recognize e.g. libc.so as a plugin - simply because libc.so does not provide a gstreamer plugin)
so in your special case you want to exchange libgstogg.so by libogg.so.
now libgstogg.so is a shared object, that provides the ogg family of gstreamer plugins.
on the other side libogg.so is an implementation of an ogg muxer/demuxer that has nothing to do with gstreamer.
if you want to use libogg.so you will have to create your own gstreamer-plugin that uses libogg.so. check the documentation on how to do that.
before you do so, check what libgstogg.so actually does. you will disover, that it provides a gstreamer plugin that uses libogg.so to do the actual muxing/demuxing. it is really just the bridge that you are looking for:
$ ldd /usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstogg.so | grep ogg
libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007fc3f9ae7000)

Real-time Video capturing c++ lib

Can you advice me any lib, which can help me to capture rtsp stream from ip camers. I have already used ffmpeg and openCV for this task, but ffmpeg has problems with working with AXIS IP-cameras, and openCV can't give me compressed data befor decompressing it (but i have to keep them cmpressed in archive). I develop on windows and Qt, if there are some ready binary lib files, it will be great, becouse, lots of libs if so complicated to build. Thank you for help!
Try your hand with the Red5 server.You will get what you want.Cheers
Read more at: http://red5wiki.com/wiki/SteamStream

Qt, Phonon and multimedia codecs: how to bundle them?

I am developing a multiplatform (Windows, Linux and Mac) Qt based Phonon C++ application and am aware that Phonon itself is only API, which relies on a backend to interact with installed codecs.
Logically, I should assume that the end user has no extra codecs installed, only those provided by OS.
So my question would be, is it possible to bundle an OGG (preferably) or AAC decoder with my application so that the backend would recognize it and be able to play audio files? What steps in general should I take and where to look for more information on this?
The application itself is not installable, it runs directly form physical media.
Sound Libraries for C++
As far as getting the right libraries for playing sound, it should just be a matter of finding out what libraries are used by Phonon on your system. I know Phonon is a pretty big project and each OS has a different set of drivers for playing media and using Codec, etc. I would suggest looking at Audacity and VLC and checking Google.
Plugins/Libraries and Qt
As far as getting Phonon to work with Qt, I have experience there...
I haven't done a ton of testing with Phonon on every major OS, but I have on a few different versions of Windows.
The deployment of a Qt Application is very straight forward, even with plugins and libraries like Phonon. But figuring it out the first time was a little painful, just because the jargon is a little weird.
My answer is in the context of a Windows Desktop Application with Dynamic Linking to the Qt Libraries, not static.
Here is the directory structure for windows and a short explanation of how dlls are found.
Deploying a Qt Application
Dynamic-Link Library Search Order in Windows
For Mingw on Windows in the Qt SDK there is a folder for its binaries, and in that folder there are the dlls that your application needs to be able to find at runtime (If you are doing Dynamic Linking). I usually put these DLL's in the same folder as the Application EXE that I build in Qt creator and then keep the "Working Directory" or the directory that the EXE is ran from to be the same directory as well.
For the additional plugins/libraries that are for specific media types, like image formats and for phonon, you need to have a specific structure that your application can find it in.
You can make some very specific ones for your application and add them using the functions related to this call.
QStringList QCoreApplication::libraryPaths()
In general mimic the directory structure that you find in the MingW "plugins" folder for the additional dlls you need.
For example, I wanted to be able to show a system tray icon properly. Apparently you need the correct image format engine plugin to show the icon. (qgif4.dll, qico4.dll, and qjpeg4.dll)
Here is were the plugin was located on my developing machine:
"C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats"
Here is where I place it so that it can be found at runtime:
"C:\path\to\my\EXE\imageformats"
or
".\imageformats" (relative to my working directory of my EXE)
What is one of the more annoying things about discovering this information, is that the plugins don't fail in the same way as the main Qt Libraries, so you don't see it broken until you get to the part of your program that is actually attempting to use them.
Generally, you could supply the VLC Phonon backend for Windows. The default DirectX backend is unfortunately quite limited.
On Linux, you can assume that a suitable Phonon backend comes with the OS's Phonon installation. The two backends currently popular are GStreamer and VLC.

How do I use the 7z sdk to extract rar/zip files (C++)?

I'm trying to write a small, cross-platform comic book reader (Qt / C++). I don't care what's already out there, I know there are some.
My problem is that I need to read the comic book formats, which are renamed rar and zip files.
The documentation is very... nonexistent? There's no "hello archive" document anywho.
How can I set this up?
If It makes it easier to assume I'm on any particular OS, do so. I'm switching between Kubuntu, OSX, and Win7 constantly for dev work.
I've been working on a simple C++ wrapper for the 7zip SDK, which you can find here. It currently only supports Windows and the specific needs I had, but I'd be happy to make some alterations and/or accept contributions. It can extract 7zip and Zip files in a few lines of code, using the 7z.dll. RAR shouldn't be difficult to add since the DLL supports it.
7z should actually come with both source for a commandline variant and a GUI variant, you could dig into to those and see how they do the compression, else you could use unRar and see if that has any examples(unfortunatly I can't check due to the download being blocked where I am).
Poking around the LMZA SDK a bit I came across this:
ANSI-C LZMA Decoder
~~~~~~~~~~~~~~~~~~~
Please note that interfaces for ANSI-C
code were changed in LZMA SDK 4.58. If
you want to use old interfaces you can
download previous version of LZMA SDK
from sourceforge.net site.
To use ANSI-C LZMA Decoder you need
the following files:
1) LzmaDec.h + LzmaDec.c + Types.h
LzmaUtil/LzmaUtil.c is example
application that uses these files.